protoc 2.6.1.1 → 2.6.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (479) hide show
  1. checksums.yaml +4 -4
  2. data/ext/protoc/Makefile.in +10 -13
  3. data/ext/protoc/extconf.rb +0 -1
  4. data/ext/protoc/protobuf/CHANGES.txt +593 -0
  5. data/ext/protoc/protobuf/CONTRIBUTORS.txt +93 -0
  6. data/ext/protoc/protobuf/INSTALL.txt +237 -0
  7. data/ext/protoc/protobuf/LICENSE +33 -0
  8. data/ext/protoc/protobuf/Makefile.am +267 -0
  9. data/ext/protoc/protobuf/README.md +167 -0
  10. data/ext/protoc/protobuf/autogen.sh +41 -0
  11. data/ext/protoc/protobuf/benchmarks/ProtoBench.java +203 -0
  12. data/ext/protoc/protobuf/benchmarks/google_message1.dat +0 -0
  13. data/ext/protoc/protobuf/benchmarks/google_message2.dat +0 -0
  14. data/ext/protoc/protobuf/benchmarks/google_size.proto +136 -0
  15. data/ext/protoc/protobuf/benchmarks/google_speed.proto +136 -0
  16. data/ext/protoc/protobuf/benchmarks/readme.txt +50 -0
  17. data/ext/protoc/protobuf/configure.ac +159 -0
  18. data/ext/protoc/protobuf/editors/README.txt +5 -0
  19. data/ext/protoc/protobuf/editors/proto.vim +105 -0
  20. data/ext/protoc/protobuf/editors/protobuf-mode.el +220 -0
  21. data/ext/protoc/protobuf/examples/AddPerson.java +95 -0
  22. data/ext/protoc/protobuf/examples/ListPeople.java +50 -0
  23. data/ext/protoc/protobuf/examples/Makefile +58 -0
  24. data/ext/protoc/protobuf/examples/README.txt +29 -0
  25. data/ext/protoc/protobuf/examples/add_person.cc +95 -0
  26. data/ext/protoc/protobuf/examples/add_person.py +58 -0
  27. data/ext/protoc/protobuf/examples/addressbook.proto +30 -0
  28. data/ext/protoc/protobuf/examples/list_people.cc +68 -0
  29. data/ext/protoc/protobuf/examples/list_people.py +38 -0
  30. data/ext/protoc/protobuf/generate_descriptor_proto.sh +33 -0
  31. data/ext/protoc/protobuf/java/README.txt +96 -0
  32. data/ext/protoc/protobuf/java/pom.xml +217 -0
  33. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/AbstractMessage.java +466 -0
  34. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/AbstractMessageLite.java +355 -0
  35. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/AbstractParser.java +253 -0
  36. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java +51 -0
  37. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/BlockingService.java +64 -0
  38. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/BoundedByteString.java +163 -0
  39. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ByteString.java +1022 -0
  40. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/CodedInputStream.java +1311 -0
  41. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/CodedOutputStream.java +1297 -0
  42. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Descriptors.java +2238 -0
  43. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/DynamicMessage.java +622 -0
  44. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Extension.java +96 -0
  45. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ExtensionRegistry.java +392 -0
  46. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java +185 -0
  47. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/FieldSet.java +907 -0
  48. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/GeneratedMessage.java +2213 -0
  49. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java +949 -0
  50. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Internal.java +391 -0
  51. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java +122 -0
  52. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyField.java +154 -0
  53. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyFieldLite.java +176 -0
  54. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyStringArrayList.java +367 -0
  55. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyStringList.java +163 -0
  56. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LiteralByteString.java +362 -0
  57. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Message.java +244 -0
  58. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageLite.java +320 -0
  59. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java +60 -0
  60. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageOrBuilder.java +143 -0
  61. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageReflection.java +931 -0
  62. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Parser.java +261 -0
  63. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java +58 -0
  64. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ProtocolStringList.java +48 -0
  65. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java +696 -0
  66. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RopeByteString.java +957 -0
  67. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcCallback.java +47 -0
  68. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcChannel.java +71 -0
  69. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcController.java +118 -0
  70. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcUtil.java +134 -0
  71. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Service.java +117 -0
  72. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ServiceException.java +52 -0
  73. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java +241 -0
  74. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/SmallSortedMap.java +618 -0
  75. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/TextFormat.java +1984 -0
  76. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/UninitializedMessageException.java +99 -0
  77. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/UnknownFieldSet.java +995 -0
  78. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java +205 -0
  79. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Utf8.java +349 -0
  80. data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/WireFormat.java +163 -0
  81. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/AbstractMessageTest.java +527 -0
  82. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java +68 -0
  83. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ByteStringTest.java +759 -0
  84. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/CheckUtf8Test.java +141 -0
  85. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java +769 -0
  86. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java +401 -0
  87. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java +80 -0
  88. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/DescriptorsTest.java +735 -0
  89. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/DynamicMessageTest.java +326 -0
  90. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java +48 -0
  91. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java +1515 -0
  92. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java +180 -0
  93. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java +421 -0
  94. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java +134 -0
  95. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyFieldTest.java +121 -0
  96. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java +319 -0
  97. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java +174 -0
  98. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java +143 -0
  99. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java +85 -0
  100. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LiteTest.java +148 -0
  101. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java +396 -0
  102. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/MessageTest.java +353 -0
  103. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/NestedBuildersTest.java +185 -0
  104. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ParserTest.java +381 -0
  105. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java +190 -0
  106. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java +97 -0
  107. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/RopeByteStringTest.java +115 -0
  108. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ServiceTest.java +320 -0
  109. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java +155 -0
  110. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java +420 -0
  111. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java +96 -0
  112. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/TestUtil.java +4124 -0
  113. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/TextFormatTest.java +994 -0
  114. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java +653 -0
  115. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java +227 -0
  116. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/WireFormatTest.java +606 -0
  117. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/lazy_fields_lite.proto +61 -0
  118. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto +55 -0
  119. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/multiple_files_test.proto +77 -0
  120. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/nested_builders_test.proto +53 -0
  121. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/nested_extension.proto +46 -0
  122. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/nested_extension_lite.proto +48 -0
  123. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/non_nested_extension.proto +49 -0
  124. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto +50 -0
  125. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/outer_class_name_test.proto +38 -0
  126. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/outer_class_name_test2.proto +42 -0
  127. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/outer_class_name_test3.proto +43 -0
  128. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto +157 -0
  129. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_check_utf8.proto +50 -0
  130. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_check_utf8_size.proto +51 -0
  131. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_custom_options.proto +43 -0
  132. data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_extra_interfaces.proto +60 -0
  133. data/ext/protoc/protobuf/m4/ac_system_extensions.m4 +37 -0
  134. data/ext/protoc/protobuf/m4/acx_check_suncc.m4 +75 -0
  135. data/ext/protoc/protobuf/m4/acx_pthread.m4 +397 -0
  136. data/ext/protoc/protobuf/m4/stl_hash.m4 +72 -0
  137. data/ext/protoc/protobuf/more_tests/Makefile +41 -0
  138. data/ext/protoc/protobuf/post_process_dist.sh +60 -0
  139. data/ext/protoc/protobuf/protobuf-lite.pc.in +13 -0
  140. data/ext/protoc/protobuf/protobuf.pc.in +14 -0
  141. data/ext/protoc/protobuf/python/README.txt +105 -0
  142. data/ext/protoc/protobuf/python/ez_setup.py +284 -0
  143. data/ext/protoc/protobuf/python/google/__init__.py +1 -0
  144. data/ext/protoc/protobuf/python/google/protobuf/__init__.py +0 -0
  145. data/ext/protoc/protobuf/python/google/protobuf/descriptor.py +849 -0
  146. data/ext/protoc/protobuf/python/google/protobuf/descriptor_database.py +137 -0
  147. data/ext/protoc/protobuf/python/google/protobuf/descriptor_pool.py +643 -0
  148. data/ext/protoc/protobuf/python/google/protobuf/internal/__init__.py +0 -0
  149. data/ext/protoc/protobuf/python/google/protobuf/internal/api_implementation.cc +139 -0
  150. data/ext/protoc/protobuf/python/google/protobuf/internal/api_implementation.py +89 -0
  151. data/ext/protoc/protobuf/python/google/protobuf/internal/api_implementation_default_test.py +63 -0
  152. data/ext/protoc/protobuf/python/google/protobuf/internal/containers.py +269 -0
  153. data/ext/protoc/protobuf/python/google/protobuf/internal/cpp_message.py +663 -0
  154. data/ext/protoc/protobuf/python/google/protobuf/internal/decoder.py +831 -0
  155. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_database_test.py +63 -0
  156. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_pool_test.py +564 -0
  157. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_pool_test1.proto +94 -0
  158. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_pool_test2.proto +70 -0
  159. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_python_test.py +54 -0
  160. data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_test.py +669 -0
  161. data/ext/protoc/protobuf/python/google/protobuf/internal/encoder.py +788 -0
  162. data/ext/protoc/protobuf/python/google/protobuf/internal/enum_type_wrapper.py +89 -0
  163. data/ext/protoc/protobuf/python/google/protobuf/internal/factory_test1.proto +57 -0
  164. data/ext/protoc/protobuf/python/google/protobuf/internal/factory_test2.proto +92 -0
  165. data/ext/protoc/protobuf/python/google/protobuf/internal/generator_test.py +343 -0
  166. data/ext/protoc/protobuf/python/google/protobuf/internal/message_factory_python_test.py +54 -0
  167. data/ext/protoc/protobuf/python/google/protobuf/internal/message_factory_test.py +131 -0
  168. data/ext/protoc/protobuf/python/google/protobuf/internal/message_listener.py +78 -0
  169. data/ext/protoc/protobuf/python/google/protobuf/internal/message_python_test.py +54 -0
  170. data/ext/protoc/protobuf/python/google/protobuf/internal/message_test.py +681 -0
  171. data/ext/protoc/protobuf/python/google/protobuf/internal/missing_enum_values.proto +50 -0
  172. data/ext/protoc/protobuf/python/google/protobuf/internal/more_extensions.proto +58 -0
  173. data/ext/protoc/protobuf/python/google/protobuf/internal/more_extensions_dynamic.proto +49 -0
  174. data/ext/protoc/protobuf/python/google/protobuf/internal/more_messages.proto +51 -0
  175. data/ext/protoc/protobuf/python/google/protobuf/internal/python_message.py +1251 -0
  176. data/ext/protoc/protobuf/python/google/protobuf/internal/reflection_test.py +2934 -0
  177. data/ext/protoc/protobuf/python/google/protobuf/internal/service_reflection_test.py +136 -0
  178. data/ext/protoc/protobuf/python/google/protobuf/internal/symbol_database_test.py +120 -0
  179. data/ext/protoc/protobuf/python/google/protobuf/internal/test_bad_identifiers.proto +52 -0
  180. data/ext/protoc/protobuf/python/google/protobuf/internal/test_util.py +662 -0
  181. data/ext/protoc/protobuf/python/google/protobuf/internal/text_encoding_test.py +68 -0
  182. data/ext/protoc/protobuf/python/google/protobuf/internal/text_format_test.py +743 -0
  183. data/ext/protoc/protobuf/python/google/protobuf/internal/type_checkers.py +328 -0
  184. data/ext/protoc/protobuf/python/google/protobuf/internal/unknown_fields_test.py +231 -0
  185. data/ext/protoc/protobuf/python/google/protobuf/internal/wire_format.py +268 -0
  186. data/ext/protoc/protobuf/python/google/protobuf/internal/wire_format_test.py +253 -0
  187. data/ext/protoc/protobuf/python/google/protobuf/message.py +284 -0
  188. data/ext/protoc/protobuf/python/google/protobuf/message_factory.py +155 -0
  189. data/ext/protoc/protobuf/python/google/protobuf/pyext/README +6 -0
  190. data/ext/protoc/protobuf/python/google/protobuf/pyext/__init__.py +0 -0
  191. data/ext/protoc/protobuf/python/google/protobuf/pyext/cpp_message.py +61 -0
  192. data/ext/protoc/protobuf/python/google/protobuf/pyext/descriptor.cc +357 -0
  193. data/ext/protoc/protobuf/python/google/protobuf/pyext/descriptor.h +96 -0
  194. data/ext/protoc/protobuf/python/google/protobuf/pyext/descriptor_cpp2_test.py +58 -0
  195. data/ext/protoc/protobuf/python/google/protobuf/pyext/extension_dict.cc +338 -0
  196. data/ext/protoc/protobuf/python/google/protobuf/pyext/extension_dict.h +123 -0
  197. data/ext/protoc/protobuf/python/google/protobuf/pyext/message.cc +2561 -0
  198. data/ext/protoc/protobuf/python/google/protobuf/pyext/message.h +305 -0
  199. data/ext/protoc/protobuf/python/google/protobuf/pyext/message_factory_cpp2_test.py +56 -0
  200. data/ext/protoc/protobuf/python/google/protobuf/pyext/proto2_api_test.proto +38 -0
  201. data/ext/protoc/protobuf/python/google/protobuf/pyext/python.proto +66 -0
  202. data/ext/protoc/protobuf/python/google/protobuf/pyext/python_protobuf.h +57 -0
  203. data/ext/protoc/protobuf/python/google/protobuf/pyext/reflection_cpp2_generated_test.py +94 -0
  204. data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc +763 -0
  205. data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_composite_container.h +172 -0
  206. data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_scalar_container.cc +825 -0
  207. data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_scalar_container.h +112 -0
  208. data/ext/protoc/protobuf/python/google/protobuf/pyext/scoped_pyobject_ptr.h +95 -0
  209. data/ext/protoc/protobuf/python/google/protobuf/reflection.py +205 -0
  210. data/ext/protoc/protobuf/python/google/protobuf/service.py +226 -0
  211. data/ext/protoc/protobuf/python/google/protobuf/service_reflection.py +284 -0
  212. data/ext/protoc/protobuf/python/google/protobuf/symbol_database.py +185 -0
  213. data/ext/protoc/protobuf/python/google/protobuf/text_encoding.py +110 -0
  214. data/ext/protoc/protobuf/python/google/protobuf/text_format.py +873 -0
  215. data/ext/protoc/protobuf/python/mox.py +1401 -0
  216. data/ext/protoc/protobuf/python/setup.py +201 -0
  217. data/ext/protoc/protobuf/python/stubout.py +140 -0
  218. data/ext/protoc/protobuf/src/Makefile.am +418 -0
  219. data/ext/protoc/protobuf/src/google/protobuf/SEBS +240 -0
  220. data/ext/protoc/protobuf/src/google/protobuf/compiler/code_generator.cc +84 -0
  221. data/ext/protoc/protobuf/src/google/protobuf/compiler/code_generator.h +145 -0
  222. data/ext/protoc/protobuf/src/google/protobuf/compiler/command_line_interface.cc +1603 -0
  223. data/ext/protoc/protobuf/src/google/protobuf/compiler/command_line_interface.h +378 -0
  224. data/ext/protoc/protobuf/src/google/protobuf/compiler/command_line_interface_unittest.cc +1654 -0
  225. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc +158 -0
  226. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum.cc +288 -0
  227. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum.h +103 -0
  228. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.cc +431 -0
  229. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.h +122 -0
  230. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_extension.cc +210 -0
  231. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_extension.h +86 -0
  232. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_field.cc +166 -0
  233. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_field.h +185 -0
  234. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_file.cc +665 -0
  235. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_file.h +99 -0
  236. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_generator.cc +125 -0
  237. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_generator.h +72 -0
  238. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.cc +494 -0
  239. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.h +206 -0
  240. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message.cc +2645 -0
  241. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message.h +175 -0
  242. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.cc +375 -0
  243. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.h +121 -0
  244. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_options.h +58 -0
  245. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc +123 -0
  246. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc +451 -0
  247. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.h +123 -0
  248. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc +334 -0
  249. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_service.h +118 -0
  250. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.cc +642 -0
  251. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.h +127 -0
  252. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto +132 -0
  253. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_unittest.cc +2074 -0
  254. data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_unittest.h +51 -0
  255. data/ext/protoc/protobuf/src/google/protobuf/compiler/importer.cc +480 -0
  256. data/ext/protoc/protobuf/src/google/protobuf/compiler/importer.h +317 -0
  257. data/ext/protoc/protobuf/src/google/protobuf/compiler/importer_unittest.cc +617 -0
  258. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_context.cc +195 -0
  259. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_context.h +95 -0
  260. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_doc_comment.cc +233 -0
  261. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_doc_comment.h +69 -0
  262. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc +67 -0
  263. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum.cc +333 -0
  264. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum.h +99 -0
  265. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum_field.cc +778 -0
  266. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum_field.h +158 -0
  267. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_extension.cc +207 -0
  268. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_extension.h +109 -0
  269. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_field.cc +213 -0
  270. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_field.h +162 -0
  271. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_file.cc +534 -0
  272. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_file.h +115 -0
  273. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator.cc +158 -0
  274. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator.h +72 -0
  275. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator_factory.cc +77 -0
  276. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator_factory.h +101 -0
  277. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_helpers.cc +737 -0
  278. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_helpers.h +322 -0
  279. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_lazy_message_field.cc +826 -0
  280. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_lazy_message_field.h +121 -0
  281. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message.cc +1666 -0
  282. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message.h +140 -0
  283. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message_field.cc +1343 -0
  284. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message_field.h +173 -0
  285. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_name_resolver.cc +266 -0
  286. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_name_resolver.h +124 -0
  287. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_plugin_unittest.cc +124 -0
  288. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_primitive_field.cc +877 -0
  289. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_primitive_field.h +160 -0
  290. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_service.cc +473 -0
  291. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_service.h +135 -0
  292. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_shared_code_generator.cc +201 -0
  293. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_shared_code_generator.h +90 -0
  294. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_string_field.cc +1056 -0
  295. data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_string_field.h +160 -0
  296. data/ext/protoc/protobuf/src/google/protobuf/compiler/main.cc +61 -0
  297. data/ext/protoc/protobuf/src/google/protobuf/compiler/mock_code_generator.cc +240 -0
  298. data/ext/protoc/protobuf/src/google/protobuf/compiler/mock_code_generator.h +117 -0
  299. data/ext/protoc/protobuf/src/google/protobuf/compiler/package_info.h +64 -0
  300. data/ext/protoc/protobuf/src/google/protobuf/compiler/parser.cc +1750 -0
  301. data/ext/protoc/protobuf/src/google/protobuf/compiler/parser.h +522 -0
  302. data/ext/protoc/protobuf/src/google/protobuf/compiler/parser_unittest.cc +2612 -0
  303. data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.cc +163 -0
  304. data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.h +72 -0
  305. data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.pb.cc +1148 -0
  306. data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.pb.h +897 -0
  307. data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.proto +147 -0
  308. data/ext/protoc/protobuf/src/google/protobuf/compiler/python/python_generator.cc +1262 -0
  309. data/ext/protoc/protobuf/src/google/protobuf/compiler/python/python_generator.h +166 -0
  310. data/ext/protoc/protobuf/src/google/protobuf/compiler/python/python_plugin_unittest.cc +118 -0
  311. data/ext/protoc/protobuf/src/google/protobuf/compiler/subprocess.cc +463 -0
  312. data/ext/protoc/protobuf/src/google/protobuf/compiler/subprocess.h +108 -0
  313. data/ext/protoc/protobuf/src/google/protobuf/compiler/test_plugin.cc +51 -0
  314. data/ext/protoc/protobuf/src/google/protobuf/compiler/zip_output_unittest.sh +91 -0
  315. data/ext/protoc/protobuf/src/google/protobuf/compiler/zip_writer.cc +218 -0
  316. data/ext/protoc/protobuf/src/google/protobuf/compiler/zip_writer.h +93 -0
  317. data/ext/protoc/protobuf/src/google/protobuf/descriptor.cc +5420 -0
  318. data/ext/protoc/protobuf/src/google/protobuf/descriptor.h +1691 -0
  319. data/ext/protoc/protobuf/src/google/protobuf/descriptor.pb.cc +9135 -0
  320. data/ext/protoc/protobuf/src/google/protobuf/descriptor.pb.h +6761 -0
  321. data/ext/protoc/protobuf/src/google/protobuf/descriptor.proto +687 -0
  322. data/ext/protoc/protobuf/src/google/protobuf/descriptor_database.cc +543 -0
  323. data/ext/protoc/protobuf/src/google/protobuf/descriptor_database.h +369 -0
  324. data/ext/protoc/protobuf/src/google/protobuf/descriptor_database_unittest.cc +748 -0
  325. data/ext/protoc/protobuf/src/google/protobuf/descriptor_pb2_test.py +54 -0
  326. data/ext/protoc/protobuf/src/google/protobuf/descriptor_unittest.cc +5501 -0
  327. data/ext/protoc/protobuf/src/google/protobuf/dynamic_message.cc +764 -0
  328. data/ext/protoc/protobuf/src/google/protobuf/dynamic_message.h +148 -0
  329. data/ext/protoc/protobuf/src/google/protobuf/dynamic_message_unittest.cc +230 -0
  330. data/ext/protoc/protobuf/src/google/protobuf/extension_set.cc +1663 -0
  331. data/ext/protoc/protobuf/src/google/protobuf/extension_set.h +1234 -0
  332. data/ext/protoc/protobuf/src/google/protobuf/extension_set_heavy.cc +734 -0
  333. data/ext/protoc/protobuf/src/google/protobuf/extension_set_unittest.cc +1095 -0
  334. data/ext/protoc/protobuf/src/google/protobuf/generated_enum_reflection.h +91 -0
  335. data/ext/protoc/protobuf/src/google/protobuf/generated_message_reflection.cc +1683 -0
  336. data/ext/protoc/protobuf/src/google/protobuf/generated_message_reflection.h +504 -0
  337. data/ext/protoc/protobuf/src/google/protobuf/generated_message_reflection_unittest.cc +795 -0
  338. data/ext/protoc/protobuf/src/google/protobuf/generated_message_util.cc +65 -0
  339. data/ext/protoc/protobuf/src/google/protobuf/generated_message_util.h +113 -0
  340. data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream.cc +914 -0
  341. data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream.h +1220 -0
  342. data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream_inl.h +69 -0
  343. data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream_unittest.cc +1378 -0
  344. data/ext/protoc/protobuf/src/google/protobuf/io/gzip_stream.cc +326 -0
  345. data/ext/protoc/protobuf/src/google/protobuf/io/gzip_stream.h +209 -0
  346. data/ext/protoc/protobuf/src/google/protobuf/io/gzip_stream_unittest.sh +44 -0
  347. data/ext/protoc/protobuf/src/google/protobuf/io/package_info.h +54 -0
  348. data/ext/protoc/protobuf/src/google/protobuf/io/printer.cc +198 -0
  349. data/ext/protoc/protobuf/src/google/protobuf/io/printer.h +136 -0
  350. data/ext/protoc/protobuf/src/google/protobuf/io/printer_unittest.cc +285 -0
  351. data/ext/protoc/protobuf/src/google/protobuf/io/strtod.cc +113 -0
  352. data/ext/protoc/protobuf/src/google/protobuf/io/strtod.h +50 -0
  353. data/ext/protoc/protobuf/src/google/protobuf/io/tokenizer.cc +1127 -0
  354. data/ext/protoc/protobuf/src/google/protobuf/io/tokenizer.h +402 -0
  355. data/ext/protoc/protobuf/src/google/protobuf/io/tokenizer_unittest.cc +999 -0
  356. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream.cc +57 -0
  357. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream.h +248 -0
  358. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc +473 -0
  359. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h +358 -0
  360. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc +405 -0
  361. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h +354 -0
  362. data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_unittest.cc +965 -0
  363. data/ext/protoc/protobuf/src/google/protobuf/lite_unittest.cc +350 -0
  364. data/ext/protoc/protobuf/src/google/protobuf/message.cc +358 -0
  365. data/ext/protoc/protobuf/src/google/protobuf/message.h +866 -0
  366. data/ext/protoc/protobuf/src/google/protobuf/message_lite.cc +335 -0
  367. data/ext/protoc/protobuf/src/google/protobuf/message_lite.h +247 -0
  368. data/ext/protoc/protobuf/src/google/protobuf/message_unittest.cc +427 -0
  369. data/ext/protoc/protobuf/src/google/protobuf/package_info.h +64 -0
  370. data/ext/protoc/protobuf/src/google/protobuf/reflection_ops.cc +269 -0
  371. data/ext/protoc/protobuf/src/google/protobuf/reflection_ops.h +81 -0
  372. data/ext/protoc/protobuf/src/google/protobuf/reflection_ops_unittest.cc +475 -0
  373. data/ext/protoc/protobuf/src/google/protobuf/repeated_field.cc +87 -0
  374. data/ext/protoc/protobuf/src/google/protobuf/repeated_field.h +1603 -0
  375. data/ext/protoc/protobuf/src/google/protobuf/repeated_field_reflection_unittest.cc +195 -0
  376. data/ext/protoc/protobuf/src/google/protobuf/repeated_field_unittest.cc +1442 -0
  377. data/ext/protoc/protobuf/src/google/protobuf/service.cc +46 -0
  378. data/ext/protoc/protobuf/src/google/protobuf/service.h +291 -0
  379. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops.h +227 -0
  380. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_arm64_gcc.h +325 -0
  381. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h +151 -0
  382. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_arm_qnx.h +146 -0
  383. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h +122 -0
  384. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h +137 -0
  385. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_macosx.h +225 -0
  386. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h +313 -0
  387. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_pnacl.h +73 -0
  388. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_solaris.h +188 -0
  389. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_tsan.h +219 -0
  390. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc +137 -0
  391. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h +293 -0
  392. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc +112 -0
  393. data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h +150 -0
  394. data/ext/protoc/protobuf/src/google/protobuf/stubs/common.cc +395 -0
  395. data/ext/protoc/protobuf/src/google/protobuf/stubs/common.h +1226 -0
  396. data/ext/protoc/protobuf/src/google/protobuf/stubs/common_unittest.cc +357 -0
  397. data/ext/protoc/protobuf/src/google/protobuf/stubs/hash.h +232 -0
  398. data/ext/protoc/protobuf/src/google/protobuf/stubs/map_util.h +771 -0
  399. data/ext/protoc/protobuf/src/google/protobuf/stubs/once.cc +99 -0
  400. data/ext/protoc/protobuf/src/google/protobuf/stubs/once.h +166 -0
  401. data/ext/protoc/protobuf/src/google/protobuf/stubs/once_unittest.cc +253 -0
  402. data/ext/protoc/protobuf/src/google/protobuf/stubs/platform_macros.h +103 -0
  403. data/ext/protoc/protobuf/src/google/protobuf/stubs/shared_ptr.h +470 -0
  404. data/ext/protoc/protobuf/src/google/protobuf/stubs/stl_util.h +121 -0
  405. data/ext/protoc/protobuf/src/google/protobuf/stubs/stringprintf.cc +175 -0
  406. data/ext/protoc/protobuf/src/google/protobuf/stubs/stringprintf.h +76 -0
  407. data/ext/protoc/protobuf/src/google/protobuf/stubs/stringprintf_unittest.cc +152 -0
  408. data/ext/protoc/protobuf/src/google/protobuf/stubs/structurally_valid.cc +536 -0
  409. data/ext/protoc/protobuf/src/google/protobuf/stubs/structurally_valid_unittest.cc +40 -0
  410. data/ext/protoc/protobuf/src/google/protobuf/stubs/strutil.cc +1279 -0
  411. data/ext/protoc/protobuf/src/google/protobuf/stubs/strutil.h +562 -0
  412. data/ext/protoc/protobuf/src/google/protobuf/stubs/strutil_unittest.cc +73 -0
  413. data/ext/protoc/protobuf/src/google/protobuf/stubs/substitute.cc +134 -0
  414. data/ext/protoc/protobuf/src/google/protobuf/stubs/substitute.h +170 -0
  415. data/ext/protoc/protobuf/src/google/protobuf/stubs/template_util.h +138 -0
  416. data/ext/protoc/protobuf/src/google/protobuf/stubs/template_util_unittest.cc +130 -0
  417. data/ext/protoc/protobuf/src/google/protobuf/stubs/type_traits.h +336 -0
  418. data/ext/protoc/protobuf/src/google/protobuf/stubs/type_traits_unittest.cc +628 -0
  419. data/ext/protoc/protobuf/src/google/protobuf/test_util.cc +3345 -0
  420. data/ext/protoc/protobuf/src/google/protobuf/test_util.h +215 -0
  421. data/ext/protoc/protobuf/src/google/protobuf/test_util_lite.cc +1585 -0
  422. data/ext/protoc/protobuf/src/google/protobuf/test_util_lite.h +101 -0
  423. data/ext/protoc/protobuf/src/google/protobuf/testdata/bad_utf8_string +1 -0
  424. data/ext/protoc/protobuf/src/google/protobuf/testdata/golden_message +0 -0
  425. data/ext/protoc/protobuf/src/google/protobuf/testdata/golden_message_oneof_implemented +0 -0
  426. data/ext/protoc/protobuf/src/google/protobuf/testdata/golden_packed_fields_message +0 -0
  427. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data.txt +134 -0
  428. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data_oneof_implemented.txt +129 -0
  429. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data_pointy.txt +134 -0
  430. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data_pointy_oneof.txt +129 -0
  431. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_extensions_data.txt +134 -0
  432. data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_extensions_data_pointy.txt +134 -0
  433. data/ext/protoc/protobuf/src/google/protobuf/testing/file.cc +194 -0
  434. data/ext/protoc/protobuf/src/google/protobuf/testing/file.h +97 -0
  435. data/ext/protoc/protobuf/src/google/protobuf/testing/googletest.cc +255 -0
  436. data/ext/protoc/protobuf/src/google/protobuf/testing/googletest.h +102 -0
  437. data/ext/protoc/protobuf/src/google/protobuf/testing/zcgunzip.cc +73 -0
  438. data/ext/protoc/protobuf/src/google/protobuf/testing/zcgzip.cc +79 -0
  439. data/ext/protoc/protobuf/src/google/protobuf/text_format.cc +1746 -0
  440. data/ext/protoc/protobuf/src/google/protobuf/text_format.h +473 -0
  441. data/ext/protoc/protobuf/src/google/protobuf/text_format_unittest.cc +1479 -0
  442. data/ext/protoc/protobuf/src/google/protobuf/unittest.proto +861 -0
  443. data/ext/protoc/protobuf/src/google/protobuf/unittest_custom_options.proto +393 -0
  444. data/ext/protoc/protobuf/src/google/protobuf/unittest_embed_optimize_for.proto +50 -0
  445. data/ext/protoc/protobuf/src/google/protobuf/unittest_empty.proto +37 -0
  446. data/ext/protoc/protobuf/src/google/protobuf/unittest_enormous_descriptor.proto +1046 -0
  447. data/ext/protoc/protobuf/src/google/protobuf/unittest_import.proto +64 -0
  448. data/ext/protoc/protobuf/src/google/protobuf/unittest_import_lite.proto +51 -0
  449. data/ext/protoc/protobuf/src/google/protobuf/unittest_import_public.proto +40 -0
  450. data/ext/protoc/protobuf/src/google/protobuf/unittest_import_public_lite.proto +42 -0
  451. data/ext/protoc/protobuf/src/google/protobuf/unittest_lite.proto +384 -0
  452. data/ext/protoc/protobuf/src/google/protobuf/unittest_lite_imports_nonlite.proto +43 -0
  453. data/ext/protoc/protobuf/src/google/protobuf/unittest_mset.proto +83 -0
  454. data/ext/protoc/protobuf/src/google/protobuf/unittest_no_generic_services.proto +53 -0
  455. data/ext/protoc/protobuf/src/google/protobuf/unittest_optimize_for.proto +66 -0
  456. data/ext/protoc/protobuf/src/google/protobuf/unknown_field_set.cc +265 -0
  457. data/ext/protoc/protobuf/src/google/protobuf/unknown_field_set.h +318 -0
  458. data/ext/protoc/protobuf/src/google/protobuf/unknown_field_set_unittest.cc +599 -0
  459. data/ext/protoc/protobuf/src/google/protobuf/wire_format.cc +1101 -0
  460. data/ext/protoc/protobuf/src/google/protobuf/wire_format.h +336 -0
  461. data/ext/protoc/protobuf/src/google/protobuf/wire_format_lite.cc +471 -0
  462. data/ext/protoc/protobuf/src/google/protobuf/wire_format_lite.h +661 -0
  463. data/ext/protoc/protobuf/src/google/protobuf/wire_format_lite_inl.h +860 -0
  464. data/ext/protoc/protobuf/src/google/protobuf/wire_format_unittest.cc +1120 -0
  465. data/ext/protoc/protobuf/src/solaris/libstdc++.la +51 -0
  466. data/ext/protoc/protobuf/vsprojects/config.h +29 -0
  467. data/ext/protoc/protobuf/vsprojects/convert2008to2005.sh +20 -0
  468. data/ext/protoc/protobuf/vsprojects/extract_includes.bat +50 -0
  469. data/ext/protoc/protobuf/vsprojects/libprotobuf-lite.vcproj +302 -0
  470. data/ext/protoc/protobuf/vsprojects/libprotobuf.vcproj +470 -0
  471. data/ext/protoc/protobuf/vsprojects/libprotoc.vcproj +466 -0
  472. data/ext/protoc/protobuf/vsprojects/lite-test.vcproj +305 -0
  473. data/ext/protoc/protobuf/vsprojects/protobuf.sln +92 -0
  474. data/ext/protoc/protobuf/vsprojects/protoc.vcproj +192 -0
  475. data/ext/protoc/protobuf/vsprojects/readme.txt +114 -0
  476. data/ext/protoc/protobuf/vsprojects/test_plugin.vcproj +209 -0
  477. data/ext/protoc/protobuf/vsprojects/tests.vcproj +681 -0
  478. data/lib/protoc/version.rb +1 -1
  479. metadata +480 -3
