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,172 @@
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: anuraag@google.com (Anuraag Agrawal)
32
+ // Author: tibell@google.com (Johan Tibell)
33
+
34
+ #ifndef GOOGLE_PROTOBUF_PYTHON_CPP_REPEATED_COMPOSITE_CONTAINER_H__
35
+ #define GOOGLE_PROTOBUF_PYTHON_CPP_REPEATED_COMPOSITE_CONTAINER_H__
36
+
37
+ #include <Python.h>
38
+
39
+ #include <memory>
40
+ #ifndef _SHARED_PTR_H
41
+ #include <google/protobuf/stubs/shared_ptr.h>
42
+ #endif
43
+ #include <string>
44
+ #include <vector>
45
+
46
+
47
+ namespace google {
48
+ namespace protobuf {
49
+
50
+ class FieldDescriptor;
51
+ class Message;
52
+
53
+ using internal::shared_ptr;
54
+
55
+ namespace python {
56
+
57
+ struct CMessage;
58
+ struct CFieldDescriptor;
59
+
60
+ // A RepeatedCompositeContainer can be in one of two states: attached
61
+ // or released.
62
+ //
63
+ // When in the attached state all modifications to the container are
64
+ // done both on the 'message' and on the 'child_messages'
65
+ // list. In this state all Messages refered to by the children in
66
+ // 'child_messages' are owner by the 'owner'.
67
+ //
68
+ // When in the released state 'message', 'owner', 'parent', and
69
+ // 'parent_field' are NULL.
70
+ typedef struct RepeatedCompositeContainer {
71
+ PyObject_HEAD;
72
+
73
+ // This is the top-level C++ Message object that owns the whole
74
+ // proto tree. Every Python RepeatedCompositeContainer holds a
75
+ // reference to it in order to keep it alive as long as there's a
76
+ // Python object that references any part of the tree.
77
+ shared_ptr<Message> owner;
78
+
79
+ // Weak reference to parent object. May be NULL. Used to make sure
80
+ // the parent is writable before modifying the
81
+ // RepeatedCompositeContainer.
82
+ CMessage* parent;
83
+
84
+ // A descriptor used to modify the underlying 'message'.
85
+ CFieldDescriptor* parent_field;
86
+
87
+ // Pointer to the C++ Message that contains this container. The
88
+ // RepeatedCompositeContainer does not own this pointer.
89
+ //
90
+ // If NULL, this message has been released from its parent (by
91
+ // calling Clear() or ClearField() on the parent.
92
+ Message* message;
93
+
94
+ // A callable that is used to create new child messages.
95
+ PyObject* subclass_init;
96
+
97
+ // A list of child messages.
98
+ PyObject* child_messages;
99
+ } RepeatedCompositeContainer;
100
+
101
+ extern PyTypeObject RepeatedCompositeContainer_Type;
102
+
103
+ namespace repeated_composite_container {
104
+
105
+ // Returns the number of items in this repeated composite container.
106
+ static Py_ssize_t Length(RepeatedCompositeContainer* self);
107
+
108
+ // Appends a new CMessage to the container and returns it. The
109
+ // CMessage is initialized using the content of kwargs.
110
+ //
111
+ // Returns a new reference if successful; returns NULL and sets an
112
+ // exception if unsuccessful.
113
+ PyObject* Add(RepeatedCompositeContainer* self,
114
+ PyObject* args,
115
+ PyObject* kwargs);
116
+
117
+ // Appends all the CMessages in the input iterator to the container.
118
+ //
119
+ // Returns None if successful; returns NULL and sets an exception if
120
+ // unsuccessful.
121
+ PyObject* Extend(RepeatedCompositeContainer* self, PyObject* value);
122
+
123
+ // Appends a new message to the container for each message in the
124
+ // input iterator, merging each data element in. Equivalent to extend.
125
+ //
126
+ // Returns None if successful; returns NULL and sets an exception if
127
+ // unsuccessful.
128
+ PyObject* MergeFrom(RepeatedCompositeContainer* self, PyObject* other);
129
+
130
+ // Accesses messages in the container.
131
+ //
132
+ // Returns a new reference to the message for an integer parameter.
133
+ // Returns a new reference to a list of messages for a slice.
134
+ PyObject* Subscript(RepeatedCompositeContainer* self, PyObject* slice);
135
+
136
+ // Deletes items from the container (cannot be used for assignment).
137
+ //
138
+ // Returns 0 on success, -1 on failure.
139
+ int AssignSubscript(RepeatedCompositeContainer* self,
140
+ PyObject* slice,
141
+ PyObject* value);
142
+
143
+ // Releases the messages in the container to the given message.
144
+ //
145
+ // Returns 0 on success, -1 on failure.
146
+ int ReleaseToMessage(RepeatedCompositeContainer* self,
147
+ google::protobuf::Message* new_message);
148
+
149
+ // Releases the messages in the container to a new message.
150
+ //
151
+ // Returns 0 on success, -1 on failure.
152
+ int Release(RepeatedCompositeContainer* self);
153
+
154
+ // Returns 0 on success, -1 on failure.
155
+ int SetOwner(RepeatedCompositeContainer* self,
156
+ const shared_ptr<Message>& new_owner);
157
+
158
+ // Removes the last element of the repeated message field 'field' on
159
+ // the Message 'message', and transfers the ownership of the released
160
+ // Message to 'cmessage'.
161
+ //
162
+ // Corresponds to reflection api method ReleaseMessage.
163
+ void ReleaseLastTo(const FieldDescriptor* field,
164
+ Message* message,
165
+ CMessage* cmessage);
166
+
167
+ } // namespace repeated_composite_container
168
+ } // namespace python
169
+ } // namespace protobuf
170
+
171
+ } // namespace google
172
+ #endif // GOOGLE_PROTOBUF_PYTHON_CPP_REPEATED_COMPOSITE_CONTAINER_H__
@@ -0,0 +1,825 @@
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: anuraag@google.com (Anuraag Agrawal)
32
+ // Author: tibell@google.com (Johan Tibell)
33
+
34
+ #include <google/protobuf/pyext/repeated_scalar_container.h>
35
+
36
+ #include <memory>
37
+ #ifndef _SHARED_PTR_H
38
+ #include <google/protobuf/stubs/shared_ptr.h>
39
+ #endif
40
+
41
+ #include <google/protobuf/stubs/common.h>
42
+ #include <google/protobuf/descriptor.h>
43
+ #include <google/protobuf/dynamic_message.h>
44
+ #include <google/protobuf/message.h>
45
+ #include <google/protobuf/pyext/descriptor.h>
46
+ #include <google/protobuf/pyext/message.h>
47
+ #include <google/protobuf/pyext/scoped_pyobject_ptr.h>
48
+
49
+ #if PY_MAJOR_VERSION >= 3
50
+ #define PyInt_FromLong PyLong_FromLong
51
+ #if PY_VERSION_HEX < 0x03030000
52
+ #error "Python 3.0 - 3.2 are not supported."
53
+ #else
54
+ #define PyString_AsString(ob) \
55
+ (PyUnicode_Check(ob)? PyUnicode_AsUTF8(ob): PyBytes_AS_STRING(ob))
56
+ #endif
57
+ #endif
58
+
59
+ namespace google {
60
+ namespace protobuf {
61
+ namespace python {
62
+
63
+ extern google::protobuf::DynamicMessageFactory* global_message_factory;
64
+
65
+ namespace repeated_scalar_container {
66
+
67
+ static int InternalAssignRepeatedField(
68
+ RepeatedScalarContainer* self, PyObject* list) {
69
+ self->message->GetReflection()->ClearField(self->message,
70
+ self->parent_field->descriptor);
71
+ for (Py_ssize_t i = 0; i < PyList_GET_SIZE(list); ++i) {
72
+ PyObject* value = PyList_GET_ITEM(list, i);
73
+ if (Append(self, value) == NULL) {
74
+ return -1;
75
+ }
76
+ }
77
+ return 0;
78
+ }
79
+
80
+ static Py_ssize_t Len(RepeatedScalarContainer* self) {
81
+ google::protobuf::Message* message = self->message;
82
+ return message->GetReflection()->FieldSize(*message,
83
+ self->parent_field->descriptor);
84
+ }
85
+
86
+ static int AssignItem(RepeatedScalarContainer* self,
87
+ Py_ssize_t index,
88
+ PyObject* arg) {
89
+ cmessage::AssureWritable(self->parent);
90
+ google::protobuf::Message* message = self->message;
91
+ const google::protobuf::FieldDescriptor* field_descriptor =
92
+ self->parent_field->descriptor;
93
+ if (!FIELD_BELONGS_TO_MESSAGE(field_descriptor, message)) {
94
+ PyErr_SetString(
95
+ PyExc_KeyError, "Field does not belong to message!");
96
+ return -1;
97
+ }
98
+
99
+ const google::protobuf::Reflection* reflection = message->GetReflection();
100
+ int field_size = reflection->FieldSize(*message, field_descriptor);
101
+ if (index < 0) {
102
+ index = field_size + index;
103
+ }
104
+ if (index < 0 || index >= field_size) {
105
+ PyErr_Format(PyExc_IndexError,
106
+ "list assignment index (%d) out of range",
107
+ static_cast<int>(index));
108
+ return -1;
109
+ }
110
+
111
+ if (arg == NULL) {
112
+ ScopedPyObjectPtr py_index(PyLong_FromLong(index));
113
+ return cmessage::InternalDeleteRepeatedField(message, field_descriptor,
114
+ py_index, NULL);
115
+ }
116
+
117
+ if (PySequence_Check(arg) && !(PyBytes_Check(arg) || PyUnicode_Check(arg))) {
118
+ PyErr_SetString(PyExc_TypeError, "Value must be scalar");
119
+ return -1;
120
+ }
121
+
122
+ switch (field_descriptor->cpp_type()) {
123
+ case google::protobuf::FieldDescriptor::CPPTYPE_INT32: {
124
+ GOOGLE_CHECK_GET_INT32(arg, value, -1);
125
+ reflection->SetRepeatedInt32(message, field_descriptor, index, value);
126
+ break;
127
+ }
128
+ case google::protobuf::FieldDescriptor::CPPTYPE_INT64: {
129
+ GOOGLE_CHECK_GET_INT64(arg, value, -1);
130
+ reflection->SetRepeatedInt64(message, field_descriptor, index, value);
131
+ break;
132
+ }
133
+ case google::protobuf::FieldDescriptor::CPPTYPE_UINT32: {
134
+ GOOGLE_CHECK_GET_UINT32(arg, value, -1);
135
+ reflection->SetRepeatedUInt32(message, field_descriptor, index, value);
136
+ break;
137
+ }
138
+ case google::protobuf::FieldDescriptor::CPPTYPE_UINT64: {
139
+ GOOGLE_CHECK_GET_UINT64(arg, value, -1);
140
+ reflection->SetRepeatedUInt64(message, field_descriptor, index, value);
141
+ break;
142
+ }
143
+ case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT: {
144
+ GOOGLE_CHECK_GET_FLOAT(arg, value, -1);
145
+ reflection->SetRepeatedFloat(message, field_descriptor, index, value);
146
+ break;
147
+ }
148
+ case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE: {
149
+ GOOGLE_CHECK_GET_DOUBLE(arg, value, -1);
150
+ reflection->SetRepeatedDouble(message, field_descriptor, index, value);
151
+ break;
152
+ }
153
+ case google::protobuf::FieldDescriptor::CPPTYPE_BOOL: {
154
+ GOOGLE_CHECK_GET_BOOL(arg, value, -1);
155
+ reflection->SetRepeatedBool(message, field_descriptor, index, value);
156
+ break;
157
+ }
158
+ case google::protobuf::FieldDescriptor::CPPTYPE_STRING: {
159
+ if (!CheckAndSetString(
160
+ arg, message, field_descriptor, reflection, false, index)) {
161
+ return -1;
162
+ }
163
+ break;
164
+ }
165
+ case google::protobuf::FieldDescriptor::CPPTYPE_ENUM: {
166
+ GOOGLE_CHECK_GET_INT32(arg, value, -1);
167
+ const google::protobuf::EnumDescriptor* enum_descriptor =
168
+ field_descriptor->enum_type();
169
+ const google::protobuf::EnumValueDescriptor* enum_value =
170
+ enum_descriptor->FindValueByNumber(value);
171
+ if (enum_value != NULL) {
172
+ reflection->SetRepeatedEnum(message, field_descriptor, index,
173
+ enum_value);
174
+ } else {
175
+ ScopedPyObjectPtr s(PyObject_Str(arg));
176
+ if (s != NULL) {
177
+ PyErr_Format(PyExc_ValueError, "Unknown enum value: %s",
178
+ PyString_AsString(s.get()));
179
+ }
180
+ return -1;
181
+ }
182
+ break;
183
+ }
184
+ default:
185
+ PyErr_Format(
186
+ PyExc_SystemError, "Adding value to a field of unknown type %d",
187
+ field_descriptor->cpp_type());
188
+ return -1;
189
+ }
190
+ return 0;
191
+ }
192
+
193
+ static PyObject* Item(RepeatedScalarContainer* self, Py_ssize_t index) {
194
+ google::protobuf::Message* message = self->message;
195
+ const google::protobuf::FieldDescriptor* field_descriptor =
196
+ self->parent_field->descriptor;
197
+ const google::protobuf::Reflection* reflection = message->GetReflection();
198
+
199
+ int field_size = reflection->FieldSize(*message, field_descriptor);
200
+ if (index < 0) {
201
+ index = field_size + index;
202
+ }
203
+ if (index < 0 || index >= field_size) {
204
+ PyErr_Format(PyExc_IndexError,
205
+ "list assignment index (%d) out of range",
206
+ static_cast<int>(index));
207
+ return NULL;
208
+ }
209
+
210
+ PyObject* result = NULL;
211
+ switch (field_descriptor->cpp_type()) {
212
+ case google::protobuf::FieldDescriptor::CPPTYPE_INT32: {
213
+ int32 value = reflection->GetRepeatedInt32(
214
+ *message, field_descriptor, index);
215
+ result = PyInt_FromLong(value);
216
+ break;
217
+ }
218
+ case google::protobuf::FieldDescriptor::CPPTYPE_INT64: {
219
+ int64 value = reflection->GetRepeatedInt64(
220
+ *message, field_descriptor, index);
221
+ result = PyLong_FromLongLong(value);
222
+ break;
223
+ }
224
+ case google::protobuf::FieldDescriptor::CPPTYPE_UINT32: {
225
+ uint32 value = reflection->GetRepeatedUInt32(
226
+ *message, field_descriptor, index);
227
+ result = PyLong_FromLongLong(value);
228
+ break;
229
+ }
230
+ case google::protobuf::FieldDescriptor::CPPTYPE_UINT64: {
231
+ uint64 value = reflection->GetRepeatedUInt64(
232
+ *message, field_descriptor, index);
233
+ result = PyLong_FromUnsignedLongLong(value);
234
+ break;
235
+ }
236
+ case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT: {
237
+ float value = reflection->GetRepeatedFloat(
238
+ *message, field_descriptor, index);
239
+ result = PyFloat_FromDouble(value);
240
+ break;
241
+ }
242
+ case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE: {
243
+ double value = reflection->GetRepeatedDouble(
244
+ *message, field_descriptor, index);
245
+ result = PyFloat_FromDouble(value);
246
+ break;
247
+ }
248
+ case google::protobuf::FieldDescriptor::CPPTYPE_BOOL: {
249
+ bool value = reflection->GetRepeatedBool(
250
+ *message, field_descriptor, index);
251
+ result = PyBool_FromLong(value ? 1 : 0);
252
+ break;
253
+ }
254
+ case google::protobuf::FieldDescriptor::CPPTYPE_ENUM: {
255
+ const google::protobuf::EnumValueDescriptor* enum_value =
256
+ message->GetReflection()->GetRepeatedEnum(
257
+ *message, field_descriptor, index);
258
+ result = PyInt_FromLong(enum_value->number());
259
+ break;
260
+ }
261
+ case google::protobuf::FieldDescriptor::CPPTYPE_STRING: {
262
+ string value = reflection->GetRepeatedString(
263
+ *message, field_descriptor, index);
264
+ result = ToStringObject(field_descriptor, value);
265
+ break;
266
+ }
267
+ case google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE: {
268
+ PyObject* py_cmsg = PyObject_CallObject(reinterpret_cast<PyObject*>(
269
+ &CMessage_Type), NULL);
270
+ if (py_cmsg == NULL) {
271
+ return NULL;
272
+ }
273
+ CMessage* cmsg = reinterpret_cast<CMessage*>(py_cmsg);
274
+ const google::protobuf::Message& msg = reflection->GetRepeatedMessage(
275
+ *message, field_descriptor, index);
276
+ cmsg->owner = self->owner;
277
+ cmsg->parent = self->parent;
278
+ cmsg->message = const_cast<google::protobuf::Message*>(&msg);
279
+ cmsg->read_only = false;
280
+ result = reinterpret_cast<PyObject*>(py_cmsg);
281
+ break;
282
+ }
283
+ default:
284
+ PyErr_Format(
285
+ PyExc_SystemError,
286
+ "Getting value from a repeated field of unknown type %d",
287
+ field_descriptor->cpp_type());
288
+ }
289
+
290
+ return result;
291
+ }
292
+
293
+ static PyObject* Subscript(RepeatedScalarContainer* self, PyObject* slice) {
294
+ Py_ssize_t from;
295
+ Py_ssize_t to;
296
+ Py_ssize_t step;
297
+ Py_ssize_t length;
298
+ Py_ssize_t slicelength;
299
+ bool return_list = false;
300
+ #if PY_MAJOR_VERSION < 3
301
+ if (PyInt_Check(slice)) {
302
+ from = to = PyInt_AsLong(slice);
303
+ } else // NOLINT
304
+ #endif
305
+ if (PyLong_Check(slice)) {
306
+ from = to = PyLong_AsLong(slice);
307
+ } else if (PySlice_Check(slice)) {
308
+ length = Len(self);
309
+ #if PY_MAJOR_VERSION >= 3
310
+ if (PySlice_GetIndicesEx(slice,
311
+ #else
312
+ if (PySlice_GetIndicesEx(reinterpret_cast<PySliceObject*>(slice),
313
+ #endif
314
+ length, &from, &to, &step, &slicelength) == -1) {
315
+ return NULL;
316
+ }
317
+ return_list = true;
318
+ } else {
319
+ PyErr_SetString(PyExc_TypeError, "list indices must be integers");
320
+ return NULL;
321
+ }
322
+
323
+ if (!return_list) {
324
+ return Item(self, from);
325
+ }
326
+
327
+ PyObject* list = PyList_New(0);
328
+ if (list == NULL) {
329
+ return NULL;
330
+ }
331
+ if (from <= to) {
332
+ if (step < 0) {
333
+ return list;
334
+ }
335
+ for (Py_ssize_t index = from; index < to; index += step) {
336
+ if (index < 0 || index >= length) {
337
+ break;
338
+ }
339
+ ScopedPyObjectPtr s(Item(self, index));
340
+ PyList_Append(list, s);
341
+ }
342
+ } else {
343
+ if (step > 0) {
344
+ return list;
345
+ }
346
+ for (Py_ssize_t index = from; index > to; index += step) {
347
+ if (index < 0 || index >= length) {
348
+ break;
349
+ }
350
+ ScopedPyObjectPtr s(Item(self, index));
351
+ PyList_Append(list, s);
352
+ }
353
+ }
354
+ return list;
355
+ }
356
+
357
+ PyObject* Append(RepeatedScalarContainer* self, PyObject* item) {
358
+ cmessage::AssureWritable(self->parent);
359
+ google::protobuf::Message* message = self->message;
360
+ const google::protobuf::FieldDescriptor* field_descriptor =
361
+ self->parent_field->descriptor;
362
+
363
+ if (!FIELD_BELONGS_TO_MESSAGE(field_descriptor, message)) {
364
+ PyErr_SetString(
365
+ PyExc_KeyError, "Field does not belong to message!");
366
+ return NULL;
367
+ }
368
+
369
+ const google::protobuf::Reflection* reflection = message->GetReflection();
370
+ switch (field_descriptor->cpp_type()) {
371
+ case google::protobuf::FieldDescriptor::CPPTYPE_INT32: {
372
+ GOOGLE_CHECK_GET_INT32(item, value, NULL);
373
+ reflection->AddInt32(message, field_descriptor, value);
374
+ break;
375
+ }
376
+ case google::protobuf::FieldDescriptor::CPPTYPE_INT64: {
377
+ GOOGLE_CHECK_GET_INT64(item, value, NULL);
378
+ reflection->AddInt64(message, field_descriptor, value);
379
+ break;
380
+ }
381
+ case google::protobuf::FieldDescriptor::CPPTYPE_UINT32: {
382
+ GOOGLE_CHECK_GET_UINT32(item, value, NULL);
383
+ reflection->AddUInt32(message, field_descriptor, value);
384
+ break;
385
+ }
386
+ case google::protobuf::FieldDescriptor::CPPTYPE_UINT64: {
387
+ GOOGLE_CHECK_GET_UINT64(item, value, NULL);
388
+ reflection->AddUInt64(message, field_descriptor, value);
389
+ break;
390
+ }
391
+ case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT: {
392
+ GOOGLE_CHECK_GET_FLOAT(item, value, NULL);
393
+ reflection->AddFloat(message, field_descriptor, value);
394
+ break;
395
+ }
396
+ case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE: {
397
+ GOOGLE_CHECK_GET_DOUBLE(item, value, NULL);
398
+ reflection->AddDouble(message, field_descriptor, value);
399
+ break;
400
+ }
401
+ case google::protobuf::FieldDescriptor::CPPTYPE_BOOL: {
402
+ GOOGLE_CHECK_GET_BOOL(item, value, NULL);
403
+ reflection->AddBool(message, field_descriptor, value);
404
+ break;
405
+ }
406
+ case google::protobuf::FieldDescriptor::CPPTYPE_STRING: {
407
+ if (!CheckAndSetString(
408
+ item, message, field_descriptor, reflection, true, -1)) {
409
+ return NULL;
410
+ }
411
+ break;
412
+ }
413
+ case google::protobuf::FieldDescriptor::CPPTYPE_ENUM: {
414
+ GOOGLE_CHECK_GET_INT32(item, value, NULL);
415
+ const google::protobuf::EnumDescriptor* enum_descriptor =
416
+ field_descriptor->enum_type();
417
+ const google::protobuf::EnumValueDescriptor* enum_value =
418
+ enum_descriptor->FindValueByNumber(value);
419
+ if (enum_value != NULL) {
420
+ reflection->AddEnum(message, field_descriptor, enum_value);
421
+ } else {
422
+ ScopedPyObjectPtr s(PyObject_Str(item));
423
+ if (s != NULL) {
424
+ PyErr_Format(PyExc_ValueError, "Unknown enum value: %s",
425
+ PyString_AsString(s.get()));
426
+ }
427
+ return NULL;
428
+ }
429
+ break;
430
+ }
431
+ default:
432
+ PyErr_Format(
433
+ PyExc_SystemError, "Adding value to a field of unknown type %d",
434
+ field_descriptor->cpp_type());
435
+ return NULL;
436
+ }
437
+
438
+ Py_RETURN_NONE;
439
+ }
440
+
441
+ static int AssSubscript(RepeatedScalarContainer* self,
442
+ PyObject* slice,
443
+ PyObject* value) {
444
+ Py_ssize_t from;
445
+ Py_ssize_t to;
446
+ Py_ssize_t step;
447
+ Py_ssize_t length;
448
+ Py_ssize_t slicelength;
449
+ bool create_list = false;
450
+
451
+ cmessage::AssureWritable(self->parent);
452
+ google::protobuf::Message* message = self->message;
453
+ const google::protobuf::FieldDescriptor* field_descriptor =
454
+ self->parent_field->descriptor;
455
+
456
+ #if PY_MAJOR_VERSION < 3
457
+ if (PyInt_Check(slice)) {
458
+ from = to = PyInt_AsLong(slice);
459
+ } else
460
+ #endif
461
+ if (PyLong_Check(slice)) {
462
+ from = to = PyLong_AsLong(slice);
463
+ } else if (PySlice_Check(slice)) {
464
+ const google::protobuf::Reflection* reflection = message->GetReflection();
465
+ length = reflection->FieldSize(*message, field_descriptor);
466
+ #if PY_MAJOR_VERSION >= 3
467
+ if (PySlice_GetIndicesEx(slice,
468
+ #else
469
+ if (PySlice_GetIndicesEx(reinterpret_cast<PySliceObject*>(slice),
470
+ #endif
471
+ length, &from, &to, &step, &slicelength) == -1) {
472
+ return -1;
473
+ }
474
+ create_list = true;
475
+ } else {
476
+ PyErr_SetString(PyExc_TypeError, "list indices must be integers");
477
+ return -1;
478
+ }
479
+
480
+ if (value == NULL) {
481
+ return cmessage::InternalDeleteRepeatedField(
482
+ message, field_descriptor, slice, NULL);
483
+ }
484
+
485
+ if (!create_list) {
486
+ return AssignItem(self, from, value);
487
+ }
488
+
489
+ ScopedPyObjectPtr full_slice(PySlice_New(NULL, NULL, NULL));
490
+ if (full_slice == NULL) {
491
+ return -1;
492
+ }
493
+ ScopedPyObjectPtr new_list(Subscript(self, full_slice));
494
+ if (new_list == NULL) {
495
+ return -1;
496
+ }
497
+ if (PySequence_SetSlice(new_list, from, to, value) < 0) {
498
+ return -1;
499
+ }
500
+
501
+ return InternalAssignRepeatedField(self, new_list);
502
+ }
503
+
504
+ PyObject* Extend(RepeatedScalarContainer* self, PyObject* value) {
505
+ cmessage::AssureWritable(self->parent);
506
+ if (PyObject_Not(value)) {
507
+ Py_RETURN_NONE;
508
+ }
509
+ ScopedPyObjectPtr iter(PyObject_GetIter(value));
510
+ if (iter == NULL) {
511
+ PyErr_SetString(PyExc_TypeError, "Value must be iterable");
512
+ return NULL;
513
+ }
514
+ ScopedPyObjectPtr next;
515
+ while ((next.reset(PyIter_Next(iter))) != NULL) {
516
+ if (Append(self, next) == NULL) {
517
+ return NULL;
518
+ }
519
+ }
520
+ if (PyErr_Occurred()) {
521
+ return NULL;
522
+ }
523
+ Py_RETURN_NONE;
524
+ }
525
+
526
+ static PyObject* Insert(RepeatedScalarContainer* self, PyObject* args) {
527
+ Py_ssize_t index;
528
+ PyObject* value;
529
+ if (!PyArg_ParseTuple(args, "lO", &index, &value)) {
530
+ return NULL;
531
+ }
532
+ ScopedPyObjectPtr full_slice(PySlice_New(NULL, NULL, NULL));
533
+ ScopedPyObjectPtr new_list(Subscript(self, full_slice));
534
+ if (PyList_Insert(new_list, index, value) < 0) {
535
+ return NULL;
536
+ }
537
+ int ret = InternalAssignRepeatedField(self, new_list);
538
+ if (ret < 0) {
539
+ return NULL;
540
+ }
541
+ Py_RETURN_NONE;
542
+ }
543
+
544
+ static PyObject* Remove(RepeatedScalarContainer* self, PyObject* value) {
545
+ Py_ssize_t match_index = -1;
546
+ for (Py_ssize_t i = 0; i < Len(self); ++i) {
547
+ ScopedPyObjectPtr elem(Item(self, i));
548
+ if (PyObject_RichCompareBool(elem, value, Py_EQ)) {
549
+ match_index = i;
550
+ break;
551
+ }
552
+ }
553
+ if (match_index == -1) {
554
+ PyErr_SetString(PyExc_ValueError, "remove(x): x not in container");
555
+ return NULL;
556
+ }
557
+ if (AssignItem(self, match_index, NULL) < 0) {
558
+ return NULL;
559
+ }
560
+ Py_RETURN_NONE;
561
+ }
562
+
563
+ static PyObject* RichCompare(RepeatedScalarContainer* self,
564
+ PyObject* other,
565
+ int opid) {
566
+ if (opid != Py_EQ && opid != Py_NE) {
567
+ Py_INCREF(Py_NotImplemented);
568
+ return Py_NotImplemented;
569
+ }
570
+
571
+ // Copy the contents of this repeated scalar container, and other if it is
572
+ // also a repeated scalar container, into Python lists so we can delegate
573
+ // to the list's compare method.
574
+
575
+ ScopedPyObjectPtr full_slice(PySlice_New(NULL, NULL, NULL));
576
+ if (full_slice == NULL) {
577
+ return NULL;
578
+ }
579
+
580
+ ScopedPyObjectPtr other_list_deleter;
581
+ if (PyObject_TypeCheck(other, &RepeatedScalarContainer_Type)) {
582
+ other_list_deleter.reset(Subscript(
583
+ reinterpret_cast<RepeatedScalarContainer*>(other), full_slice));
584
+ other = other_list_deleter.get();
585
+ }
586
+
587
+ ScopedPyObjectPtr list(Subscript(self, full_slice));
588
+ if (list == NULL) {
589
+ return NULL;
590
+ }
591
+ return PyObject_RichCompare(list, other, opid);
592
+ }
593
+
594
+ PyObject* Reduce(RepeatedScalarContainer* unused_self) {
595
+ PyErr_Format(
596
+ PickleError_class,
597
+ "can't pickle repeated message fields, convert to list first");
598
+ return NULL;
599
+ }
600
+
601
+ static PyObject* Sort(RepeatedScalarContainer* self,
602
+ PyObject* args,
603
+ PyObject* kwds) {
604
+ // Support the old sort_function argument for backwards
605
+ // compatibility.
606
+ if (kwds != NULL) {
607
+ PyObject* sort_func = PyDict_GetItemString(kwds, "sort_function");
608
+ if (sort_func != NULL) {
609
+ // Must set before deleting as sort_func is a borrowed reference
610
+ // and kwds might be the only thing keeping it alive.
611
+ if (PyDict_SetItemString(kwds, "cmp", sort_func) == -1)
612
+ return NULL;
613
+ if (PyDict_DelItemString(kwds, "sort_function") == -1)
614
+ return NULL;
615
+ }
616
+ }
617
+
618
+ ScopedPyObjectPtr full_slice(PySlice_New(NULL, NULL, NULL));
619
+ if (full_slice == NULL) {
620
+ return NULL;
621
+ }
622
+ ScopedPyObjectPtr list(Subscript(self, full_slice));
623
+ if (list == NULL) {
624
+ return NULL;
625
+ }
626
+ ScopedPyObjectPtr m(PyObject_GetAttrString(list, "sort"));
627
+ if (m == NULL) {
628
+ return NULL;
629
+ }
630
+ ScopedPyObjectPtr res(PyObject_Call(m, args, kwds));
631
+ if (res == NULL) {
632
+ return NULL;
633
+ }
634
+ int ret = InternalAssignRepeatedField(self, list);
635
+ if (ret < 0) {
636
+ return NULL;
637
+ }
638
+ Py_RETURN_NONE;
639
+ }
640
+
641
+ static int Init(RepeatedScalarContainer* self,
642
+ PyObject* args,
643
+ PyObject* kwargs) {
644
+ PyObject* py_parent;
645
+ PyObject* py_parent_field;
646
+ if (!PyArg_UnpackTuple(args, "__init__()", 2, 2, &py_parent,
647
+ &py_parent_field)) {
648
+ return -1;
649
+ }
650
+
651
+ if (!PyObject_TypeCheck(py_parent, &CMessage_Type)) {
652
+ PyErr_Format(PyExc_TypeError,
653
+ "expect %s, but got %s",
654
+ CMessage_Type.tp_name,
655
+ Py_TYPE(py_parent)->tp_name);
656
+ return -1;
657
+ }
658
+
659
+ if (!PyObject_TypeCheck(py_parent_field, &CFieldDescriptor_Type)) {
660
+ PyErr_Format(PyExc_TypeError,
661
+ "expect %s, but got %s",
662
+ CFieldDescriptor_Type.tp_name,
663
+ Py_TYPE(py_parent_field)->tp_name);
664
+ return -1;
665
+ }
666
+
667
+ CMessage* cmessage = reinterpret_cast<CMessage*>(py_parent);
668
+ CFieldDescriptor* cdescriptor = reinterpret_cast<CFieldDescriptor*>(
669
+ py_parent_field);
670
+
671
+ if (!FIELD_BELONGS_TO_MESSAGE(cdescriptor->descriptor, cmessage->message)) {
672
+ PyErr_SetString(
673
+ PyExc_KeyError, "Field does not belong to message!");
674
+ return -1;
675
+ }
676
+
677
+ self->message = cmessage->message;
678
+ self->parent = cmessage;
679
+ self->parent_field = cdescriptor;
680
+ self->owner = cmessage->owner;
681
+ return 0;
682
+ }
683
+
684
+ // Initializes the underlying Message object of "to" so it becomes a new parent
685
+ // repeated scalar, and copies all the values from "from" to it. A child scalar
686
+ // container can be released by passing it as both from and to (e.g. making it
687
+ // the recipient of the new parent message and copying the values from itself).
688
+ static int InitializeAndCopyToParentContainer(
689
+ RepeatedScalarContainer* from,
690
+ RepeatedScalarContainer* to) {
691
+ ScopedPyObjectPtr full_slice(PySlice_New(NULL, NULL, NULL));
692
+ if (full_slice == NULL) {
693
+ return -1;
694
+ }
695
+ ScopedPyObjectPtr values(Subscript(from, full_slice));
696
+ if (values == NULL) {
697
+ return -1;
698
+ }
699
+ google::protobuf::Message* new_message = global_message_factory->GetPrototype(
700
+ from->message->GetDescriptor())->New();
701
+ to->parent = NULL;
702
+ // TODO(anuraag): Document why it's OK to hang on to parent_field,
703
+ // even though it's a weak reference. It ought to be enough to
704
+ // hold on to the FieldDescriptor only.
705
+ to->parent_field = from->parent_field;
706
+ to->message = new_message;
707
+ to->owner.reset(new_message);
708
+ if (InternalAssignRepeatedField(to, values) < 0) {
709
+ return -1;
710
+ }
711
+ return 0;
712
+ }
713
+
714
+ int Release(RepeatedScalarContainer* self) {
715
+ return InitializeAndCopyToParentContainer(self, self);
716
+ }
717
+
718
+ PyObject* DeepCopy(RepeatedScalarContainer* self, PyObject* arg) {
719
+ ScopedPyObjectPtr init_args(
720
+ PyTuple_Pack(2, self->parent, self->parent_field));
721
+ PyObject* clone = PyObject_CallObject(
722
+ reinterpret_cast<PyObject*>(&RepeatedScalarContainer_Type), init_args);
723
+ if (clone == NULL) {
724
+ return NULL;
725
+ }
726
+ if (!PyObject_TypeCheck(clone, &RepeatedScalarContainer_Type)) {
727
+ Py_DECREF(clone);
728
+ return NULL;
729
+ }
730
+ if (InitializeAndCopyToParentContainer(
731
+ self, reinterpret_cast<RepeatedScalarContainer*>(clone)) < 0) {
732
+ Py_DECREF(clone);
733
+ return NULL;
734
+ }
735
+ return clone;
736
+ }
737
+
738
+ static void Dealloc(RepeatedScalarContainer* self) {
739
+ self->owner.reset();
740
+ Py_TYPE(self)->tp_free(reinterpret_cast<PyObject*>(self));
741
+ }
742
+
743
+ void SetOwner(RepeatedScalarContainer* self,
744
+ const shared_ptr<Message>& new_owner) {
745
+ self->owner = new_owner;
746
+ }
747
+
748
+ static PySequenceMethods SqMethods = {
749
+ (lenfunc)Len, /* sq_length */
750
+ 0, /* sq_concat */
751
+ 0, /* sq_repeat */
752
+ (ssizeargfunc)Item, /* sq_item */
753
+ 0, /* sq_slice */
754
+ (ssizeobjargproc)AssignItem /* sq_ass_item */
755
+ };
756
+
757
+ static PyMappingMethods MpMethods = {
758
+ (lenfunc)Len, /* mp_length */
759
+ (binaryfunc)Subscript, /* mp_subscript */
760
+ (objobjargproc)AssSubscript, /* mp_ass_subscript */
761
+ };
762
+
763
+ static PyMethodDef Methods[] = {
764
+ { "__deepcopy__", (PyCFunction)DeepCopy, METH_VARARGS,
765
+ "Makes a deep copy of the class." },
766
+ { "__reduce__", (PyCFunction)Reduce, METH_NOARGS,
767
+ "Outputs picklable representation of the repeated field." },
768
+ { "append", (PyCFunction)Append, METH_O,
769
+ "Appends an object to the repeated container." },
770
+ { "extend", (PyCFunction)Extend, METH_O,
771
+ "Appends objects to the repeated container." },
772
+ { "insert", (PyCFunction)Insert, METH_VARARGS,
773
+ "Appends objects to the repeated container." },
774
+ { "remove", (PyCFunction)Remove, METH_O,
775
+ "Removes an object from the repeated container." },
776
+ { "sort", (PyCFunction)Sort, METH_VARARGS | METH_KEYWORDS,
777
+ "Sorts the repeated container."},
778
+ { NULL, NULL }
779
+ };
780
+
781
+ } // namespace repeated_scalar_container
782
+
783
+ PyTypeObject RepeatedScalarContainer_Type = {
784
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
785
+ "google.protobuf.internal."
786
+ "cpp._message.RepeatedScalarContainer", // tp_name
787
+ sizeof(RepeatedScalarContainer), // tp_basicsize
788
+ 0, // tp_itemsize
789
+ (destructor)repeated_scalar_container::Dealloc, // tp_dealloc
790
+ 0, // tp_print
791
+ 0, // tp_getattr
792
+ 0, // tp_setattr
793
+ 0, // tp_compare
794
+ 0, // tp_repr
795
+ 0, // tp_as_number
796
+ &repeated_scalar_container::SqMethods, // tp_as_sequence
797
+ &repeated_scalar_container::MpMethods, // tp_as_mapping
798
+ 0, // tp_hash
799
+ 0, // tp_call
800
+ 0, // tp_str
801
+ 0, // tp_getattro
802
+ 0, // tp_setattro
803
+ 0, // tp_as_buffer
804
+ Py_TPFLAGS_DEFAULT, // tp_flags
805
+ "A Repeated scalar container", // tp_doc
806
+ 0, // tp_traverse
807
+ 0, // tp_clear
808
+ (richcmpfunc)repeated_scalar_container::RichCompare, // tp_richcompare
809
+ 0, // tp_weaklistoffset
810
+ 0, // tp_iter
811
+ 0, // tp_iternext
812
+ repeated_scalar_container::Methods, // tp_methods
813
+ 0, // tp_members
814
+ 0, // tp_getset
815
+ 0, // tp_base
816
+ 0, // tp_dict
817
+ 0, // tp_descr_get
818
+ 0, // tp_descr_set
819
+ 0, // tp_dictoffset
820
+ (initproc)repeated_scalar_container::Init, // tp_init
821
+ };
822
+
823
+ } // namespace python
824
+ } // namespace protobuf
825
+ } // namespace google