protoc 2.6.1.1 → 2.6.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,213 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ // Author: kenton@google.com (Kenton Varda)
32
+ // Based on original Protocol Buffers design by
33
+ // Sanjay Ghemawat, Jeff Dean, and others.
34
+
35
+ #include <google/protobuf/compiler/java/java_field.h>
36
+
37
+ #include <memory>
38
+
39
+ #include <google/protobuf/stubs/common.h>
40
+ #include <google/protobuf/compiler/java/java_context.h>
41
+ #include <google/protobuf/compiler/java/java_enum_field.h>
42
+ #include <google/protobuf/compiler/java/java_helpers.h>
43
+ #include <google/protobuf/compiler/java/java_lazy_message_field.h>
44
+ #include <google/protobuf/compiler/java/java_message_field.h>
45
+ #include <google/protobuf/compiler/java/java_primitive_field.h>
46
+ #include <google/protobuf/compiler/java/java_string_field.h>
47
+ #include <google/protobuf/io/printer.h>
48
+ #include <google/protobuf/stubs/strutil.h>
49
+ #include <google/protobuf/stubs/substitute.h>
50
+
51
+ namespace google {
52
+ namespace protobuf {
53
+ namespace compiler {
54
+ namespace java {
55
+
56
+ namespace {
57
+
58
+ ImmutableFieldGenerator* MakeImmutableGenerator(
59
+ const FieldDescriptor* field, int messageBitIndex, int builderBitIndex,
60
+ Context* context) {
61
+ if (field->is_repeated()) {
62
+ switch (GetJavaType(field)) {
63
+ case JAVATYPE_MESSAGE:
64
+ if (IsLazy(field)) {
65
+ return new RepeatedImmutableLazyMessageFieldGenerator(
66
+ field, messageBitIndex, builderBitIndex, context);
67
+ } else {
68
+ return new RepeatedImmutableMessageFieldGenerator(
69
+ field, messageBitIndex, builderBitIndex, context);
70
+ }
71
+ case JAVATYPE_ENUM:
72
+ return new RepeatedImmutableEnumFieldGenerator(
73
+ field, messageBitIndex, builderBitIndex, context);
74
+ case JAVATYPE_STRING:
75
+ return new RepeatedImmutableStringFieldGenerator(
76
+ field, messageBitIndex, builderBitIndex, context);
77
+ default:
78
+ return new RepeatedImmutablePrimitiveFieldGenerator(
79
+ field, messageBitIndex, builderBitIndex, context);
80
+ }
81
+ } else {
82
+ if (field->containing_oneof()) {
83
+ switch (GetJavaType(field)) {
84
+ case JAVATYPE_MESSAGE:
85
+ if (IsLazy(field)) {
86
+ return new ImmutableLazyMessageOneofFieldGenerator(
87
+ field, messageBitIndex, builderBitIndex, context);
88
+ } else {
89
+ return new ImmutableMessageOneofFieldGenerator(
90
+ field, messageBitIndex, builderBitIndex, context);
91
+ }
92
+ case JAVATYPE_ENUM:
93
+ return new ImmutableEnumOneofFieldGenerator(
94
+ field, messageBitIndex, builderBitIndex, context);
95
+ case JAVATYPE_STRING:
96
+ return new ImmutableStringOneofFieldGenerator(
97
+ field, messageBitIndex, builderBitIndex, context);
98
+ default:
99
+ return new ImmutablePrimitiveOneofFieldGenerator(
100
+ field, messageBitIndex, builderBitIndex, context);
101
+ }
102
+ } else {
103
+ switch (GetJavaType(field)) {
104
+ case JAVATYPE_MESSAGE:
105
+ if (IsLazy(field)) {
106
+ return new ImmutableLazyMessageFieldGenerator(
107
+ field, messageBitIndex, builderBitIndex, context);
108
+ } else {
109
+ return new ImmutableMessageFieldGenerator(
110
+ field, messageBitIndex, builderBitIndex, context);
111
+ }
112
+ case JAVATYPE_ENUM:
113
+ return new ImmutableEnumFieldGenerator(
114
+ field, messageBitIndex, builderBitIndex, context);
115
+ case JAVATYPE_STRING:
116
+ return new ImmutableStringFieldGenerator(
117
+ field, messageBitIndex, builderBitIndex, context);
118
+ default:
119
+ return new ImmutablePrimitiveFieldGenerator(
120
+ field, messageBitIndex, builderBitIndex, context);
121
+ }
122
+ }
123
+ }
124
+ }
125
+
126
+
127
+ static inline void ReportUnexpectedPackedFieldsCall(io::Printer* printer) {
128
+ // Reaching here indicates a bug. Cases are:
129
+ // - This FieldGenerator should support packing,
130
+ // but this method should be overridden.
131
+ // - This FieldGenerator doesn't support packing, and this method
132
+ // should never have been called.
133
+ GOOGLE_LOG(FATAL) << "GenerateParsingCodeFromPacked() "
134
+ << "called on field generator that does not support packing.";
135
+ }
136
+
137
+ } // namespace
138
+
139
+ ImmutableFieldGenerator::~ImmutableFieldGenerator() {}
140
+
141
+ void ImmutableFieldGenerator::
142
+ GenerateParsingCodeFromPacked(io::Printer* printer) const {
143
+ ReportUnexpectedPackedFieldsCall(printer);
144
+ }
145
+
146
+ // ===================================================================
147
+
148
+ template <>
149
+ FieldGeneratorMap<ImmutableFieldGenerator>::FieldGeneratorMap(
150
+ const Descriptor* descriptor, Context* context)
151
+ : descriptor_(descriptor),
152
+ field_generators_(new scoped_ptr<
153
+ ImmutableFieldGenerator>[descriptor->field_count()]) {
154
+
155
+ // Construct all the FieldGenerators and assign them bit indices for their
156
+ // bit fields.
157
+ int messageBitIndex = 0;
158
+ int builderBitIndex = 0;
159
+ for (int i = 0; i < descriptor->field_count(); i++) {
160
+ ImmutableFieldGenerator* generator = MakeImmutableGenerator(
161
+ descriptor->field(i), messageBitIndex, builderBitIndex, context);
162
+ field_generators_[i].reset(generator);
163
+ messageBitIndex += generator->GetNumBitsForMessage();
164
+ builderBitIndex += generator->GetNumBitsForBuilder();
165
+ }
166
+ }
167
+
168
+ template<>
169
+ FieldGeneratorMap<ImmutableFieldGenerator>::~FieldGeneratorMap() {}
170
+
171
+
172
+ void SetCommonFieldVariables(const FieldDescriptor* descriptor,
173
+ const FieldGeneratorInfo* info,
174
+ map<string, string>* variables) {
175
+ (*variables)["field_name"] = descriptor->name();
176
+ (*variables)["name"] = info->name;
177
+ (*variables)["capitalized_name"] = info->capitalized_name;
178
+ (*variables)["disambiguated_reason"] = info->disambiguated_reason;
179
+ (*variables)["constant_name"] = FieldConstantName(descriptor);
180
+ (*variables)["number"] = SimpleItoa(descriptor->number());
181
+ }
182
+
183
+ void SetCommonOneofVariables(const FieldDescriptor* descriptor,
184
+ const OneofGeneratorInfo* info,
185
+ map<string, string>* variables) {
186
+ (*variables)["oneof_name"] = info->name;
187
+ (*variables)["oneof_capitalized_name"] = info->capitalized_name;
188
+ (*variables)["oneof_index"] =
189
+ SimpleItoa(descriptor->containing_oneof()->index());
190
+ (*variables)["set_oneof_case_message"] = info->name +
191
+ "Case_ = " + SimpleItoa(descriptor->number());
192
+ (*variables)["clear_oneof_case_message"] = info->name +
193
+ "Case_ = 0";
194
+ (*variables)["has_oneof_case_message"] = info->name +
195
+ "Case_ == " + SimpleItoa(descriptor->number());
196
+ }
197
+
198
+ void PrintExtraFieldInfo(const map<string, string>& variables,
199
+ io::Printer* printer) {
200
+ const map<string, string>::const_iterator it =
201
+ variables.find("disambiguated_reason");
202
+ if (it != variables.end() && !it->second.empty()) {
203
+ printer->Print(
204
+ variables,
205
+ "// An alternative name is used for field \"$field_name$\" because:\n"
206
+ "// $disambiguated_reason$\n");
207
+ }
208
+ }
209
+
210
+ } // namespace java
211
+ } // namespace compiler
212
+ } // namespace protobuf
213
+ } // namespace google
@@ -0,0 +1,162 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ // Author: kenton@google.com (Kenton Varda)
32
+ // Based on original Protocol Buffers design by
33
+ // Sanjay Ghemawat, Jeff Dean, and others.
34
+
35
+ #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_FIELD_H__
36
+ #define GOOGLE_PROTOBUF_COMPILER_JAVA_FIELD_H__
37
+
38
+ #include <map>
39
+ #include <memory>
40
+ #include <string>
41
+
42
+ #include <google/protobuf/stubs/common.h>
43
+ #include <google/protobuf/descriptor.h>
44
+
45
+ namespace google {
46
+ namespace protobuf {
47
+ namespace compiler {
48
+ namespace java {
49
+ class Context; // context.h
50
+ class ClassNameResolver; // name_resolver.h
51
+ }
52
+ }
53
+ namespace io {
54
+ class Printer; // printer.h
55
+ }
56
+ }
57
+
58
+ namespace protobuf {
59
+ namespace compiler {
60
+ namespace java {
61
+
62
+ class ImmutableFieldGenerator {
63
+ public:
64
+ ImmutableFieldGenerator() {}
65
+ virtual ~ImmutableFieldGenerator();
66
+
67
+ virtual int GetNumBitsForMessage() const = 0;
68
+ virtual int GetNumBitsForBuilder() const = 0;
69
+ virtual void GenerateInterfaceMembers(io::Printer* printer) const = 0;
70
+ virtual void GenerateMembers(io::Printer* printer) const = 0;
71
+ virtual void GenerateBuilderMembers(io::Printer* printer) const = 0;
72
+ virtual void GenerateInitializationCode(io::Printer* printer) const = 0;
73
+ virtual void GenerateBuilderClearCode(io::Printer* printer) const = 0;
74
+ virtual void GenerateMergingCode(io::Printer* printer) const = 0;
75
+ virtual void GenerateBuildingCode(io::Printer* printer) const = 0;
76
+ virtual void GenerateParsingCode(io::Printer* printer) const = 0;
77
+ virtual void GenerateParsingCodeFromPacked(io::Printer* printer) const;
78
+ virtual void GenerateParsingDoneCode(io::Printer* printer) const = 0;
79
+ virtual void GenerateSerializationCode(io::Printer* printer) const = 0;
80
+ virtual void GenerateSerializedSizeCode(io::Printer* printer) const = 0;
81
+ virtual void GenerateFieldBuilderInitializationCode(io::Printer* printer)
82
+ const = 0;
83
+
84
+ virtual void GenerateEqualsCode(io::Printer* printer) const = 0;
85
+ virtual void GenerateHashCode(io::Printer* printer) const = 0;
86
+
87
+ virtual string GetBoxedType() const = 0;
88
+
89
+ private:
90
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableFieldGenerator);
91
+ };
92
+
93
+
94
+ // Convenience class which constructs FieldGenerators for a Descriptor.
95
+ template<typename FieldGeneratorType>
96
+ class FieldGeneratorMap {
97
+ public:
98
+ explicit FieldGeneratorMap(const Descriptor* descriptor,
99
+ Context* context);
100
+ ~FieldGeneratorMap();
101
+
102
+ const FieldGeneratorType& get(const FieldDescriptor* field) const;
103
+
104
+ private:
105
+ const Descriptor* descriptor_;
106
+ Context* context_;
107
+ ClassNameResolver* name_resolver_;
108
+ scoped_array<scoped_ptr<FieldGeneratorType> > field_generators_;
109
+
110
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGeneratorMap);
111
+ };
112
+
113
+ template<typename FieldGeneratorType>
114
+ inline const FieldGeneratorType&
115
+ FieldGeneratorMap<FieldGeneratorType>::get(const FieldDescriptor* field) const {
116
+ GOOGLE_CHECK_EQ(field->containing_type(), descriptor_);
117
+ return *field_generators_[field->index()];
118
+ }
119
+
120
+ // Instantiate template for mutable and immutable maps.
121
+ template<>
122
+ FieldGeneratorMap<ImmutableFieldGenerator>::
123
+ FieldGeneratorMap(const Descriptor* descriptor,
124
+ Context* context);
125
+
126
+ template<>
127
+ FieldGeneratorMap<ImmutableFieldGenerator>::~FieldGeneratorMap();
128
+
129
+
130
+ // Field information used in FieldGeneartors.
131
+ struct FieldGeneratorInfo {
132
+ string name;
133
+ string capitalized_name;
134
+ string disambiguated_reason;
135
+ };
136
+
137
+ // Oneof information used in OneofFieldGeneartors.
138
+ struct OneofGeneratorInfo {
139
+ string name;
140
+ string capitalized_name;
141
+ };
142
+
143
+ // Set some common variables used in variable FieldGenerators.
144
+ void SetCommonFieldVariables(const FieldDescriptor* descriptor,
145
+ const FieldGeneratorInfo* info,
146
+ map<string, string>* variables);
147
+
148
+ // Set some common oneof variables used in OneofFieldGenerators.
149
+ void SetCommonOneofVariables(const FieldDescriptor* descriptor,
150
+ const OneofGeneratorInfo* info,
151
+ map<string, string>* variables);
152
+
153
+ // Print useful comments before a field's accessors.
154
+ void PrintExtraFieldInfo(const map<string, string>& variables,
155
+ io::Printer* printer);
156
+
157
+ } // namespace java
158
+ } // namespace compiler
159
+ } // namespace protobuf
160
+
161
+ } // namespace google
162
+ #endif // GOOGLE_PROTOBUF_COMPILER_JAVA_FIELD_H__
@@ -0,0 +1,534 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ // Author: kenton@google.com (Kenton Varda)
32
+ // Based on original Protocol Buffers design by
33
+ // Sanjay Ghemawat, Jeff Dean, and others.
34
+
35
+ #include <google/protobuf/compiler/java/java_file.h>
36
+
37
+ #include <memory>
38
+
39
+ #include <google/protobuf/compiler/java/java_context.h>
40
+ #include <google/protobuf/compiler/java/java_enum.h>
41
+ #include <google/protobuf/compiler/java/java_extension.h>
42
+ #include <google/protobuf/compiler/java/java_generator_factory.h>
43
+ #include <google/protobuf/compiler/java/java_helpers.h>
44
+ #include <google/protobuf/compiler/java/java_message.h>
45
+ #include <google/protobuf/compiler/java/java_name_resolver.h>
46
+ #include <google/protobuf/compiler/java/java_service.h>
47
+ #include <google/protobuf/compiler/java/java_shared_code_generator.h>
48
+ #include <google/protobuf/compiler/code_generator.h>
49
+ #include <google/protobuf/io/printer.h>
50
+ #include <google/protobuf/io/zero_copy_stream.h>
51
+ #include <google/protobuf/descriptor.pb.h>
52
+ #include <google/protobuf/dynamic_message.h>
53
+ #include <google/protobuf/stubs/strutil.h>
54
+
55
+ namespace google {
56
+ namespace protobuf {
57
+ namespace compiler {
58
+ namespace java {
59
+
60
+ namespace {
61
+
62
+
63
+ // Recursively searches the given message to collect extensions.
64
+ // Returns true if all the extensions can be recognized. The extensions will be
65
+ // appended in to the extensions parameter.
66
+ // Returns false when there are unknown fields, in which case the data in the
67
+ // extensions output parameter is not reliable and should be discarded.
68
+ bool CollectExtensions(const Message& message,
69
+ vector<const FieldDescriptor*>* extensions) {
70
+ const Reflection* reflection = message.GetReflection();
71
+
72
+ // There are unknown fields that could be extensions, thus this call fails.
73
+ if (reflection->GetUnknownFields(message).field_count() > 0) return false;
74
+
75
+ vector<const FieldDescriptor*> fields;
76
+ reflection->ListFields(message, &fields);
77
+
78
+ for (int i = 0; i < fields.size(); i++) {
79
+ if (fields[i]->is_extension()) extensions->push_back(fields[i]);
80
+
81
+ if (GetJavaType(fields[i]) == JAVATYPE_MESSAGE) {
82
+ if (fields[i]->is_repeated()) {
83
+ int size = reflection->FieldSize(message, fields[i]);
84
+ for (int j = 0; j < size; j++) {
85
+ const Message& sub_message =
86
+ reflection->GetRepeatedMessage(message, fields[i], j);
87
+ if (!CollectExtensions(sub_message, extensions)) return false;
88
+ }
89
+ } else {
90
+ const Message& sub_message = reflection->GetMessage(message, fields[i]);
91
+ if (!CollectExtensions(sub_message, extensions)) return false;
92
+ }
93
+ }
94
+ }
95
+
96
+ return true;
97
+ }
98
+
99
+ // Finds all extensions in the given message and its sub-messages. If the
100
+ // message contains unknown fields (which could be extensions), then those
101
+ // extensions are defined in alternate_pool.
102
+ // The message will be converted to a DynamicMessage backed by alternate_pool
103
+ // in order to handle this case.
104
+ void CollectExtensions(const FileDescriptorProto& file_proto,
105
+ const DescriptorPool& alternate_pool,
106
+ vector<const FieldDescriptor*>* extensions,
107
+ const string& file_data) {
108
+ if (!CollectExtensions(file_proto, extensions)) {
109
+ // There are unknown fields in the file_proto, which are probably
110
+ // extensions. We need to parse the data into a dynamic message based on the
111
+ // builder-pool to find out all extensions.
112
+ const Descriptor* file_proto_desc = alternate_pool.FindMessageTypeByName(
113
+ file_proto.GetDescriptor()->full_name());
114
+ GOOGLE_CHECK(file_proto_desc)
115
+ << "Find unknown fields in FileDescriptorProto when building "
116
+ << file_proto.name()
117
+ << ". It's likely that those fields are custom options, however, "
118
+ "descriptor.proto is not in the transitive dependencies. "
119
+ "This normally should not happen. Please report a bug.";
120
+ DynamicMessageFactory factory;
121
+ scoped_ptr<Message> dynamic_file_proto(
122
+ factory.GetPrototype(file_proto_desc)->New());
123
+ GOOGLE_CHECK(dynamic_file_proto.get() != NULL);
124
+ GOOGLE_CHECK(dynamic_file_proto->ParseFromString(file_data));
125
+
126
+ // Collect the extensions again from the dynamic message. There should be no
127
+ // more unknown fields this time, i.e. all the custom options should be
128
+ // parsed as extensions now.
129
+ extensions->clear();
130
+ GOOGLE_CHECK(CollectExtensions(*dynamic_file_proto, extensions))
131
+ << "Find unknown fields in FileDescriptorProto when building "
132
+ << file_proto.name()
133
+ << ". It's likely that those fields are custom options, however, "
134
+ "those options cannot be recognized in the builder pool. "
135
+ "This normally should not happen. Please report a bug.";
136
+ }
137
+ }
138
+
139
+
140
+ } // namespace
141
+
142
+ FileGenerator::FileGenerator(const FileDescriptor* file, bool immutable_api)
143
+ : file_(file),
144
+ java_package_(FileJavaPackage(file, immutable_api)),
145
+ message_generators_(
146
+ new scoped_ptr<MessageGenerator>[file->message_type_count()]),
147
+ extension_generators_(
148
+ new scoped_ptr<ExtensionGenerator>[file->extension_count()]),
149
+ context_(new Context(file)),
150
+ name_resolver_(context_->GetNameResolver()),
151
+ immutable_api_(immutable_api) {
152
+ classname_ = name_resolver_->GetFileClassName(file, immutable_api);
153
+ generator_factory_.reset(
154
+ new ImmutableGeneratorFactory(context_.get()));
155
+ for (int i = 0; i < file_->message_type_count(); ++i) {
156
+ message_generators_[i].reset(
157
+ generator_factory_->NewMessageGenerator(file_->message_type(i)));
158
+ }
159
+ for (int i = 0; i < file_->extension_count(); ++i) {
160
+ extension_generators_[i].reset(
161
+ generator_factory_->NewExtensionGenerator(file_->extension(i)));
162
+ }
163
+ }
164
+
165
+ FileGenerator::~FileGenerator() {}
166
+
167
+ bool FileGenerator::Validate(string* error) {
168
+ // Check that no class name matches the file's class name. This is a common
169
+ // problem that leads to Java compile errors that can be hard to understand.
170
+ // It's especially bad when using the java_multiple_files, since we would
171
+ // end up overwriting the outer class with one of the inner ones.
172
+ if (name_resolver_->HasConflictingClassName(file_, classname_)) {
173
+ error->assign(file_->name());
174
+ error->append(
175
+ ": Cannot generate Java output because the file's outer class name, \"");
176
+ error->append(classname_);
177
+ error->append(
178
+ "\", matches the name of one of the types declared inside it. "
179
+ "Please either rename the type or use the java_outer_classname "
180
+ "option to specify a different outer class name for the .proto file.");
181
+ return false;
182
+ }
183
+ // If java_outer_classname option is not set and the default outer class name
184
+ // conflicts with a type defined in the message, we will append a suffix to
185
+ // avoid the conflict. This allows proto1 API protos to be dual-compiled into
186
+ // proto2 API without code change. When this happens we'd like to issue an
187
+ // warning to let the user know that the outer class name has been changed.
188
+ // Although we only do this automatic naming fix for immutable API, mutable
189
+ // outer class name will also be affected as it's contructed from immutable
190
+ // outer class name with an additional "Mutable" prefix. Since the naming
191
+ // change in mutable API is not caused by a naming conflict, we generate the
192
+ // warning for immutable API only.
193
+ if (immutable_api_ && !file_->options().has_java_outer_classname()) {
194
+ string default_classname =
195
+ name_resolver_->GetFileDefaultImmutableClassName(file_);
196
+ if (default_classname != classname_) {
197
+ GOOGLE_LOG(WARNING) << file_->name() << ": The default outer class name, \""
198
+ << default_classname << "\", conflicts with a type "
199
+ << "declared in the proto file and an alternative outer "
200
+ << "class name is used: \"" << classname_ << "\". To avoid "
201
+ << "this warning, please use the java_outer_classname "
202
+ << "option to specify a different outer class name for "
203
+ << "the .proto file.";
204
+ }
205
+ }
206
+ return true;
207
+ }
208
+
209
+ void FileGenerator::Generate(io::Printer* printer) {
210
+ // We don't import anything because we refer to all classes by their
211
+ // fully-qualified names in the generated source.
212
+ printer->Print(
213
+ "// Generated by the protocol buffer compiler. DO NOT EDIT!\n"
214
+ "// source: $filename$\n"
215
+ "\n",
216
+ "filename", file_->name());
217
+ if (!java_package_.empty()) {
218
+ printer->Print(
219
+ "package $package$;\n"
220
+ "\n",
221
+ "package", java_package_);
222
+ }
223
+ printer->Print(
224
+ "public final class $classname$ {\n"
225
+ " private $classname$() {}\n",
226
+ "classname", classname_);
227
+ printer->Indent();
228
+
229
+ // -----------------------------------------------------------------
230
+
231
+ printer->Print(
232
+ "public static void registerAllExtensions(\n"
233
+ " com.google.protobuf.ExtensionRegistry$lite$ registry) {\n",
234
+ "lite", HasDescriptorMethods(file_) ? "" : "Lite");
235
+
236
+ printer->Indent();
237
+
238
+ for (int i = 0; i < file_->extension_count(); i++) {
239
+ extension_generators_[i]->GenerateRegistrationCode(printer);
240
+ }
241
+
242
+ for (int i = 0; i < file_->message_type_count(); i++) {
243
+ message_generators_[i]->GenerateExtensionRegistrationCode(printer);
244
+ }
245
+
246
+ printer->Outdent();
247
+ printer->Print(
248
+ "}\n");
249
+
250
+ // -----------------------------------------------------------------
251
+
252
+ if (!MultipleJavaFiles(file_, immutable_api_)) {
253
+ for (int i = 0; i < file_->enum_type_count(); i++) {
254
+ EnumGenerator(file_->enum_type(i), immutable_api_, context_.get())
255
+ .Generate(printer);
256
+ }
257
+ for (int i = 0; i < file_->message_type_count(); i++) {
258
+ message_generators_[i]->GenerateInterface(printer);
259
+ message_generators_[i]->Generate(printer);
260
+ }
261
+ if (HasGenericServices(file_)) {
262
+ for (int i = 0; i < file_->service_count(); i++) {
263
+ scoped_ptr<ServiceGenerator> generator(
264
+ generator_factory_->NewServiceGenerator(file_->service(i)));
265
+ generator->Generate(printer);
266
+ }
267
+ }
268
+ }
269
+
270
+ // Extensions must be generated in the outer class since they are values,
271
+ // not classes.
272
+ for (int i = 0; i < file_->extension_count(); i++) {
273
+ extension_generators_[i]->Generate(printer);
274
+ }
275
+
276
+ // Static variables.
277
+ for (int i = 0; i < file_->message_type_count(); i++) {
278
+ message_generators_[i]->GenerateStaticVariables(printer);
279
+ }
280
+
281
+ printer->Print("\n");
282
+
283
+ if (HasDescriptorMethods(file_)) {
284
+ if (immutable_api_) {
285
+ GenerateDescriptorInitializationCodeForImmutable(printer);
286
+ } else {
287
+ GenerateDescriptorInitializationCodeForMutable(printer);
288
+ }
289
+ } else {
290
+ printer->Print(
291
+ "static {\n");
292
+ printer->Indent();
293
+
294
+ for (int i = 0; i < file_->message_type_count(); i++) {
295
+ message_generators_[i]->GenerateStaticVariableInitializers(printer);
296
+ }
297
+
298
+ printer->Outdent();
299
+ printer->Print(
300
+ "}\n");
301
+ }
302
+
303
+ printer->Print(
304
+ "\n"
305
+ "// @@protoc_insertion_point(outer_class_scope)\n");
306
+
307
+ printer->Outdent();
308
+ printer->Print("}\n");
309
+ }
310
+
311
+ void FileGenerator::GenerateDescriptorInitializationCodeForImmutable(
312
+ io::Printer* printer) {
313
+ printer->Print(
314
+ "public static com.google.protobuf.Descriptors.FileDescriptor\n"
315
+ " getDescriptor() {\n"
316
+ " return descriptor;\n"
317
+ "}\n"
318
+ "private static com.google.protobuf.Descriptors.FileDescriptor\n"
319
+ " descriptor;\n"
320
+ "static {\n");
321
+ printer->Indent();
322
+
323
+ SharedCodeGenerator shared_code_generator(file_);
324
+ shared_code_generator.GenerateDescriptors(printer);
325
+
326
+ for (int i = 0; i < file_->message_type_count(); i++) {
327
+ message_generators_[i]->GenerateStaticVariableInitializers(printer);
328
+ }
329
+ for (int i = 0; i < file_->extension_count(); i++) {
330
+ extension_generators_[i]->GenerateNonNestedInitializationCode(printer);
331
+ }
332
+
333
+ // Proto compiler builds a DescriptorPool, which holds all the descriptors to
334
+ // generate, when processing the ".proto" files. We call this DescriptorPool
335
+ // the parsed pool (a.k.a. file_->pool()).
336
+ //
337
+ // Note that when users try to extend the (.*)DescriptorProto in their
338
+ // ".proto" files, it does not affect the pre-built FileDescriptorProto class
339
+ // in proto compiler. When we put the descriptor data in the file_proto, those
340
+ // extensions become unknown fields.
341
+ //
342
+ // Now we need to find out all the extension value to the (.*)DescriptorProto
343
+ // in the file_proto message, and prepare an ExtensionRegistry to return.
344
+ //
345
+ // To find those extensions, we need to parse the data into a dynamic message
346
+ // of the FileDescriptor based on the builder-pool, then we can use
347
+ // reflections to find all extension fields
348
+ FileDescriptorProto file_proto;
349
+ file_->CopyTo(&file_proto);
350
+ string file_data;
351
+ file_proto.SerializeToString(&file_data);
352
+ vector<const FieldDescriptor*> extensions;
353
+ CollectExtensions(file_proto, *file_->pool(), &extensions, file_data);
354
+
355
+ if (extensions.size() > 0) {
356
+ // Must construct an ExtensionRegistry containing all existing extensions
357
+ // and use it to parse the descriptor data again to recognize extensions.
358
+ printer->Print(
359
+ "com.google.protobuf.ExtensionRegistry registry =\n"
360
+ " com.google.protobuf.ExtensionRegistry.newInstance();\n");
361
+ for (int i = 0; i < extensions.size(); i++) {
362
+ scoped_ptr<ExtensionGenerator> generator(
363
+ generator_factory_->NewExtensionGenerator(extensions[i]));
364
+ generator->GenerateRegistrationCode(printer);
365
+ }
366
+ printer->Print(
367
+ "com.google.protobuf.Descriptors.FileDescriptor\n"
368
+ " .internalUpdateFileDescriptor(descriptor, registry);\n");
369
+ }
370
+
371
+ // Force descriptor initialization of all dependencies.
372
+ for (int i = 0; i < file_->dependency_count(); i++) {
373
+ if (ShouldIncludeDependency(file_->dependency(i), true)) {
374
+ string dependency =
375
+ name_resolver_->GetImmutableClassName(file_->dependency(i));
376
+ printer->Print(
377
+ "$dependency$.getDescriptor();\n",
378
+ "dependency", dependency);
379
+ }
380
+ }
381
+
382
+ printer->Outdent();
383
+ printer->Print(
384
+ "}\n");
385
+ }
386
+
387
+ void FileGenerator::GenerateDescriptorInitializationCodeForMutable(io::Printer* printer) {
388
+ printer->Print(
389
+ "public static com.google.protobuf.Descriptors.FileDescriptor\n"
390
+ " getDescriptor() {\n"
391
+ " return descriptor;\n"
392
+ "}\n"
393
+ "private static com.google.protobuf.Descriptors.FileDescriptor\n"
394
+ " descriptor;\n"
395
+ "static {\n");
396
+ printer->Indent();
397
+
398
+ printer->Print(
399
+ "descriptor = $immutable_package$.$descriptor_classname$.descriptor;\n",
400
+ "immutable_package", FileJavaPackage(file_, true),
401
+ "descriptor_classname", name_resolver_->GetDescriptorClassName(file_));
402
+
403
+ for (int i = 0; i < file_->message_type_count(); i++) {
404
+ message_generators_[i]->GenerateStaticVariableInitializers(printer);
405
+ }
406
+ for (int i = 0; i < file_->extension_count(); i++) {
407
+ extension_generators_[i]->GenerateNonNestedInitializationCode(printer);
408
+ }
409
+
410
+ // Check if custom options exist. If any, try to load immutable classes since
411
+ // custom options are only represented with immutable messages.
412
+ FileDescriptorProto file_proto;
413
+ file_->CopyTo(&file_proto);
414
+ string file_data;
415
+ file_proto.SerializeToString(&file_data);
416
+ vector<const FieldDescriptor*> extensions;
417
+ CollectExtensions(file_proto, *file_->pool(), &extensions, file_data);
418
+
419
+ if (extensions.size() > 0) {
420
+ // Try to load immutable messages' outer class. Its initialization code
421
+ // will take care of interpreting custom options.
422
+ printer->Print(
423
+ "try {\n"
424
+ // Note that we have to load the immutable class dynamically here as
425
+ // we want the mutable code to be independent from the immutable code
426
+ // at compile time. It is required to implement dual-compile for
427
+ // mutable and immutable API in blaze.
428
+ " java.lang.Class immutableClass = java.lang.Class.forName(\n"
429
+ " \"$immutable_classname$\");\n"
430
+ "} catch (java.lang.ClassNotFoundException e) {\n"
431
+ // The immutable class can not be found. Custom options are left
432
+ // as unknown fields.
433
+ // TODO(xiaofeng): inform the user with a warning?
434
+ "}\n",
435
+ "immutable_classname", name_resolver_->GetImmutableClassName(file_));
436
+ }
437
+
438
+ // Force descriptor initialization of all dependencies.
439
+ for (int i = 0; i < file_->dependency_count(); i++) {
440
+ if (ShouldIncludeDependency(file_->dependency(i), false)) {
441
+ string dependency = name_resolver_->GetMutableClassName(
442
+ file_->dependency(i));
443
+ printer->Print(
444
+ "$dependency$.getDescriptor();\n",
445
+ "dependency", dependency);
446
+ }
447
+ }
448
+
449
+ printer->Outdent();
450
+ printer->Print(
451
+ "}\n");
452
+ }
453
+
454
+ template<typename GeneratorClass, typename DescriptorClass>
455
+ static void GenerateSibling(const string& package_dir,
456
+ const string& java_package,
457
+ const DescriptorClass* descriptor,
458
+ GeneratorContext* context,
459
+ vector<string>* file_list,
460
+ const string& name_suffix,
461
+ GeneratorClass* generator,
462
+ void (GeneratorClass::*pfn)(io::Printer* printer)) {
463
+ string filename = package_dir + descriptor->name() + name_suffix + ".java";
464
+ file_list->push_back(filename);
465
+
466
+ scoped_ptr<io::ZeroCopyOutputStream> output(context->Open(filename));
467
+ io::Printer printer(output.get(), '$');
468
+
469
+ printer.Print(
470
+ "// Generated by the protocol buffer compiler. DO NOT EDIT!\n"
471
+ "// source: $filename$\n"
472
+ "\n",
473
+ "filename", descriptor->file()->name());
474
+ if (!java_package.empty()) {
475
+ printer.Print(
476
+ "package $package$;\n"
477
+ "\n",
478
+ "package", java_package);
479
+ }
480
+
481
+ (generator->*pfn)(&printer);
482
+ }
483
+
484
+ void FileGenerator::GenerateSiblings(const string& package_dir,
485
+ GeneratorContext* context,
486
+ vector<string>* file_list) {
487
+ if (MultipleJavaFiles(file_, immutable_api_)) {
488
+ for (int i = 0; i < file_->enum_type_count(); i++) {
489
+ EnumGenerator generator(file_->enum_type(i), immutable_api_,
490
+ context_.get());
491
+ GenerateSibling<EnumGenerator>(package_dir, java_package_,
492
+ file_->enum_type(i),
493
+ context, file_list, "",
494
+ &generator,
495
+ &EnumGenerator::Generate);
496
+ }
497
+ for (int i = 0; i < file_->message_type_count(); i++) {
498
+ if (immutable_api_) {
499
+ GenerateSibling<MessageGenerator>(package_dir, java_package_,
500
+ file_->message_type(i),
501
+ context, file_list,
502
+ "OrBuilder",
503
+ message_generators_[i].get(),
504
+ &MessageGenerator::GenerateInterface);
505
+ }
506
+ GenerateSibling<MessageGenerator>(package_dir, java_package_,
507
+ file_->message_type(i),
508
+ context, file_list, "",
509
+ message_generators_[i].get(),
510
+ &MessageGenerator::Generate);
511
+ }
512
+ if (HasGenericServices(file_)) {
513
+ for (int i = 0; i < file_->service_count(); i++) {
514
+ scoped_ptr<ServiceGenerator> generator(
515
+ generator_factory_->NewServiceGenerator(file_->service(i)));
516
+ GenerateSibling<ServiceGenerator>(package_dir, java_package_,
517
+ file_->service(i),
518
+ context, file_list, "",
519
+ generator.get(),
520
+ &ServiceGenerator::Generate);
521
+ }
522
+ }
523
+ }
524
+ }
525
+
526
+ bool FileGenerator::ShouldIncludeDependency(
527
+ const FileDescriptor* descriptor, bool immutable_api) {
528
+ return true;
529
+ }
530
+
531
+ } // namespace java
532
+ } // namespace compiler
533
+ } // namespace protobuf
534
+ } // namespace google