@@ -0,0 +1,185 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ package com.google.protobuf;
32
+
33
+ import java.util.Collections;
34
+ import java.util.HashMap;
35
+ import java.util.Map;
36
+
37
+ /**
38
+ * Equivalent to {@link ExtensionRegistry} but supports only "lite" types.
39
+ * <p>
40
+ * If all of your types are lite types, then you only need to use
41
+ * {@code ExtensionRegistryLite}. Similarly, if all your types are regular
42
+ * types, then you only need {@link ExtensionRegistry}. Typically it does not
43
+ * make sense to mix the two, since if you have any regular types in your
44
+ * program, you then require the full runtime and lose all the benefits of
45
+ * the lite runtime, so you might as well make all your types be regular types.
46
+ * However, in some cases (e.g. when depending on multiple third-party libraries
47
+ * where one uses lite types and one uses regular), you may find yourself
48
+ * wanting to mix the two. In this case things get more complicated.
49
+ * <p>
50
+ * There are three factors to consider: Whether the type being extended is
51
+ * lite, whether the embedded type (in the case of a message-typed extension)
52
+ * is lite, and whether the extension itself is lite. Since all three are
53
+ * declared in different files, they could all be different. Here are all
54
+ * the combinations and which type of registry to use:
55
+ * <pre>
56
+ * Extended type Inner type Extension Use registry
57
+ * =======================================================================
58
+ * lite lite lite ExtensionRegistryLite
59
+ * lite regular lite ExtensionRegistry
60
+ * regular regular regular ExtensionRegistry
61
+ * all other combinations not supported
62
+ * </pre>
63
+ * <p>
64
+ * Note that just as regular types are not allowed to contain lite-type fields,
65
+ * they are also not allowed to contain lite-type extensions. This is because
66
+ * regular types must be fully accessible via reflection, which in turn means
67
+ * that all the inner messages must also support reflection. On the other hand,
68
+ * since regular types implement the entire lite interface, there is no problem
69
+ * with embedding regular types inside lite types.
70
+ *
71
+ * @author kenton@google.com Kenton Varda
72
+ */
73
+ public class ExtensionRegistryLite {
74
+
75
+ // Set true to enable lazy parsing feature for MessageSet.
76
+ //
77
+ // TODO(xiangl): Now we use a global flag to control whether enable lazy
78
+ // parsing feature for MessageSet, which may be too crude for some
79
+ // applications. Need to support this feature on smaller granularity.
80
+ private static volatile boolean eagerlyParseMessageSets = false;
81
+
82
+ public static boolean isEagerlyParseMessageSets() {
83
+ return eagerlyParseMessageSets;
84
+ }
85
+
86
+ public static void setEagerlyParseMessageSets(boolean isEagerlyParse) {
87
+ eagerlyParseMessageSets = isEagerlyParse;
88
+ }
89
+
90
+ /** Construct a new, empty instance. */
91
+ public static ExtensionRegistryLite newInstance() {
92
+ return new ExtensionRegistryLite();
93
+ }
94
+
95
+ /** Get the unmodifiable singleton empty instance. */
96
+ public static ExtensionRegistryLite getEmptyRegistry() {
97
+ return EMPTY;
98
+ }
99
+
100
+ /** Returns an unmodifiable view of the registry. */
101
+ public ExtensionRegistryLite getUnmodifiable() {
102
+ return new ExtensionRegistryLite(this);
103
+ }
104
+
105
+ /**
106
+ * Find an extension by containing type and field number.
107
+ *
108
+ * @return Information about the extension if found, or {@code null}
109
+ * otherwise.
110
+ */
111
+ @SuppressWarnings("unchecked")
112
+ public <ContainingType extends MessageLite>
113
+ GeneratedMessageLite.GeneratedExtension<ContainingType, ?>
114
+ findLiteExtensionByNumber(
115
+ final ContainingType containingTypeDefaultInstance,
116
+ final int fieldNumber) {
117
+ return (GeneratedMessageLite.GeneratedExtension<ContainingType, ?>)
118
+ extensionsByNumber.get(
119
+ new ObjectIntPair(containingTypeDefaultInstance, fieldNumber));
120
+ }
121
+
122
+ /** Add an extension from a lite generated file to the registry. */
123
+ public final void add(
124
+ final GeneratedMessageLite.GeneratedExtension<?, ?> extension) {
125
+ extensionsByNumber.put(
126
+ new ObjectIntPair(extension.getContainingTypeDefaultInstance(),
127
+ extension.getNumber()),
128
+ extension);
129
+ }
130
+
131
+ // =================================================================
132
+ // Private stuff.
133
+
134
+ // Constructors are package-private so that ExtensionRegistry can subclass
135
+ // this.
136
+
137
+ ExtensionRegistryLite() {
138
+ this.extensionsByNumber =
139
+ new HashMap<ObjectIntPair,
140
+ GeneratedMessageLite.GeneratedExtension<?, ?>>();
141
+ }
142
+
143
+ ExtensionRegistryLite(ExtensionRegistryLite other) {
144
+ if (other == EMPTY) {
145
+ this.extensionsByNumber = Collections.emptyMap();
146
+ } else {
147
+ this.extensionsByNumber =
148
+ Collections.unmodifiableMap(other.extensionsByNumber);
149
+ }
150
+ }
151
+
152
+ private final Map<ObjectIntPair,
153
+ GeneratedMessageLite.GeneratedExtension<?, ?>>
154
+ extensionsByNumber;
155
+
156
+ private ExtensionRegistryLite(boolean empty) {
157
+ this.extensionsByNumber = Collections.emptyMap();
158
+ }
159
+ private static final ExtensionRegistryLite EMPTY =
160
+ new ExtensionRegistryLite(true);
161
+
162
+ /** A (Object, int) pair, used as a map key. */
163
+ private static final class ObjectIntPair {
164
+ private final Object object;
165
+ private final int number;
166
+
167
+ ObjectIntPair(final Object object, final int number) {
168
+ this.object = object;
169
+ this.number = number;
170
+ }
171
+
172
+ @Override
173
+ public int hashCode() {
174
+ return System.identityHashCode(object) * ((1 << 16) - 1) + number;
175
+ }
176
+ @Override
177
+ public boolean equals(final Object obj) {
178
+ if (!(obj instanceof ObjectIntPair)) {
179
+ return false;
180
+ }
181
+ final ObjectIntPair other = (ObjectIntPair)obj;
182
+ return object == other.object && number == other.number;
183
+ }
184
+ }
185
+ }
@@ -0,0 +1,907 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ package com.google.protobuf;
32
+
33
+ import com.google.protobuf.LazyField.LazyIterator;
34
+
35
+ import java.io.IOException;
36
+ import java.util.ArrayList;
37
+ import java.util.Collections;
38
+ import java.util.Iterator;
39
+ import java.util.List;
40
+ import java.util.Map;
41
+
42
+ /**
43
+ * A class which represents an arbitrary set of fields of some message type.
44
+ * This is used to implement {@link DynamicMessage}, and also to represent
45
+ * extensions in {@link GeneratedMessage}. This class is package-private,
46
+ * since outside users should probably be using {@link DynamicMessage}.
47
+ *
48
+ * @author kenton@google.com Kenton Varda
49
+ */
50
+ final class FieldSet<FieldDescriptorType extends
51
+ FieldSet.FieldDescriptorLite<FieldDescriptorType>> {
52
+ /**
53
+ * Interface for a FieldDescriptor or lite extension descriptor. This
54
+ * prevents FieldSet from depending on {@link Descriptors.FieldDescriptor}.
55
+ */
56
+ public interface FieldDescriptorLite<T extends FieldDescriptorLite<T>>
57
+ extends Comparable<T> {
58
+ int getNumber();
59
+ WireFormat.FieldType getLiteType();
60
+ WireFormat.JavaType getLiteJavaType();
61
+ boolean isRepeated();
62
+ boolean isPacked();
63
+ Internal.EnumLiteMap<?> getEnumType();
64
+
65
+ // If getLiteJavaType() == MESSAGE, this merges a message object of the
66
+ // type into a builder of the type. Returns {@code to}.
67
+ MessageLite.Builder internalMergeFrom(
68
+ MessageLite.Builder to, MessageLite from);
69
+ }
70
+
71
+ private final SmallSortedMap<FieldDescriptorType, Object> fields;
72
+ private boolean isImmutable;
73
+ private boolean hasLazyField = false;
74
+
75
+ /** Construct a new FieldSet. */
76
+ private FieldSet() {
77
+ this.fields = SmallSortedMap.newFieldMap(16);
78
+ }
79
+
80
+ /**
81
+ * Construct an empty FieldSet. This is only used to initialize
82
+ * DEFAULT_INSTANCE.
83
+ */
84
+ private FieldSet(final boolean dummy) {
85
+ this.fields = SmallSortedMap.newFieldMap(0);
86
+ makeImmutable();
87
+ }
88
+
89
+ /** Construct a new FieldSet. */
90
+ public static <T extends FieldSet.FieldDescriptorLite<T>>
91
+ FieldSet<T> newFieldSet() {
92
+ return new FieldSet<T>();
93
+ }
94
+
95
+ /** Get an immutable empty FieldSet. */
96
+ @SuppressWarnings("unchecked")
97
+ public static <T extends FieldSet.FieldDescriptorLite<T>>
98
+ FieldSet<T> emptySet() {
99
+ return DEFAULT_INSTANCE;
100
+ }
101
+ @SuppressWarnings("rawtypes")
102
+ private static final FieldSet DEFAULT_INSTANCE = new FieldSet(true);
103
+
104
+ /** Make this FieldSet immutable from this point forward. */
105
+ @SuppressWarnings("unchecked")
106
+ public void makeImmutable() {
107
+ if (isImmutable) {
108
+ return;
109
+ }
110
+ fields.makeImmutable();
111
+ isImmutable = true;
112
+ }
113
+
114
+ /**
115
+ * Returns whether the FieldSet is immutable. This is true if it is the
116
+ * {@link #emptySet} or if {@link #makeImmutable} were called.
117
+ *
118
+ * @return whether the FieldSet is immutable.
119
+ */
120
+ public boolean isImmutable() {
121
+ return isImmutable;
122
+ }
123
+
124
+ /**
125
+ * Clones the FieldSet. The returned FieldSet will be mutable even if the
126
+ * original FieldSet was immutable.
127
+ *
128
+ * @return the newly cloned FieldSet
129
+ */
130
+ @Override
131
+ public FieldSet<FieldDescriptorType> clone() {
132
+ // We can't just call fields.clone because List objects in the map
133
+ // should not be shared.
134
+ FieldSet<FieldDescriptorType> clone = FieldSet.newFieldSet();
135
+ for (int i = 0; i < fields.getNumArrayEntries(); i++) {
136
+ Map.Entry<FieldDescriptorType, Object> entry = fields.getArrayEntryAt(i);
137
+ FieldDescriptorType descriptor = entry.getKey();
138
+ clone.setField(descriptor, entry.getValue());
139
+ }
140
+ for (Map.Entry<FieldDescriptorType, Object> entry :
141
+ fields.getOverflowEntries()) {
142
+ FieldDescriptorType descriptor = entry.getKey();
143
+ clone.setField(descriptor, entry.getValue());
144
+ }
145
+ clone.hasLazyField = hasLazyField;
146
+ return clone;
147
+ }
148
+
149
+
150
+ // =================================================================
151
+
152
+ /** See {@link Message.Builder#clear()}. */
153
+ public void clear() {
154
+ fields.clear();
155
+ hasLazyField = false;
156
+ }
157
+
158
+ /**
159
+ * Get a simple map containing all the fields.
160
+ */
161
+ public Map<FieldDescriptorType, Object> getAllFields() {
162
+ if (hasLazyField) {
163
+ SmallSortedMap<FieldDescriptorType, Object> result =
164
+ SmallSortedMap.newFieldMap(16);
165
+ for (int i = 0; i < fields.getNumArrayEntries(); i++) {
166
+ cloneFieldEntry(result, fields.getArrayEntryAt(i));
167
+ }
168
+ for (Map.Entry<FieldDescriptorType, Object> entry :
169
+ fields.getOverflowEntries()) {
170
+ cloneFieldEntry(result, entry);
171
+ }
172
+ if (fields.isImmutable()) {
173
+ result.makeImmutable();
174
+ }
175
+ return result;
176
+ }
177
+ return fields.isImmutable() ? fields : Collections.unmodifiableMap(fields);
178
+ }
179
+
180
+ private void cloneFieldEntry(Map<FieldDescriptorType, Object> map,
181
+ Map.Entry<FieldDescriptorType, Object> entry) {
182
+ FieldDescriptorType key = entry.getKey();
183
+ Object value = entry.getValue();
184
+ if (value instanceof LazyField) {
185
+ map.put(key, ((LazyField) value).getValue());
186
+ } else {
187
+ map.put(key, value);
188
+ }
189
+ }
190
+
191
+ /**
192
+ * Get an iterator to the field map. This iterator should not be leaked out
193
+ * of the protobuf library as it is not protected from mutation when fields
194
+ * is not immutable.
195
+ */
196
+ public Iterator<Map.Entry<FieldDescriptorType, Object>> iterator() {
197
+ if (hasLazyField) {
198
+ return new LazyIterator<FieldDescriptorType>(
199
+ fields.entrySet().iterator());
200
+ }
201
+ return fields.entrySet().iterator();
202
+ }
203
+
204
+ /**
205
+ * Useful for implementing
206
+ * {@link Message#hasField(Descriptors.FieldDescriptor)}.
207
+ */
208
+ public boolean hasField(final FieldDescriptorType descriptor) {
209
+ if (descriptor.isRepeated()) {
210
+ throw new IllegalArgumentException(
211
+ "hasField() can only be called on non-repeated fields.");
212
+ }
213
+
214
+ return fields.get(descriptor) != null;
215
+ }
216
+
217
+ /**
218
+ * Useful for implementing
219
+ * {@link Message#getField(Descriptors.FieldDescriptor)}. This method
220
+ * returns {@code null} if the field is not set; in this case it is up
221
+ * to the caller to fetch the field's default value.
222
+ */
223
+ public Object getField(final FieldDescriptorType descriptor) {
224
+ Object o = fields.get(descriptor);
225
+ if (o instanceof LazyField) {
226
+ return ((LazyField) o).getValue();
227
+ }
228
+ return o;
229
+ }
230
+
231
+ /**
232
+ * Useful for implementing
233
+ * {@link Message.Builder#setField(Descriptors.FieldDescriptor,Object)}.
234
+ */
235
+ @SuppressWarnings({"unchecked", "rawtypes"})
236
+ public void setField(final FieldDescriptorType descriptor,
237
+ Object value) {
238
+ if (descriptor.isRepeated()) {
239
+ if (!(value instanceof List)) {
240
+ throw new IllegalArgumentException(
241
+ "Wrong object type used with protocol message reflection.");
242
+ }
243
+
244
+ // Wrap the contents in a new list so that the caller cannot change
245
+ // the list's contents after setting it.
246
+ final List newList = new ArrayList();
247
+ newList.addAll((List) value);
248
+ for (final Object element : newList) {
249
+ verifyType(descriptor.getLiteType(), element);
250
+ }
251
+ value = newList;
252
+ } else {
253
+ verifyType(descriptor.getLiteType(), value);
254
+ }
255
+
256
+ if (value instanceof LazyField) {
257
+ hasLazyField = true;
258
+ }
259
+ fields.put(descriptor, value);
260
+ }
261
+
262
+ /**
263
+ * Useful for implementing
264
+ * {@link Message.Builder#clearField(Descriptors.FieldDescriptor)}.
265
+ */
266
+ public void clearField(final FieldDescriptorType descriptor) {
267
+ fields.remove(descriptor);
268
+ if (fields.isEmpty()) {
269
+ hasLazyField = false;
270
+ }
271
+ }
272
+
273
+ /**
274
+ * Useful for implementing
275
+ * {@link Message#getRepeatedFieldCount(Descriptors.FieldDescriptor)}.
276
+ */
277
+ public int getRepeatedFieldCount(final FieldDescriptorType descriptor) {
278
+ if (!descriptor.isRepeated()) {
279
+ throw new IllegalArgumentException(
280
+ "getRepeatedField() can only be called on repeated fields.");
281
+ }
282
+
283
+ final Object value = getField(descriptor);
284
+ if (value == null) {
285
+ return 0;
286
+ } else {
287
+ return ((List<?>) value).size();
288
+ }
289
+ }
290
+
291
+ /**
292
+ * Useful for implementing
293
+ * {@link Message#getRepeatedField(Descriptors.FieldDescriptor,int)}.
294
+ */
295
+ public Object getRepeatedField(final FieldDescriptorType descriptor,
296
+ final int index) {
297
+ if (!descriptor.isRepeated()) {
298
+ throw new IllegalArgumentException(
299
+ "getRepeatedField() can only be called on repeated fields.");
300
+ }
301
+
302
+ final Object value = getField(descriptor);
303
+
304
+ if (value == null) {
305
+ throw new IndexOutOfBoundsException();
306
+ } else {
307
+ return ((List<?>) value).get(index);
308
+ }
309
+ }
310
+
311
+ /**
312
+ * Useful for implementing
313
+ * {@link Message.Builder#setRepeatedField(Descriptors.FieldDescriptor,int,Object)}.
314
+ */
315
+ @SuppressWarnings("unchecked")
316
+ public void setRepeatedField(final FieldDescriptorType descriptor,
317
+ final int index,
318
+ final Object value) {
319
+ if (!descriptor.isRepeated()) {
320
+ throw new IllegalArgumentException(
321
+ "getRepeatedField() can only be called on repeated fields.");
322
+ }
323
+
324
+ final Object list = getField(descriptor);
325
+ if (list == null) {
326
+ throw new IndexOutOfBoundsException();
327
+ }
328
+
329
+ verifyType(descriptor.getLiteType(), value);
330
+ ((List<Object>) list).set(index, value);
331
+ }
332
+
333
+ /**
334
+ * Useful for implementing
335
+ * {@link Message.Builder#addRepeatedField(Descriptors.FieldDescriptor,Object)}.
336
+ */
337
+ @SuppressWarnings("unchecked")
338
+ public void addRepeatedField(final FieldDescriptorType descriptor,
339
+ final Object value) {
340
+ if (!descriptor.isRepeated()) {
341
+ throw new IllegalArgumentException(
342
+ "addRepeatedField() can only be called on repeated fields.");
343
+ }
344
+
345
+ verifyType(descriptor.getLiteType(), value);
346
+
347
+ final Object existingValue = getField(descriptor);
348
+ List<Object> list;
349
+ if (existingValue == null) {
350
+ list = new ArrayList<Object>();
351
+ fields.put(descriptor, list);
352
+ } else {
353
+ list = (List<Object>) existingValue;
354
+ }
355
+
356
+ list.add(value);
357
+ }
358
+
359
+ /**
360
+ * Verifies that the given object is of the correct type to be a valid
361
+ * value for the given field. (For repeated fields, this checks if the
362
+ * object is the right type to be one element of the field.)
363
+ *
364
+ * @throws IllegalArgumentException The value is not of the right type.
365
+ */
366
+ private static void verifyType(final WireFormat.FieldType type,
367
+ final Object value) {
368
+ if (value == null) {
369
+ throw new NullPointerException();
370
+ }
371
+
372
+ boolean isValid = false;
373
+ switch (type.getJavaType()) {
374
+ case INT: isValid = value instanceof Integer ; break;
375
+ case LONG: isValid = value instanceof Long ; break;
376
+ case FLOAT: isValid = value instanceof Float ; break;
377
+ case DOUBLE: isValid = value instanceof Double ; break;
378
+ case BOOLEAN: isValid = value instanceof Boolean ; break;
379
+ case STRING: isValid = value instanceof String ; break;
380
+ case BYTE_STRING:
381
+ isValid = value instanceof ByteString || value instanceof byte[];
382
+ break;
383
+ case ENUM:
384
+ // TODO(kenton): Caller must do type checking here, I guess.
385
+ isValid =
386
+ (value instanceof Integer || value instanceof Internal.EnumLite);
387
+ break;
388
+ case MESSAGE:
389
+ // TODO(kenton): Caller must do type checking here, I guess.
390
+ isValid =
391
+ (value instanceof MessageLite) || (value instanceof LazyField);
392
+ break;
393
+ }
394
+
395
+ if (!isValid) {
396
+ // TODO(kenton): When chaining calls to setField(), it can be hard to
397
+ // tell from the stack trace which exact call failed, since the whole
398
+ // chain is considered one line of code. It would be nice to print
399
+ // more information here, e.g. naming the field. We used to do that.
400
+ // But we can't now that FieldSet doesn't use descriptors. Maybe this
401
+ // isn't a big deal, though, since it would only really apply when using
402
+ // reflection and generally people don't chain reflection setters.
403
+ throw new IllegalArgumentException(
404
+ "Wrong object type used with protocol message reflection.");
405
+ }
406
+ }
407
+
408
+ // =================================================================
409
+ // Parsing and serialization
410
+
411
+ /**
412
+ * See {@link Message#isInitialized()}. Note: Since {@code FieldSet}
413
+ * itself does not have any way of knowing about required fields that
414
+ * aren't actually present in the set, it is up to the caller to check
415
+ * that all required fields are present.
416
+ */
417
+ public boolean isInitialized() {
418
+ for (int i = 0; i < fields.getNumArrayEntries(); i++) {
419
+ if (!isInitialized(fields.getArrayEntryAt(i))) {
420
+ return false;
421
+ }
422
+ }
423
+ for (final Map.Entry<FieldDescriptorType, Object> entry :
424
+ fields.getOverflowEntries()) {
425
+ if (!isInitialized(entry)) {
426
+ return false;
427
+ }
428
+ }
429
+ return true;
430
+ }
431
+
432
+ @SuppressWarnings("unchecked")
433
+ private boolean isInitialized(
434
+ final Map.Entry<FieldDescriptorType, Object> entry) {
435
+ final FieldDescriptorType descriptor = entry.getKey();
436
+ if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE) {
437
+ if (descriptor.isRepeated()) {
438
+ for (final MessageLite element:
439
+ (List<MessageLite>) entry.getValue()) {
440
+ if (!element.isInitialized()) {
441
+ return false;
442
+ }
443
+ }
444
+ } else {
445
+ Object value = entry.getValue();
446
+ if (value instanceof MessageLite) {
447
+ if (!((MessageLite) value).isInitialized()) {
448
+ return false;
449
+ }
450
+ } else if (value instanceof LazyField) {
451
+ return true;
452
+ } else {
453
+ throw new IllegalArgumentException(
454
+ "Wrong object type used with protocol message reflection.");
455
+ }
456
+ }
457
+ }
458
+ return true;
459
+ }
460
+
461
+ /**
462
+ * Given a field type, return the wire type.
463
+ *
464
+ * @returns One of the {@code WIRETYPE_} constants defined in
465
+ * {@link WireFormat}.
466
+ */
467
+ static int getWireFormatForFieldType(final WireFormat.FieldType type,
468
+ boolean isPacked) {
469
+ if (isPacked) {
470
+ return WireFormat.WIRETYPE_LENGTH_DELIMITED;
471
+ } else {
472
+ return type.getWireType();
473
+ }
474
+ }
475
+
476
+ /**
477
+ * Like {@link Message.Builder#mergeFrom(Message)}, but merges from another
478
+ * {@link FieldSet}.
479
+ */
480
+ public void mergeFrom(final FieldSet<FieldDescriptorType> other) {
481
+ for (int i = 0; i < other.fields.getNumArrayEntries(); i++) {
482
+ mergeFromField(other.fields.getArrayEntryAt(i));
483
+ }
484
+ for (final Map.Entry<FieldDescriptorType, Object> entry :
485
+ other.fields.getOverflowEntries()) {
486
+ mergeFromField(entry);
487
+ }
488
+ }
489
+
490
+ private Object cloneIfMutable(Object value) {
491
+ if (value instanceof byte[]) {
492
+ byte[] bytes = (byte[]) value;
493
+ byte[] copy = new byte[bytes.length];
494
+ System.arraycopy(bytes, 0, copy, 0, bytes.length);
495
+ return copy;
496
+ } else {
497
+ return value;
498
+ }
499
+ }
500
+
501
+ @SuppressWarnings({"unchecked", "rawtypes"})
502
+ private void mergeFromField(
503
+ final Map.Entry<FieldDescriptorType, Object> entry) {
504
+ final FieldDescriptorType descriptor = entry.getKey();
505
+ Object otherValue = entry.getValue();
506
+ if (otherValue instanceof LazyField) {
507
+ otherValue = ((LazyField) otherValue).getValue();
508
+ }
509
+
510
+ if (descriptor.isRepeated()) {
511
+ Object value = getField(descriptor);
512
+ if (value == null) {
513
+ value = new ArrayList();
514
+ }
515
+ for (Object element : (List) otherValue) {
516
+ ((List) value).add(cloneIfMutable(element));
517
+ }
518
+ fields.put(descriptor, value);
519
+ } else if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE) {
520
+ Object value = getField(descriptor);
521
+ if (value == null) {
522
+ fields.put(descriptor, cloneIfMutable(otherValue));
523
+ } else {
524
+ // Merge the messages.
525
+ value = descriptor.internalMergeFrom(
526
+ ((MessageLite) value).toBuilder(), (MessageLite) otherValue)
527
+ .build();
528
+
529
+ fields.put(descriptor, value);
530
+ }
531
+ } else {
532
+ fields.put(descriptor, cloneIfMutable(otherValue));
533
+ }
534
+ }
535
+
536
+ // TODO(kenton): Move static parsing and serialization methods into some
537
+ // other class. Probably WireFormat.
538
+
539
+ /**
540
+ * Read a field of any primitive type for immutable messages from a
541
+ * CodedInputStream. Enums, groups, and embedded messages are not handled by
542
+ * this method.
543
+ *
544
+ * @param input The stream from which to read.
545
+ * @param type Declared type of the field.
546
+ * @param checkUtf8 When true, check that the input is valid utf8.
547
+ * @return An object representing the field's value, of the exact
548
+ * type which would be returned by
549
+ * {@link Message#getField(Descriptors.FieldDescriptor)} for
550
+ * this field.
551
+ */
552
+ public static Object readPrimitiveField(
553
+ CodedInputStream input,
554
+ final WireFormat.FieldType type,
555
+ boolean checkUtf8) throws IOException {
556
+ switch (type) {
557
+ case DOUBLE : return input.readDouble ();
558
+ case FLOAT : return input.readFloat ();
559
+ case INT64 : return input.readInt64 ();
560
+ case UINT64 : return input.readUInt64 ();
561
+ case INT32 : return input.readInt32 ();
562
+ case FIXED64 : return input.readFixed64 ();
563
+ case FIXED32 : return input.readFixed32 ();
564
+ case BOOL : return input.readBool ();
565
+ case STRING : if (checkUtf8) {
566
+ return input.readStringRequireUtf8();
567
+ } else {
568
+ return input.readString();
569
+ }
570
+ case BYTES : return input.readBytes ();
571
+ case UINT32 : return input.readUInt32 ();
572
+ case SFIXED32: return input.readSFixed32();
573
+ case SFIXED64: return input.readSFixed64();
574
+ case SINT32 : return input.readSInt32 ();
575
+ case SINT64 : return input.readSInt64 ();
576
+
577
+ case GROUP:
578
+ throw new IllegalArgumentException(
579
+ "readPrimitiveField() cannot handle nested groups.");
580
+ case MESSAGE:
581
+ throw new IllegalArgumentException(
582
+ "readPrimitiveField() cannot handle embedded messages.");
583
+ case ENUM:
584
+ // We don't handle enums because we don't know what to do if the
585
+ // value is not recognized.
586
+ throw new IllegalArgumentException(
587
+ "readPrimitiveField() cannot handle enums.");
588
+ }
589
+
590
+ throw new RuntimeException(
591
+ "There is no way to get here, but the compiler thinks otherwise.");
592
+ }
593
+
594
+
595
+ /** See {@link Message#writeTo(CodedOutputStream)}. */
596
+ public void writeTo(final CodedOutputStream output)
597
+ throws IOException {
598
+ for (int i = 0; i < fields.getNumArrayEntries(); i++) {
599
+ final Map.Entry<FieldDescriptorType, Object> entry =
600
+ fields.getArrayEntryAt(i);
601
+ writeField(entry.getKey(), entry.getValue(), output);
602
+ }
603
+ for (final Map.Entry<FieldDescriptorType, Object> entry :
604
+ fields.getOverflowEntries()) {
605
+ writeField(entry.getKey(), entry.getValue(), output);
606
+ }
607
+ }
608
+
609
+ /**
610
+ * Like {@link #writeTo} but uses MessageSet wire format.
611
+ */
612
+ public void writeMessageSetTo(final CodedOutputStream output)
613
+ throws IOException {
614
+ for (int i = 0; i < fields.getNumArrayEntries(); i++) {
615
+ writeMessageSetTo(fields.getArrayEntryAt(i), output);
616
+ }
617
+ for (final Map.Entry<FieldDescriptorType, Object> entry :
618
+ fields.getOverflowEntries()) {
619
+ writeMessageSetTo(entry, output);
620
+ }
621
+ }
622
+
623
+ private void writeMessageSetTo(
624
+ final Map.Entry<FieldDescriptorType, Object> entry,
625
+ final CodedOutputStream output) throws IOException {
626
+ final FieldDescriptorType descriptor = entry.getKey();
627
+ if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE &&
628
+ !descriptor.isRepeated() && !descriptor.isPacked()) {
629
+ Object value = entry.getValue();
630
+ if (value instanceof LazyField) {
631
+ value = ((LazyField) value).getValue();
632
+ }
633
+ output.writeMessageSetExtension(entry.getKey().getNumber(),
634
+ (MessageLite) value);
635
+ } else {
636
+ writeField(descriptor, entry.getValue(), output);
637
+ }
638
+ }
639
+
640
+ /**
641
+ * Write a single tag-value pair to the stream.
642
+ *
643
+ * @param output The output stream.
644
+ * @param type The field's type.
645
+ * @param number The field's number.
646
+ * @param value Object representing the field's value. Must be of the exact
647
+ * type which would be returned by
648
+ * {@link Message#getField(Descriptors.FieldDescriptor)} for
649
+ * this field.
650
+ */
651
+ private static void writeElement(final CodedOutputStream output,
652
+ final WireFormat.FieldType type,
653
+ final int number,
654
+ final Object value) throws IOException {
655
+ // Special case for groups, which need a start and end tag; other fields
656
+ // can just use writeTag() and writeFieldNoTag().
657
+ if (type == WireFormat.FieldType.GROUP) {
658
+ output.writeGroup(number, (MessageLite) value);
659
+ } else {
660
+ output.writeTag(number, getWireFormatForFieldType(type, false));
661
+ writeElementNoTag(output, type, value);
662
+ }
663
+ }
664
+
665
+ /**
666
+ * Write a field of arbitrary type, without its tag, to the stream.
667
+ *
668
+ * @param output The output stream.
669
+ * @param type The field's type.
670
+ * @param value Object representing the field's value. Must be of the exact
671
+ * type which would be returned by
672
+ * {@link Message#getField(Descriptors.FieldDescriptor)} for
673
+ * this field.
674
+ */
675
+ private static void writeElementNoTag(
676
+ final CodedOutputStream output,
677
+ final WireFormat.FieldType type,
678
+ final Object value) throws IOException {
679
+ switch (type) {
680
+ case DOUBLE : output.writeDoubleNoTag ((Double ) value); break;
681
+ case FLOAT : output.writeFloatNoTag ((Float ) value); break;
682
+ case INT64 : output.writeInt64NoTag ((Long ) value); break;
683
+ case UINT64 : output.writeUInt64NoTag ((Long ) value); break;
684
+ case INT32 : output.writeInt32NoTag ((Integer ) value); break;
685
+ case FIXED64 : output.writeFixed64NoTag ((Long ) value); break;
686
+ case FIXED32 : output.writeFixed32NoTag ((Integer ) value); break;
687
+ case BOOL : output.writeBoolNoTag ((Boolean ) value); break;
688
+ case STRING : output.writeStringNoTag ((String ) value); break;
689
+ case GROUP : output.writeGroupNoTag ((MessageLite) value); break;
690
+ case MESSAGE : output.writeMessageNoTag ((MessageLite) value); break;
691
+ case BYTES:
692
+ if (value instanceof ByteString) {
693
+ output.writeBytesNoTag((ByteString) value);
694
+ } else {
695
+ output.writeByteArrayNoTag((byte[]) value);
696
+ }
697
+ break;
698
+ case UINT32 : output.writeUInt32NoTag ((Integer ) value); break;
699
+ case SFIXED32: output.writeSFixed32NoTag((Integer ) value); break;
700
+ case SFIXED64: output.writeSFixed64NoTag((Long ) value); break;
701
+ case SINT32 : output.writeSInt32NoTag ((Integer ) value); break;
702
+ case SINT64 : output.writeSInt64NoTag ((Long ) value); break;
703
+
704
+ case ENUM:
705
+ if (value instanceof Internal.EnumLite) {
706
+ output.writeEnumNoTag(((Internal.EnumLite) value).getNumber());
707
+ } else {
708
+ output.writeEnumNoTag(((Integer) value).intValue());
709
+ }
710
+ break;
711
+ }
712
+ }
713
+
714
+ /** Write a single field. */
715
+ public static void writeField(final FieldDescriptorLite<?> descriptor,
716
+ final Object value,
717
+ final CodedOutputStream output)
718
+ throws IOException {
719
+ WireFormat.FieldType type = descriptor.getLiteType();
720
+ int number = descriptor.getNumber();
721
+ if (descriptor.isRepeated()) {
722
+ final List<?> valueList = (List<?>)value;
723
+ if (descriptor.isPacked()) {
724
+ output.writeTag(number, WireFormat.WIRETYPE_LENGTH_DELIMITED);
725
+ // Compute the total data size so the length can be written.
726
+ int dataSize = 0;
727
+ for (final Object element : valueList) {
728
+ dataSize += computeElementSizeNoTag(type, element);
729
+ }
730
+ output.writeRawVarint32(dataSize);
731
+ // Write the data itself, without any tags.
732
+ for (final Object element : valueList) {
733
+ writeElementNoTag(output, type, element);
734
+ }
735
+ } else {
736
+ for (final Object element : valueList) {
737
+ writeElement(output, type, number, element);
738
+ }
739
+ }
740
+ } else {
741
+ if (value instanceof LazyField) {
742
+ writeElement(output, type, number, ((LazyField) value).getValue());
743
+ } else {
744
+ writeElement(output, type, number, value);
745
+ }
746
+ }
747
+ }
748
+
749
+ /**
750
+ * See {@link Message#getSerializedSize()}. It's up to the caller to cache
751
+ * the resulting size if desired.
752
+ */
753
+ public int getSerializedSize() {
754
+ int size = 0;
755
+ for (int i = 0; i < fields.getNumArrayEntries(); i++) {
756
+ final Map.Entry<FieldDescriptorType, Object> entry =
757
+ fields.getArrayEntryAt(i);
758
+ size += computeFieldSize(entry.getKey(), entry.getValue());
759
+ }
760
+ for (final Map.Entry<FieldDescriptorType, Object> entry :
761
+ fields.getOverflowEntries()) {
762
+ size += computeFieldSize(entry.getKey(), entry.getValue());
763
+ }
764
+ return size;
765
+ }
766
+
767
+ /**
768
+ * Like {@link #getSerializedSize} but uses MessageSet wire format.
769
+ */
770
+ public int getMessageSetSerializedSize() {
771
+ int size = 0;
772
+ for (int i = 0; i < fields.getNumArrayEntries(); i++) {
773
+ size += getMessageSetSerializedSize(fields.getArrayEntryAt(i));
774
+ }
775
+ for (final Map.Entry<FieldDescriptorType, Object> entry :
776
+ fields.getOverflowEntries()) {
777
+ size += getMessageSetSerializedSize(entry);
778
+ }
779
+ return size;
780
+ }
781
+
782
+ private int getMessageSetSerializedSize(
783
+ final Map.Entry<FieldDescriptorType, Object> entry) {
784
+ final FieldDescriptorType descriptor = entry.getKey();
785
+ Object value = entry.getValue();
786
+ if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE
787
+ && !descriptor.isRepeated() && !descriptor.isPacked()) {
788
+ if (value instanceof LazyField) {
789
+ return CodedOutputStream.computeLazyFieldMessageSetExtensionSize(
790
+ entry.getKey().getNumber(), (LazyField) value);
791
+ } else {
792
+ return CodedOutputStream.computeMessageSetExtensionSize(
793
+ entry.getKey().getNumber(), (MessageLite) value);
794
+ }
795
+ } else {
796
+ return computeFieldSize(descriptor, value);
797
+ }
798
+ }
799
+
800
+ /**
801
+ * Compute the number of bytes that would be needed to encode a
802
+ * single tag/value pair of arbitrary type.
803
+ *
804
+ * @param type The field's type.
805
+ * @param number The field's number.
806
+ * @param value Object representing the field's value. Must be of the exact
807
+ * type which would be returned by
808
+ * {@link Message#getField(Descriptors.FieldDescriptor)} for
809
+ * this field.
810
+ */
811
+ private static int computeElementSize(
812
+ final WireFormat.FieldType type,
813
+ final int number, final Object value) {
814
+ int tagSize = CodedOutputStream.computeTagSize(number);
815
+ if (type == WireFormat.FieldType.GROUP) {
816
+ // Only count the end group tag for proto2 messages as for proto1 the end
817
+ // group tag will be counted as a part of getSerializedSize().
818
+ tagSize *= 2;
819
+ }
820
+ return tagSize + computeElementSizeNoTag(type, value);
821
+ }
822
+
823
+ /**
824
+ * Compute the number of bytes that would be needed to encode a
825
+ * particular value of arbitrary type, excluding tag.
826
+ *
827
+ * @param type The field's type.
828
+ * @param value Object representing the field's value. Must be of the exact
829
+ * type which would be returned by
830
+ * {@link Message#getField(Descriptors.FieldDescriptor)} for
831
+ * this field.
832
+ */
833
+ private static int computeElementSizeNoTag(
834
+ final WireFormat.FieldType type, final Object value) {
835
+ switch (type) {
836
+ // Note: Minor violation of 80-char limit rule here because this would
837
+ // actually be harder to read if we wrapped the lines.
838
+ case DOUBLE : return CodedOutputStream.computeDoubleSizeNoTag ((Double )value);
839
+ case FLOAT : return CodedOutputStream.computeFloatSizeNoTag ((Float )value);
840
+ case INT64 : return CodedOutputStream.computeInt64SizeNoTag ((Long )value);
841
+ case UINT64 : return CodedOutputStream.computeUInt64SizeNoTag ((Long )value);
842
+ case INT32 : return CodedOutputStream.computeInt32SizeNoTag ((Integer )value);
843
+ case FIXED64 : return CodedOutputStream.computeFixed64SizeNoTag ((Long )value);
844
+ case FIXED32 : return CodedOutputStream.computeFixed32SizeNoTag ((Integer )value);
845
+ case BOOL : return CodedOutputStream.computeBoolSizeNoTag ((Boolean )value);
846
+ case STRING : return CodedOutputStream.computeStringSizeNoTag ((String )value);
847
+ case GROUP : return CodedOutputStream.computeGroupSizeNoTag ((MessageLite)value);
848
+ case BYTES :
849
+ if (value instanceof ByteString) {
850
+ return CodedOutputStream.computeBytesSizeNoTag((ByteString) value);
851
+ } else {
852
+ return CodedOutputStream.computeByteArraySizeNoTag((byte[]) value);
853
+ }
854
+ case UINT32 : return CodedOutputStream.computeUInt32SizeNoTag ((Integer )value);
855
+ case SFIXED32: return CodedOutputStream.computeSFixed32SizeNoTag((Integer )value);
856
+ case SFIXED64: return CodedOutputStream.computeSFixed64SizeNoTag((Long )value);
857
+ case SINT32 : return CodedOutputStream.computeSInt32SizeNoTag ((Integer )value);
858
+ case SINT64 : return CodedOutputStream.computeSInt64SizeNoTag ((Long )value);
859
+
860
+ case MESSAGE:
861
+ if (value instanceof LazyField) {
862
+ return CodedOutputStream.computeLazyFieldSizeNoTag((LazyField) value);
863
+ } else {
864
+ return CodedOutputStream.computeMessageSizeNoTag((MessageLite) value);
865
+ }
866
+
867
+ case ENUM:
868
+ if (value instanceof Internal.EnumLite) {
869
+ return CodedOutputStream.computeEnumSizeNoTag(
870
+ ((Internal.EnumLite) value).getNumber());
871
+ } else {
872
+ return CodedOutputStream.computeEnumSizeNoTag((Integer) value);
873
+ }
874
+ }
875
+
876
+ throw new RuntimeException(
877
+ "There is no way to get here, but the compiler thinks otherwise.");
878
+ }
879
+
880
+ /**
881
+ * Compute the number of bytes needed to encode a particular field.
882
+ */
883
+ public static int computeFieldSize(final FieldDescriptorLite<?> descriptor,
884
+ final Object value) {
885
+ WireFormat.FieldType type = descriptor.getLiteType();
886
+ int number = descriptor.getNumber();
887
+ if (descriptor.isRepeated()) {
888
+ if (descriptor.isPacked()) {
889
+ int dataSize = 0;
890
+ for (final Object element : (List<?>)value) {
891
+ dataSize += computeElementSizeNoTag(type, element);
892
+ }
893
+ return dataSize +
894
+ CodedOutputStream.computeTagSize(number) +
895
+ CodedOutputStream.computeRawVarint32Size(dataSize);
896
+ } else {
897
+ int size = 0;
898
+ for (final Object element : (List<?>)value) {
899
+ size += computeElementSize(type, number, element);
900
+ }
901
+ return size;
902
+ }
903
+ } else {
904
+ return computeElementSize(type, number, value);
905
+ }
906
+ }
907
+ }