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,99 @@
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_ENUM_H__
36
+ #define GOOGLE_PROTOBUF_COMPILER_JAVA_ENUM_H__
37
+
38
+ #include <string>
39
+ #include <vector>
40
+ #include <google/protobuf/descriptor.h>
41
+
42
+ namespace google {
43
+ namespace protobuf {
44
+ namespace compiler {
45
+ namespace java {
46
+ class Context; // context.h
47
+ class ClassNameResolver; // name_resolver.h
48
+ }
49
+ }
50
+ namespace io {
51
+ class Printer; // printer.h
52
+ }
53
+ }
54
+
55
+ namespace protobuf {
56
+ namespace compiler {
57
+ namespace java {
58
+
59
+ class EnumGenerator {
60
+ public:
61
+ explicit EnumGenerator(const EnumDescriptor* descriptor,
62
+ bool immutable_api,
63
+ Context* context);
64
+ ~EnumGenerator();
65
+
66
+ void Generate(io::Printer* printer);
67
+
68
+ private:
69
+ const EnumDescriptor* descriptor_;
70
+
71
+ // The proto language allows multiple enum constants to have the same numeric
72
+ // value. Java, however, does not allow multiple enum constants to be
73
+ // considered equivalent. We treat the first defined constant for any
74
+ // given numeric value as "canonical" and the rest as aliases of that
75
+ // canonical value.
76
+ vector<const EnumValueDescriptor*> canonical_values_;
77
+
78
+ struct Alias {
79
+ const EnumValueDescriptor* value;
80
+ const EnumValueDescriptor* canonical_value;
81
+ };
82
+ vector<Alias> aliases_;
83
+
84
+ bool immutable_api_;
85
+
86
+ Context* context_;
87
+ ClassNameResolver* name_resolver_;
88
+
89
+ bool CanUseEnumValues();
90
+
91
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumGenerator);
92
+ };
93
+
94
+ } // namespace java
95
+ } // namespace compiler
96
+ } // namespace protobuf
97
+
98
+ } // namespace google
99
+ #endif // GOOGLE_PROTOBUF_COMPILER_JAVA_ENUM_H__
@@ -0,0 +1,778 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ // Author: kenton@google.com (Kenton Varda)
32
+ // Based on original Protocol Buffers design by
33
+ // Sanjay Ghemawat, Jeff Dean, and others.
34
+
35
+ #include <map>
36
+ #include <string>
37
+
38
+ #include <google/protobuf/stubs/common.h>
39
+ #include <google/protobuf/compiler/java/java_context.h>
40
+ #include <google/protobuf/compiler/java/java_doc_comment.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_name_resolver.h>
44
+ #include <google/protobuf/io/printer.h>
45
+ #include <google/protobuf/wire_format.h>
46
+ #include <google/protobuf/stubs/strutil.h>
47
+
48
+ namespace google {
49
+ namespace protobuf {
50
+ namespace compiler {
51
+ namespace java {
52
+
53
+ namespace {
54
+
55
+ void SetEnumVariables(const FieldDescriptor* descriptor,
56
+ int messageBitIndex,
57
+ int builderBitIndex,
58
+ const FieldGeneratorInfo* info,
59
+ ClassNameResolver* name_resolver,
60
+ map<string, string>* variables) {
61
+ SetCommonFieldVariables(descriptor, info, variables);
62
+
63
+ (*variables)["type"] =
64
+ name_resolver->GetImmutableClassName(descriptor->enum_type());
65
+ (*variables)["mutable_type"] =
66
+ name_resolver->GetMutableClassName(descriptor->enum_type());
67
+ (*variables)["default"] = ImmutableDefaultValue(descriptor, name_resolver);
68
+ (*variables)["tag"] = SimpleItoa(internal::WireFormat::MakeTag(descriptor));
69
+ (*variables)["tag_size"] = SimpleItoa(
70
+ internal::WireFormat::TagSize(descriptor->number(), GetType(descriptor)));
71
+ // TODO(birdo): Add @deprecated javadoc when generating javadoc is supported
72
+ // by the proto compiler
73
+ (*variables)["deprecation"] = descriptor->options().deprecated()
74
+ ? "@java.lang.Deprecated " : "";
75
+ (*variables)["on_changed"] =
76
+ HasDescriptorMethods(descriptor->containing_type()) ? "onChanged();" : "";
77
+
78
+ if (SupportFieldPresence(descriptor->file())) {
79
+ // For singular messages and builders, one bit is used for the hasField bit.
80
+ (*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex);
81
+ (*variables)["get_has_field_bit_builder"] = GenerateGetBit(builderBitIndex);
82
+
83
+ // Note that these have a trailing ";".
84
+ (*variables)["set_has_field_bit_message"] =
85
+ GenerateSetBit(messageBitIndex) + ";";
86
+ (*variables)["set_has_field_bit_builder"] =
87
+ GenerateSetBit(builderBitIndex) + ";";
88
+ (*variables)["clear_has_field_bit_builder"] =
89
+ GenerateClearBit(builderBitIndex) + ";";
90
+
91
+ (*variables)["is_field_present_message"] = GenerateGetBit(messageBitIndex);
92
+ } else {
93
+ (*variables)["set_has_field_bit_message"] = "";
94
+ (*variables)["set_has_field_bit_builder"] = "";
95
+ (*variables)["clear_has_field_bit_builder"] = "";
96
+
97
+ (*variables)["is_field_present_message"] =
98
+ (*variables)["name"] + "_ != " + (*variables)["default"];
99
+ }
100
+
101
+ // For repated builders, one bit is used for whether the array is immutable.
102
+ (*variables)["get_mutable_bit_builder"] = GenerateGetBit(builderBitIndex);
103
+ (*variables)["set_mutable_bit_builder"] = GenerateSetBit(builderBitIndex);
104
+ (*variables)["clear_mutable_bit_builder"] = GenerateClearBit(builderBitIndex);
105
+
106
+ // For repeated fields, one bit is used for whether the array is immutable
107
+ // in the parsing constructor.
108
+ (*variables)["get_mutable_bit_parser"] =
109
+ GenerateGetBitMutableLocal(builderBitIndex);
110
+ (*variables)["set_mutable_bit_parser"] =
111
+ GenerateSetBitMutableLocal(builderBitIndex);
112
+
113
+ (*variables)["get_has_field_bit_from_local"] =
114
+ GenerateGetBitFromLocal(builderBitIndex);
115
+ (*variables)["set_has_field_bit_to_local"] =
116
+ GenerateSetBitToLocal(messageBitIndex);
117
+ }
118
+
119
+ } // namespace
120
+
121
+ // ===================================================================
122
+
123
+ ImmutableEnumFieldGenerator::
124
+ ImmutableEnumFieldGenerator(const FieldDescriptor* descriptor,
125
+ int messageBitIndex,
126
+ int builderBitIndex,
127
+ Context* context)
128
+ : descriptor_(descriptor), messageBitIndex_(messageBitIndex),
129
+ builderBitIndex_(builderBitIndex),
130
+ name_resolver_(context->GetNameResolver()) {
131
+ SetEnumVariables(descriptor, messageBitIndex, builderBitIndex,
132
+ context->GetFieldGeneratorInfo(descriptor),
133
+ name_resolver_, &variables_);
134
+ }
135
+
136
+ ImmutableEnumFieldGenerator::~ImmutableEnumFieldGenerator() {}
137
+
138
+ int ImmutableEnumFieldGenerator::GetNumBitsForMessage() const {
139
+ return 1;
140
+ }
141
+
142
+ int ImmutableEnumFieldGenerator::GetNumBitsForBuilder() const {
143
+ return 1;
144
+ }
145
+
146
+ void ImmutableEnumFieldGenerator::
147
+ GenerateInterfaceMembers(io::Printer* printer) const {
148
+ if (SupportFieldPresence(descriptor_->file())) {
149
+ WriteFieldDocComment(printer, descriptor_);
150
+ printer->Print(variables_,
151
+ "$deprecation$boolean has$capitalized_name$();\n");
152
+ }
153
+ WriteFieldDocComment(printer, descriptor_);
154
+ printer->Print(variables_,
155
+ "$deprecation$$type$ get$capitalized_name$();\n");
156
+ }
157
+
158
+ void ImmutableEnumFieldGenerator::
159
+ GenerateMembers(io::Printer* printer) const {
160
+ printer->Print(variables_,
161
+ "private $type$ $name$_;\n");
162
+ PrintExtraFieldInfo(variables_, printer);
163
+ if (SupportFieldPresence(descriptor_->file())) {
164
+ WriteFieldDocComment(printer, descriptor_);
165
+ printer->Print(variables_,
166
+ "$deprecation$public boolean has$capitalized_name$() {\n"
167
+ " return $get_has_field_bit_message$;\n"
168
+ "}\n");
169
+ }
170
+ WriteFieldDocComment(printer, descriptor_);
171
+ printer->Print(variables_,
172
+ "$deprecation$public $type$ get$capitalized_name$() {\n"
173
+ " return $name$_;\n"
174
+ "}\n");
175
+ }
176
+
177
+ void ImmutableEnumFieldGenerator::
178
+ GenerateBuilderMembers(io::Printer* printer) const {
179
+ printer->Print(variables_,
180
+ "private $type$ $name$_ = $default$;\n");
181
+ if (SupportFieldPresence(descriptor_->file())) {
182
+ WriteFieldDocComment(printer, descriptor_);
183
+ printer->Print(variables_,
184
+ "$deprecation$public boolean has$capitalized_name$() {\n"
185
+ " return $get_has_field_bit_builder$;\n"
186
+ "}\n");
187
+ }
188
+ WriteFieldDocComment(printer, descriptor_);
189
+ printer->Print(variables_,
190
+ "$deprecation$public $type$ get$capitalized_name$() {\n"
191
+ " return $name$_;\n"
192
+ "}\n");
193
+ WriteFieldDocComment(printer, descriptor_);
194
+ printer->Print(variables_,
195
+ "$deprecation$public Builder set$capitalized_name$($type$ value) {\n"
196
+ " if (value == null) {\n"
197
+ " throw new NullPointerException();\n"
198
+ " }\n"
199
+ " $set_has_field_bit_builder$\n"
200
+ " $name$_ = value;\n"
201
+ " $on_changed$\n"
202
+ " return this;\n"
203
+ "}\n");
204
+ WriteFieldDocComment(printer, descriptor_);
205
+ printer->Print(variables_,
206
+ "$deprecation$public Builder clear$capitalized_name$() {\n"
207
+ " $clear_has_field_bit_builder$\n"
208
+ " $name$_ = $default$;\n"
209
+ " $on_changed$\n"
210
+ " return this;\n"
211
+ "}\n");
212
+ }
213
+
214
+ void ImmutableEnumFieldGenerator::
215
+ GenerateFieldBuilderInitializationCode(io::Printer* printer) const {
216
+ // noop for enums
217
+ }
218
+
219
+ void ImmutableEnumFieldGenerator::
220
+ GenerateInitializationCode(io::Printer* printer) const {
221
+ printer->Print(variables_, "$name$_ = $default$;\n");
222
+ }
223
+
224
+ void ImmutableEnumFieldGenerator::
225
+ GenerateBuilderClearCode(io::Printer* printer) const {
226
+ printer->Print(variables_,
227
+ "$name$_ = $default$;\n"
228
+ "$clear_has_field_bit_builder$\n");
229
+ }
230
+
231
+ void ImmutableEnumFieldGenerator::
232
+ GenerateMergingCode(io::Printer* printer) const {
233
+ if (SupportFieldPresence(descriptor_->file())) {
234
+ printer->Print(variables_,
235
+ "if (other.has$capitalized_name$()) {\n"
236
+ " set$capitalized_name$(other.get$capitalized_name$());\n"
237
+ "}\n");
238
+ } else {
239
+ printer->Print(variables_,
240
+ "if (other.get$capitalized_name$() != $default$) {\n"
241
+ " set$capitalized_name$(other.get$capitalized_name$());\n"
242
+ "}\n");
243
+ }
244
+ }
245
+
246
+ void ImmutableEnumFieldGenerator::
247
+ GenerateBuildingCode(io::Printer* printer) const {
248
+ if (SupportFieldPresence(descriptor_->file())) {
249
+ printer->Print(variables_,
250
+ "if ($get_has_field_bit_from_local$) {\n"
251
+ " $set_has_field_bit_to_local$;\n"
252
+ "}\n");
253
+ }
254
+ printer->Print(variables_,
255
+ "result.$name$_ = $name$_;\n");
256
+ }
257
+
258
+ void ImmutableEnumFieldGenerator::
259
+ GenerateParsingCode(io::Printer* printer) const {
260
+ printer->Print(variables_,
261
+ "int rawValue = input.readEnum();\n"
262
+ "$type$ value = $type$.valueOf(rawValue);\n"
263
+ "if (value == null) {\n");
264
+ if (UseUnknownFieldSet(descriptor_->containing_type())) {
265
+ printer->Print(variables_,
266
+ " unknownFields.mergeVarintField($number$, rawValue);\n");
267
+ } else {
268
+ printer->Print(variables_,
269
+ " unknownFieldsCodedOutput.writeRawVarint32(tag);\n"
270
+ " unknownFieldsCodedOutput.writeRawVarint32(rawValue);\n");
271
+ }
272
+ printer->Print(variables_,
273
+ "} else {\n"
274
+ " $set_has_field_bit_message$\n"
275
+ " $name$_ = value;\n"
276
+ "}\n");
277
+ }
278
+
279
+ void ImmutableEnumFieldGenerator::
280
+ GenerateParsingDoneCode(io::Printer* printer) const {
281
+ // noop for enums
282
+ }
283
+
284
+ void ImmutableEnumFieldGenerator::
285
+ GenerateSerializationCode(io::Printer* printer) const {
286
+ printer->Print(variables_,
287
+ "if ($is_field_present_message$) {\n"
288
+ " output.writeEnum($number$, $name$_.getNumber());\n"
289
+ "}\n");
290
+ }
291
+
292
+ void ImmutableEnumFieldGenerator::
293
+ GenerateSerializedSizeCode(io::Printer* printer) const {
294
+ printer->Print(variables_,
295
+ "if ($is_field_present_message$) {\n"
296
+ " size += com.google.protobuf.CodedOutputStream\n"
297
+ " .computeEnumSize($number$, $name$_.getNumber());\n"
298
+ "}\n");
299
+ }
300
+
301
+ void ImmutableEnumFieldGenerator::
302
+ GenerateEqualsCode(io::Printer* printer) const {
303
+ printer->Print(variables_,
304
+ "result = result &&\n"
305
+ " (get$capitalized_name$() == other.get$capitalized_name$());\n");
306
+ }
307
+
308
+ void ImmutableEnumFieldGenerator::
309
+ GenerateHashCode(io::Printer* printer) const {
310
+ printer->Print(variables_,
311
+ "hash = (37 * hash) + $constant_name$;\n"
312
+ "hash = (53 * hash) + com.google.protobuf.Internal.hashEnum(\n"
313
+ " get$capitalized_name$());\n");
314
+ }
315
+
316
+ string ImmutableEnumFieldGenerator::GetBoxedType() const {
317
+ return name_resolver_->GetImmutableClassName(descriptor_->enum_type());
318
+ }
319
+
320
+ // ===================================================================
321
+
322
+ ImmutableEnumOneofFieldGenerator::
323
+ ImmutableEnumOneofFieldGenerator(const FieldDescriptor* descriptor,
324
+ int messageBitIndex,
325
+ int builderBitIndex,
326
+ Context* context)
327
+ : ImmutableEnumFieldGenerator(
328
+ descriptor, messageBitIndex, builderBitIndex, context) {
329
+ const OneofGeneratorInfo* info =
330
+ context->GetOneofGeneratorInfo(descriptor->containing_oneof());
331
+ SetCommonOneofVariables(descriptor, info, &variables_);
332
+ }
333
+
334
+ ImmutableEnumOneofFieldGenerator::
335
+ ~ImmutableEnumOneofFieldGenerator() {}
336
+
337
+ void ImmutableEnumOneofFieldGenerator::
338
+ GenerateMembers(io::Printer* printer) const {
339
+ PrintExtraFieldInfo(variables_, printer);
340
+ if (SupportFieldPresence(descriptor_->file())) {
341
+ WriteFieldDocComment(printer, descriptor_);
342
+ printer->Print(variables_,
343
+ "$deprecation$public boolean has$capitalized_name$() {\n"
344
+ " return $has_oneof_case_message$;\n"
345
+ "}\n");
346
+ }
347
+ WriteFieldDocComment(printer, descriptor_);
348
+ printer->Print(variables_,
349
+ "$deprecation$public $type$ get$capitalized_name$() {\n"
350
+ " if ($has_oneof_case_message$) {\n"
351
+ " return ($type$) $oneof_name$_;\n"
352
+ " }\n"
353
+ " return $default$;\n"
354
+ "}\n");
355
+ }
356
+
357
+ void ImmutableEnumOneofFieldGenerator::
358
+ GenerateBuilderMembers(io::Printer* printer) const {
359
+ if (SupportFieldPresence(descriptor_->file())) {
360
+ WriteFieldDocComment(printer, descriptor_);
361
+ printer->Print(variables_,
362
+ "$deprecation$public boolean has$capitalized_name$() {\n"
363
+ " return $has_oneof_case_message$;\n"
364
+ "}\n");
365
+ }
366
+ WriteFieldDocComment(printer, descriptor_);
367
+ printer->Print(variables_,
368
+ "$deprecation$public $type$ get$capitalized_name$() {\n"
369
+ " if ($has_oneof_case_message$) {\n"
370
+ " return ($type$) $oneof_name$_;\n"
371
+ " }\n"
372
+ " return $default$;\n"
373
+ "}\n");
374
+ WriteFieldDocComment(printer, descriptor_);
375
+ printer->Print(variables_,
376
+ "$deprecation$public Builder set$capitalized_name$($type$ value) {\n"
377
+ " if (value == null) {\n"
378
+ " throw new NullPointerException();\n"
379
+ " }\n"
380
+ " $set_oneof_case_message$;\n"
381
+ " $oneof_name$_ = value;\n"
382
+ " $on_changed$\n"
383
+ " return this;\n"
384
+ "}\n");
385
+ WriteFieldDocComment(printer, descriptor_);
386
+ printer->Print(variables_,
387
+ "$deprecation$public Builder clear$capitalized_name$() {\n"
388
+ " if ($has_oneof_case_message$) {\n"
389
+ " $clear_oneof_case_message$;\n"
390
+ " $oneof_name$_ = null;\n"
391
+ " $on_changed$\n"
392
+ " }\n"
393
+ " return this;\n"
394
+ "}\n");
395
+ }
396
+
397
+ void ImmutableEnumOneofFieldGenerator::
398
+ GenerateBuildingCode(io::Printer* printer) const {
399
+ printer->Print(variables_,
400
+ "if ($has_oneof_case_message$) {\n"
401
+ " result.$oneof_name$_ = $oneof_name$_;\n"
402
+ "}\n");
403
+ }
404
+
405
+ void ImmutableEnumOneofFieldGenerator::
406
+ GenerateMergingCode(io::Printer* printer) const {
407
+ printer->Print(variables_,
408
+ "set$capitalized_name$(other.get$capitalized_name$());\n");
409
+ }
410
+
411
+ void ImmutableEnumOneofFieldGenerator::
412
+ GenerateParsingCode(io::Printer* printer) const {
413
+ printer->Print(variables_,
414
+ "int rawValue = input.readEnum();\n"
415
+ "$type$ value = $type$.valueOf(rawValue);\n"
416
+ "if (value == null) {\n");
417
+ if (UseUnknownFieldSet(descriptor_->containing_type())) {
418
+ printer->Print(variables_,
419
+ " unknownFields.mergeVarintField($number$, rawValue);\n");
420
+ } else {
421
+ printer->Print(variables_,
422
+ " unknownFieldsCodedOutput.writeRawVarint32(tag);\n"
423
+ " unknownFieldsCodedOutput.writeRawVarint32(rawValue);\n");
424
+ }
425
+ printer->Print(variables_,
426
+ "} else {\n"
427
+ " $set_oneof_case_message$;\n"
428
+ " $oneof_name$_ = value;\n"
429
+ "}\n");
430
+ }
431
+
432
+ void ImmutableEnumOneofFieldGenerator::
433
+ GenerateSerializationCode(io::Printer* printer) const {
434
+ printer->Print(variables_,
435
+ "if ($has_oneof_case_message$) {\n"
436
+ " output.writeEnum($number$, (($type$) $oneof_name$_).getNumber());\n"
437
+ "}\n");
438
+ }
439
+
440
+ void ImmutableEnumOneofFieldGenerator::
441
+ GenerateSerializedSizeCode(io::Printer* printer) const {
442
+ printer->Print(variables_,
443
+ "if ($has_oneof_case_message$) {\n"
444
+ " size += com.google.protobuf.CodedOutputStream\n"
445
+ " .computeEnumSize($number$, (($type$) $oneof_name$_).getNumber());\n"
446
+ "}\n");
447
+ }
448
+
449
+ // ===================================================================
450
+
451
+ RepeatedImmutableEnumFieldGenerator::
452
+ RepeatedImmutableEnumFieldGenerator(const FieldDescriptor* descriptor,
453
+ int messageBitIndex,
454
+ int builderBitIndex,
455
+ Context* context)
456
+ : descriptor_(descriptor), messageBitIndex_(messageBitIndex),
457
+ builderBitIndex_(builderBitIndex), context_(context),
458
+ name_resolver_(context->GetNameResolver()) {
459
+ SetEnumVariables(descriptor, messageBitIndex, builderBitIndex,
460
+ context->GetFieldGeneratorInfo(descriptor),
461
+ name_resolver_, &variables_);
462
+ }
463
+
464
+ RepeatedImmutableEnumFieldGenerator::~RepeatedImmutableEnumFieldGenerator() {}
465
+
466
+ int RepeatedImmutableEnumFieldGenerator::GetNumBitsForMessage() const {
467
+ return 0;
468
+ }
469
+
470
+ int RepeatedImmutableEnumFieldGenerator::GetNumBitsForBuilder() const {
471
+ return 1;
472
+ }
473
+
474
+ void RepeatedImmutableEnumFieldGenerator::
475
+ GenerateInterfaceMembers(io::Printer* printer) const {
476
+ WriteFieldDocComment(printer, descriptor_);
477
+ printer->Print(variables_,
478
+ "$deprecation$java.util.List<$type$> get$capitalized_name$List();\n");
479
+ WriteFieldDocComment(printer, descriptor_);
480
+ printer->Print(variables_,
481
+ "$deprecation$int get$capitalized_name$Count();\n");
482
+ WriteFieldDocComment(printer, descriptor_);
483
+ printer->Print(variables_,
484
+ "$deprecation$$type$ get$capitalized_name$(int index);\n");
485
+ }
486
+
487
+ void RepeatedImmutableEnumFieldGenerator::
488
+ GenerateMembers(io::Printer* printer) const {
489
+ printer->Print(variables_,
490
+ "private java.util.List<$type$> $name$_;\n");
491
+ PrintExtraFieldInfo(variables_, printer);
492
+ WriteFieldDocComment(printer, descriptor_);
493
+ printer->Print(variables_,
494
+ "$deprecation$public java.util.List<$type$> get$capitalized_name$List() {\n"
495
+ " return $name$_;\n" // note: unmodifiable list
496
+ "}\n");
497
+ WriteFieldDocComment(printer, descriptor_);
498
+ printer->Print(variables_,
499
+ "$deprecation$public int get$capitalized_name$Count() {\n"
500
+ " return $name$_.size();\n"
501
+ "}\n");
502
+ WriteFieldDocComment(printer, descriptor_);
503
+ printer->Print(variables_,
504
+ "$deprecation$public $type$ get$capitalized_name$(int index) {\n"
505
+ " return $name$_.get(index);\n"
506
+ "}\n");
507
+
508
+ if (descriptor_->options().packed() &&
509
+ HasGeneratedMethods(descriptor_->containing_type())) {
510
+ printer->Print(variables_,
511
+ "private int $name$MemoizedSerializedSize;\n");
512
+ }
513
+ }
514
+
515
+ void RepeatedImmutableEnumFieldGenerator::
516
+ GenerateBuilderMembers(io::Printer* printer) const {
517
+ printer->Print(variables_,
518
+ // One field is the list and the other field keeps track of whether the
519
+ // list is immutable. If it's immutable, the invariant is that it must
520
+ // either an instance of Collections.emptyList() or it's an ArrayList
521
+ // wrapped in a Collections.unmodifiableList() wrapper and nobody else has
522
+ // a refererence to the underlying ArrayList. This invariant allows us to
523
+ // share instances of lists between protocol buffers avoiding expensive
524
+ // memory allocations. Note, immutable is a strong guarantee here -- not
525
+ // just that the list cannot be modified via the reference but that the
526
+ // list can never be modified.
527
+ "private java.util.List<$type$> $name$_ =\n"
528
+ " java.util.Collections.emptyList();\n"
529
+
530
+ "private void ensure$capitalized_name$IsMutable() {\n"
531
+ " if (!$get_mutable_bit_builder$) {\n"
532
+ " $name$_ = new java.util.ArrayList<$type$>($name$_);\n"
533
+ " $set_mutable_bit_builder$;\n"
534
+ " }\n"
535
+ "}\n");
536
+
537
+ WriteFieldDocComment(printer, descriptor_);
538
+ printer->Print(variables_,
539
+ // Note: We return an unmodifiable list because otherwise the caller
540
+ // could hold on to the returned list and modify it after the message
541
+ // has been built, thus mutating the message which is supposed to be
542
+ // immutable.
543
+ "$deprecation$public java.util.List<$type$> get$capitalized_name$List() {\n"
544
+ " return java.util.Collections.unmodifiableList($name$_);\n"
545
+ "}\n");
546
+ WriteFieldDocComment(printer, descriptor_);
547
+ printer->Print(variables_,
548
+ "$deprecation$public int get$capitalized_name$Count() {\n"
549
+ " return $name$_.size();\n"
550
+ "}\n");
551
+ WriteFieldDocComment(printer, descriptor_);
552
+ printer->Print(variables_,
553
+ "$deprecation$public $type$ get$capitalized_name$(int index) {\n"
554
+ " return $name$_.get(index);\n"
555
+ "}\n");
556
+ WriteFieldDocComment(printer, descriptor_);
557
+ printer->Print(variables_,
558
+ "$deprecation$public Builder set$capitalized_name$(\n"
559
+ " int index, $type$ value) {\n"
560
+ " if (value == null) {\n"
561
+ " throw new NullPointerException();\n"
562
+ " }\n"
563
+ " ensure$capitalized_name$IsMutable();\n"
564
+ " $name$_.set(index, value);\n"
565
+ " $on_changed$\n"
566
+ " return this;\n"
567
+ "}\n");
568
+ WriteFieldDocComment(printer, descriptor_);
569
+ printer->Print(variables_,
570
+ "$deprecation$public Builder add$capitalized_name$($type$ value) {\n"
571
+ " if (value == null) {\n"
572
+ " throw new NullPointerException();\n"
573
+ " }\n"
574
+ " ensure$capitalized_name$IsMutable();\n"
575
+ " $name$_.add(value);\n"
576
+ " $on_changed$\n"
577
+ " return this;\n"
578
+ "}\n");
579
+ WriteFieldDocComment(printer, descriptor_);
580
+ printer->Print(variables_,
581
+ "$deprecation$public Builder addAll$capitalized_name$(\n"
582
+ " java.lang.Iterable<? extends $type$> values) {\n"
583
+ " ensure$capitalized_name$IsMutable();\n"
584
+ " com.google.protobuf.AbstractMessageLite.Builder.addAll(\n"
585
+ " values, $name$_);\n"
586
+ " $on_changed$\n"
587
+ " return this;\n"
588
+ "}\n");
589
+ WriteFieldDocComment(printer, descriptor_);
590
+ printer->Print(variables_,
591
+ "$deprecation$public Builder clear$capitalized_name$() {\n"
592
+ " $name$_ = java.util.Collections.emptyList();\n"
593
+ " $clear_mutable_bit_builder$;\n"
594
+ " $on_changed$\n"
595
+ " return this;\n"
596
+ "}\n");
597
+ }
598
+
599
+ void RepeatedImmutableEnumFieldGenerator::
600
+ GenerateFieldBuilderInitializationCode(io::Printer* printer) const {
601
+ // noop for enums
602
+ }
603
+
604
+ void RepeatedImmutableEnumFieldGenerator::
605
+ GenerateInitializationCode(io::Printer* printer) const {
606
+ printer->Print(variables_, "$name$_ = java.util.Collections.emptyList();\n");
607
+ }
608
+
609
+ void RepeatedImmutableEnumFieldGenerator::
610
+ GenerateBuilderClearCode(io::Printer* printer) const {
611
+ printer->Print(variables_,
612
+ "$name$_ = java.util.Collections.emptyList();\n"
613
+ "$clear_mutable_bit_builder$;\n");
614
+ }
615
+
616
+ void RepeatedImmutableEnumFieldGenerator::
617
+ GenerateMergingCode(io::Printer* printer) const {
618
+ // The code below does two optimizations:
619
+ // 1. If the other list is empty, there's nothing to do. This ensures we
620
+ // don't allocate a new array if we already have an immutable one.
621
+ // 2. If the other list is non-empty and our current list is empty, we can
622
+ // reuse the other list which is guaranteed to be immutable.
623
+ printer->Print(variables_,
624
+ "if (!other.$name$_.isEmpty()) {\n"
625
+ " if ($name$_.isEmpty()) {\n"
626
+ " $name$_ = other.$name$_;\n"
627
+ " $clear_mutable_bit_builder$;\n"
628
+ " } else {\n"
629
+ " ensure$capitalized_name$IsMutable();\n"
630
+ " $name$_.addAll(other.$name$_);\n"
631
+ " }\n"
632
+ " $on_changed$\n"
633
+ "}\n");
634
+ }
635
+
636
+ void RepeatedImmutableEnumFieldGenerator::
637
+ GenerateBuildingCode(io::Printer* printer) const {
638
+ // The code below ensures that the result has an immutable list. If our
639
+ // list is immutable, we can just reuse it. If not, we make it immutable.
640
+ printer->Print(variables_,
641
+ "if ($get_mutable_bit_builder$) {\n"
642
+ " $name$_ = java.util.Collections.unmodifiableList($name$_);\n"
643
+ " $clear_mutable_bit_builder$;\n"
644
+ "}\n"
645
+ "result.$name$_ = $name$_;\n");
646
+ }
647
+
648
+ void RepeatedImmutableEnumFieldGenerator::
649
+ GenerateParsingCode(io::Printer* printer) const {
650
+ // Read and store the enum
651
+ printer->Print(variables_,
652
+ "int rawValue = input.readEnum();\n"
653
+ "$type$ value = $type$.valueOf(rawValue);\n"
654
+ "if (value == null) {\n");
655
+ if (UseUnknownFieldSet(descriptor_->containing_type())) {
656
+ printer->Print(variables_,
657
+ " unknownFields.mergeVarintField($number$, rawValue);\n");
658
+ } else {
659
+ printer->Print(variables_,
660
+ " unknownFieldsCodedOutput.writeRawVarint32(tag);\n"
661
+ " unknownFieldsCodedOutput.writeRawVarint32(rawValue);\n");
662
+ }
663
+ printer->Print(variables_,
664
+ " } else {\n"
665
+ " if (!$get_mutable_bit_parser$) {\n"
666
+ " $name$_ = new java.util.ArrayList<$type$>();\n"
667
+ " $set_mutable_bit_parser$;\n"
668
+ " }\n"
669
+ " $name$_.add(value);\n"
670
+ "}\n");
671
+ }
672
+
673
+ void RepeatedImmutableEnumFieldGenerator::
674
+ GenerateParsingCodeFromPacked(io::Printer* printer) const {
675
+ // Wrap GenerateParsingCode's contents with a while loop.
676
+
677
+ printer->Print(variables_,
678
+ "int length = input.readRawVarint32();\n"
679
+ "int oldLimit = input.pushLimit(length);\n"
680
+ "while(input.getBytesUntilLimit() > 0) {\n");
681
+ printer->Indent();
682
+
683
+ GenerateParsingCode(printer);
684
+
685
+ printer->Outdent();
686
+ printer->Print(variables_,
687
+ "}\n"
688
+ "input.popLimit(oldLimit);\n");
689
+ }
690
+
691
+ void RepeatedImmutableEnumFieldGenerator::
692
+ GenerateParsingDoneCode(io::Printer* printer) const {
693
+ printer->Print(variables_,
694
+ "if ($get_mutable_bit_parser$) {\n"
695
+ " $name$_ = java.util.Collections.unmodifiableList($name$_);\n"
696
+ "}\n");
697
+ }
698
+
699
+ void RepeatedImmutableEnumFieldGenerator::
700
+ GenerateSerializationCode(io::Printer* printer) const {
701
+ if (descriptor_->options().packed()) {
702
+ printer->Print(variables_,
703
+ "if (get$capitalized_name$List().size() > 0) {\n"
704
+ " output.writeRawVarint32($tag$);\n"
705
+ " output.writeRawVarint32($name$MemoizedSerializedSize);\n"
706
+ "}\n"
707
+ "for (int i = 0; i < $name$_.size(); i++) {\n"
708
+ " output.writeEnumNoTag($name$_.get(i).getNumber());\n"
709
+ "}\n");
710
+ } else {
711
+ printer->Print(variables_,
712
+ "for (int i = 0; i < $name$_.size(); i++) {\n"
713
+ " output.writeEnum($number$, $name$_.get(i).getNumber());\n"
714
+ "}\n");
715
+ }
716
+ }
717
+
718
+ void RepeatedImmutableEnumFieldGenerator::
719
+ GenerateSerializedSizeCode(io::Printer* printer) const {
720
+ printer->Print(variables_,
721
+ "{\n"
722
+ " int dataSize = 0;\n");
723
+ printer->Indent();
724
+
725
+ printer->Print(variables_,
726
+ "for (int i = 0; i < $name$_.size(); i++) {\n"
727
+ " dataSize += com.google.protobuf.CodedOutputStream\n"
728
+ " .computeEnumSizeNoTag($name$_.get(i).getNumber());\n"
729
+ "}\n");
730
+ printer->Print(
731
+ "size += dataSize;\n");
732
+ if (descriptor_->options().packed()) {
733
+ printer->Print(variables_,
734
+ "if (!get$capitalized_name$List().isEmpty()) {"
735
+ " size += $tag_size$;\n"
736
+ " size += com.google.protobuf.CodedOutputStream\n"
737
+ " .computeRawVarint32Size(dataSize);\n"
738
+ "}");
739
+ } else {
740
+ printer->Print(variables_,
741
+ "size += $tag_size$ * $name$_.size();\n");
742
+ }
743
+
744
+ // cache the data size for packed fields.
745
+ if (descriptor_->options().packed()) {
746
+ printer->Print(variables_,
747
+ "$name$MemoizedSerializedSize = dataSize;\n");
748
+ }
749
+
750
+ printer->Outdent();
751
+ printer->Print("}\n");
752
+ }
753
+
754
+ void RepeatedImmutableEnumFieldGenerator::
755
+ GenerateEqualsCode(io::Printer* printer) const {
756
+ printer->Print(variables_,
757
+ "result = result && get$capitalized_name$List()\n"
758
+ " .equals(other.get$capitalized_name$List());\n");
759
+ }
760
+
761
+ void RepeatedImmutableEnumFieldGenerator::
762
+ GenerateHashCode(io::Printer* printer) const {
763
+ printer->Print(variables_,
764
+ "if (get$capitalized_name$Count() > 0) {\n"
765
+ " hash = (37 * hash) + $constant_name$;\n"
766
+ " hash = (53 * hash) + com.google.protobuf.Internal.hashEnumList(\n"
767
+ " get$capitalized_name$List());\n"
768
+ "}\n");
769
+ }
770
+
771
+ string RepeatedImmutableEnumFieldGenerator::GetBoxedType() const {
772
+ return name_resolver_->GetImmutableClassName(descriptor_->enum_type());
773
+ }
774
+
775
+ } // namespace java
776
+ } // namespace compiler
777
+ } // namespace protobuf
778
+ } // namespace google