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,734 @@
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
+ // Contains methods defined in extension_set.h which cannot be part of the
36
+ // lite library because they use descriptors or reflection.
37
+
38
+ #include <google/protobuf/io/zero_copy_stream_impl_lite.h>
39
+ #include <google/protobuf/descriptor.h>
40
+ #include <google/protobuf/extension_set.h>
41
+ #include <google/protobuf/message.h>
42
+ #include <google/protobuf/repeated_field.h>
43
+ #include <google/protobuf/wire_format.h>
44
+ #include <google/protobuf/wire_format_lite_inl.h>
45
+
46
+ namespace google {
47
+
48
+ namespace protobuf {
49
+ namespace internal {
50
+
51
+ // A FieldSkipper used to store unknown MessageSet fields into UnknownFieldSet.
52
+ class MessageSetFieldSkipper
53
+ : public UnknownFieldSetFieldSkipper {
54
+ public:
55
+ explicit MessageSetFieldSkipper(UnknownFieldSet* unknown_fields)
56
+ : UnknownFieldSetFieldSkipper(unknown_fields) {}
57
+ virtual ~MessageSetFieldSkipper() {}
58
+
59
+ virtual bool SkipMessageSetField(io::CodedInputStream* input,
60
+ int field_number);
61
+ };
62
+ bool MessageSetFieldSkipper::SkipMessageSetField(
63
+ io::CodedInputStream* input, int field_number) {
64
+ uint32 length;
65
+ if (!input->ReadVarint32(&length)) return false;
66
+ if (unknown_fields_ == NULL) {
67
+ return input->Skip(length);
68
+ } else {
69
+ return input->ReadString(
70
+ unknown_fields_->AddLengthDelimited(field_number), length);
71
+ }
72
+ }
73
+
74
+
75
+ // Implementation of ExtensionFinder which finds extensions in a given
76
+ // DescriptorPool, using the given MessageFactory to construct sub-objects.
77
+ // This class is implemented in extension_set_heavy.cc.
78
+ class DescriptorPoolExtensionFinder : public ExtensionFinder {
79
+ public:
80
+ DescriptorPoolExtensionFinder(const DescriptorPool* pool,
81
+ MessageFactory* factory,
82
+ const Descriptor* containing_type)
83
+ : pool_(pool), factory_(factory), containing_type_(containing_type) {}
84
+ virtual ~DescriptorPoolExtensionFinder() {}
85
+
86
+ virtual bool Find(int number, ExtensionInfo* output);
87
+
88
+ private:
89
+ const DescriptorPool* pool_;
90
+ MessageFactory* factory_;
91
+ const Descriptor* containing_type_;
92
+ };
93
+
94
+ void ExtensionSet::AppendToList(const Descriptor* containing_type,
95
+ const DescriptorPool* pool,
96
+ vector<const FieldDescriptor*>* output) const {
97
+ for (map<int, Extension>::const_iterator iter = extensions_.begin();
98
+ iter != extensions_.end(); ++iter) {
99
+ bool has = false;
100
+ if (iter->second.is_repeated) {
101
+ has = iter->second.GetSize() > 0;
102
+ } else {
103
+ has = !iter->second.is_cleared;
104
+ }
105
+
106
+ if (has) {
107
+ // TODO(kenton): Looking up each field by number is somewhat unfortunate.
108
+ // Is there a better way? The problem is that descriptors are lazily-
109
+ // initialized, so they might not even be constructed until
110
+ // AppendToList() is called.
111
+
112
+ if (iter->second.descriptor == NULL) {
113
+ output->push_back(pool->FindExtensionByNumber(
114
+ containing_type, iter->first));
115
+ } else {
116
+ output->push_back(iter->second.descriptor);
117
+ }
118
+ }
119
+ }
120
+ }
121
+
122
+ inline FieldDescriptor::Type real_type(FieldType type) {
123
+ GOOGLE_DCHECK(type > 0 && type <= FieldDescriptor::MAX_TYPE);
124
+ return static_cast<FieldDescriptor::Type>(type);
125
+ }
126
+
127
+ inline FieldDescriptor::CppType cpp_type(FieldType type) {
128
+ return FieldDescriptor::TypeToCppType(
129
+ static_cast<FieldDescriptor::Type>(type));
130
+ }
131
+
132
+ inline WireFormatLite::FieldType field_type(FieldType type) {
133
+ GOOGLE_DCHECK(type > 0 && type <= WireFormatLite::MAX_FIELD_TYPE);
134
+ return static_cast<WireFormatLite::FieldType>(type);
135
+ }
136
+
137
+ #define GOOGLE_DCHECK_TYPE(EXTENSION, LABEL, CPPTYPE) \
138
+ GOOGLE_DCHECK_EQ((EXTENSION).is_repeated ? FieldDescriptor::LABEL_REPEATED \
139
+ : FieldDescriptor::LABEL_OPTIONAL, \
140
+ FieldDescriptor::LABEL_##LABEL); \
141
+ GOOGLE_DCHECK_EQ(cpp_type((EXTENSION).type), FieldDescriptor::CPPTYPE_##CPPTYPE)
142
+
143
+ const MessageLite& ExtensionSet::GetMessage(int number,
144
+ const Descriptor* message_type,
145
+ MessageFactory* factory) const {
146
+ map<int, Extension>::const_iterator iter = extensions_.find(number);
147
+ if (iter == extensions_.end() || iter->second.is_cleared) {
148
+ // Not present. Return the default value.
149
+ return *factory->GetPrototype(message_type);
150
+ } else {
151
+ GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE);
152
+ if (iter->second.is_lazy) {
153
+ return iter->second.lazymessage_value->GetMessage(
154
+ *factory->GetPrototype(message_type));
155
+ } else {
156
+ return *iter->second.message_value;
157
+ }
158
+ }
159
+ }
160
+
161
+ MessageLite* ExtensionSet::MutableMessage(const FieldDescriptor* descriptor,
162
+ MessageFactory* factory) {
163
+ Extension* extension;
164
+ if (MaybeNewExtension(descriptor->number(), descriptor, &extension)) {
165
+ extension->type = descriptor->type();
166
+ GOOGLE_DCHECK_EQ(cpp_type(extension->type), FieldDescriptor::CPPTYPE_MESSAGE);
167
+ extension->is_repeated = false;
168
+ extension->is_packed = false;
169
+ const MessageLite* prototype =
170
+ factory->GetPrototype(descriptor->message_type());
171
+ extension->is_lazy = false;
172
+ extension->message_value = prototype->New();
173
+ extension->is_cleared = false;
174
+ return extension->message_value;
175
+ } else {
176
+ GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, MESSAGE);
177
+ extension->is_cleared = false;
178
+ if (extension->is_lazy) {
179
+ return extension->lazymessage_value->MutableMessage(
180
+ *factory->GetPrototype(descriptor->message_type()));
181
+ } else {
182
+ return extension->message_value;
183
+ }
184
+ }
185
+ }
186
+
187
+ MessageLite* ExtensionSet::ReleaseMessage(const FieldDescriptor* descriptor,
188
+ MessageFactory* factory) {
189
+ map<int, Extension>::iterator iter = extensions_.find(descriptor->number());
190
+ if (iter == extensions_.end()) {
191
+ // Not present. Return NULL.
192
+ return NULL;
193
+ } else {
194
+ GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE);
195
+ MessageLite* ret = NULL;
196
+ if (iter->second.is_lazy) {
197
+ ret = iter->second.lazymessage_value->ReleaseMessage(
198
+ *factory->GetPrototype(descriptor->message_type()));
199
+ delete iter->second.lazymessage_value;
200
+ } else {
201
+ ret = iter->second.message_value;
202
+ }
203
+ extensions_.erase(descriptor->number());
204
+ return ret;
205
+ }
206
+ }
207
+
208
+ MessageLite* ExtensionSet::AddMessage(const FieldDescriptor* descriptor,
209
+ MessageFactory* factory) {
210
+ Extension* extension;
211
+ if (MaybeNewExtension(descriptor->number(), descriptor, &extension)) {
212
+ extension->type = descriptor->type();
213
+ GOOGLE_DCHECK_EQ(cpp_type(extension->type), FieldDescriptor::CPPTYPE_MESSAGE);
214
+ extension->is_repeated = true;
215
+ extension->repeated_message_value =
216
+ new RepeatedPtrField<MessageLite>();
217
+ } else {
218
+ GOOGLE_DCHECK_TYPE(*extension, REPEATED, MESSAGE);
219
+ }
220
+
221
+ // RepeatedPtrField<Message> does not know how to Add() since it cannot
222
+ // allocate an abstract object, so we have to be tricky.
223
+ MessageLite* result = extension->repeated_message_value
224
+ ->AddFromCleared<GenericTypeHandler<MessageLite> >();
225
+ if (result == NULL) {
226
+ const MessageLite* prototype;
227
+ if (extension->repeated_message_value->size() == 0) {
228
+ prototype = factory->GetPrototype(descriptor->message_type());
229
+ GOOGLE_CHECK(prototype != NULL);
230
+ } else {
231
+ prototype = &extension->repeated_message_value->Get(0);
232
+ }
233
+ result = prototype->New();
234
+ extension->repeated_message_value->AddAllocated(result);
235
+ }
236
+ return result;
237
+ }
238
+
239
+ static bool ValidateEnumUsingDescriptor(const void* arg, int number) {
240
+ return reinterpret_cast<const EnumDescriptor*>(arg)
241
+ ->FindValueByNumber(number) != NULL;
242
+ }
243
+
244
+ bool DescriptorPoolExtensionFinder::Find(int number, ExtensionInfo* output) {
245
+ const FieldDescriptor* extension =
246
+ pool_->FindExtensionByNumber(containing_type_, number);
247
+ if (extension == NULL) {
248
+ return false;
249
+ } else {
250
+ output->type = extension->type();
251
+ output->is_repeated = extension->is_repeated();
252
+ output->is_packed = extension->options().packed();
253
+ output->descriptor = extension;
254
+ if (extension->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
255
+ output->message_prototype =
256
+ factory_->GetPrototype(extension->message_type());
257
+ GOOGLE_CHECK(output->message_prototype != NULL)
258
+ << "Extension factory's GetPrototype() returned NULL for extension: "
259
+ << extension->full_name();
260
+ } else if (extension->cpp_type() == FieldDescriptor::CPPTYPE_ENUM) {
261
+ output->enum_validity_check.func = ValidateEnumUsingDescriptor;
262
+ output->enum_validity_check.arg = extension->enum_type();
263
+ }
264
+
265
+ return true;
266
+ }
267
+ }
268
+
269
+ bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input,
270
+ const Message* containing_type,
271
+ UnknownFieldSet* unknown_fields) {
272
+ UnknownFieldSetFieldSkipper skipper(unknown_fields);
273
+ if (input->GetExtensionPool() == NULL) {
274
+ GeneratedExtensionFinder finder(containing_type);
275
+ return ParseField(tag, input, &finder, &skipper);
276
+ } else {
277
+ DescriptorPoolExtensionFinder finder(input->GetExtensionPool(),
278
+ input->GetExtensionFactory(),
279
+ containing_type->GetDescriptor());
280
+ return ParseField(tag, input, &finder, &skipper);
281
+ }
282
+ }
283
+
284
+ bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input,
285
+ const Message* containing_type,
286
+ UnknownFieldSet* unknown_fields) {
287
+ MessageSetFieldSkipper skipper(unknown_fields);
288
+ if (input->GetExtensionPool() == NULL) {
289
+ GeneratedExtensionFinder finder(containing_type);
290
+ return ParseMessageSet(input, &finder, &skipper);
291
+ } else {
292
+ DescriptorPoolExtensionFinder finder(input->GetExtensionPool(),
293
+ input->GetExtensionFactory(),
294
+ containing_type->GetDescriptor());
295
+ return ParseMessageSet(input, &finder, &skipper);
296
+ }
297
+ }
298
+
299
+ int ExtensionSet::SpaceUsedExcludingSelf() const {
300
+ int total_size =
301
+ extensions_.size() * sizeof(map<int, Extension>::value_type);
302
+ for (map<int, Extension>::const_iterator iter = extensions_.begin(),
303
+ end = extensions_.end();
304
+ iter != end;
305
+ ++iter) {
306
+ total_size += iter->second.SpaceUsedExcludingSelf();
307
+ }
308
+ return total_size;
309
+ }
310
+
311
+ inline int ExtensionSet::RepeatedMessage_SpaceUsedExcludingSelf(
312
+ RepeatedPtrFieldBase* field) {
313
+ return field->SpaceUsedExcludingSelf<GenericTypeHandler<Message> >();
314
+ }
315
+
316
+ int ExtensionSet::Extension::SpaceUsedExcludingSelf() const {
317
+ int total_size = 0;
318
+ if (is_repeated) {
319
+ switch (cpp_type(type)) {
320
+ #define HANDLE_TYPE(UPPERCASE, LOWERCASE) \
321
+ case FieldDescriptor::CPPTYPE_##UPPERCASE: \
322
+ total_size += sizeof(*repeated_##LOWERCASE##_value) + \
323
+ repeated_##LOWERCASE##_value->SpaceUsedExcludingSelf();\
324
+ break
325
+
326
+ HANDLE_TYPE( INT32, int32);
327
+ HANDLE_TYPE( INT64, int64);
328
+ HANDLE_TYPE( UINT32, uint32);
329
+ HANDLE_TYPE( UINT64, uint64);
330
+ HANDLE_TYPE( FLOAT, float);
331
+ HANDLE_TYPE( DOUBLE, double);
332
+ HANDLE_TYPE( BOOL, bool);
333
+ HANDLE_TYPE( ENUM, enum);
334
+ HANDLE_TYPE( STRING, string);
335
+ #undef HANDLE_TYPE
336
+
337
+ case FieldDescriptor::CPPTYPE_MESSAGE:
338
+ // repeated_message_value is actually a RepeatedPtrField<MessageLite>,
339
+ // but MessageLite has no SpaceUsed(), so we must directly call
340
+ // RepeatedPtrFieldBase::SpaceUsedExcludingSelf() with a different type
341
+ // handler.
342
+ total_size += sizeof(*repeated_message_value) +
343
+ RepeatedMessage_SpaceUsedExcludingSelf(repeated_message_value);
344
+ break;
345
+ }
346
+ } else {
347
+ switch (cpp_type(type)) {
348
+ case FieldDescriptor::CPPTYPE_STRING:
349
+ total_size += sizeof(*string_value) +
350
+ StringSpaceUsedExcludingSelf(*string_value);
351
+ break;
352
+ case FieldDescriptor::CPPTYPE_MESSAGE:
353
+ if (is_lazy) {
354
+ total_size += lazymessage_value->SpaceUsed();
355
+ } else {
356
+ total_size += down_cast<Message*>(message_value)->SpaceUsed();
357
+ }
358
+ break;
359
+ default:
360
+ // No extra storage costs for primitive types.
361
+ break;
362
+ }
363
+ }
364
+ return total_size;
365
+ }
366
+
367
+ // The Serialize*ToArray methods are only needed in the heavy library, as
368
+ // the lite library only generates SerializeWithCachedSizes.
369
+ uint8* ExtensionSet::SerializeWithCachedSizesToArray(
370
+ int start_field_number, int end_field_number,
371
+ uint8* target) const {
372
+ map<int, Extension>::const_iterator iter;
373
+ for (iter = extensions_.lower_bound(start_field_number);
374
+ iter != extensions_.end() && iter->first < end_field_number;
375
+ ++iter) {
376
+ target = iter->second.SerializeFieldWithCachedSizesToArray(iter->first,
377
+ target);
378
+ }
379
+ return target;
380
+ }
381
+
382
+ uint8* ExtensionSet::SerializeMessageSetWithCachedSizesToArray(
383
+ uint8* target) const {
384
+ map<int, Extension>::const_iterator iter;
385
+ for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) {
386
+ target = iter->second.SerializeMessageSetItemWithCachedSizesToArray(
387
+ iter->first, target);
388
+ }
389
+ return target;
390
+ }
391
+
392
+ uint8* ExtensionSet::Extension::SerializeFieldWithCachedSizesToArray(
393
+ int number, uint8* target) const {
394
+ if (is_repeated) {
395
+ if (is_packed) {
396
+ if (cached_size == 0) return target;
397
+
398
+ target = WireFormatLite::WriteTagToArray(number,
399
+ WireFormatLite::WIRETYPE_LENGTH_DELIMITED, target);
400
+ target = WireFormatLite::WriteInt32NoTagToArray(cached_size, target);
401
+
402
+ switch (real_type(type)) {
403
+ #define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \
404
+ case FieldDescriptor::TYPE_##UPPERCASE: \
405
+ for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \
406
+ target = WireFormatLite::Write##CAMELCASE##NoTagToArray( \
407
+ repeated_##LOWERCASE##_value->Get(i), target); \
408
+ } \
409
+ break
410
+
411
+ HANDLE_TYPE( INT32, Int32, int32);
412
+ HANDLE_TYPE( INT64, Int64, int64);
413
+ HANDLE_TYPE( UINT32, UInt32, uint32);
414
+ HANDLE_TYPE( UINT64, UInt64, uint64);
415
+ HANDLE_TYPE( SINT32, SInt32, int32);
416
+ HANDLE_TYPE( SINT64, SInt64, int64);
417
+ HANDLE_TYPE( FIXED32, Fixed32, uint32);
418
+ HANDLE_TYPE( FIXED64, Fixed64, uint64);
419
+ HANDLE_TYPE(SFIXED32, SFixed32, int32);
420
+ HANDLE_TYPE(SFIXED64, SFixed64, int64);
421
+ HANDLE_TYPE( FLOAT, Float, float);
422
+ HANDLE_TYPE( DOUBLE, Double, double);
423
+ HANDLE_TYPE( BOOL, Bool, bool);
424
+ HANDLE_TYPE( ENUM, Enum, enum);
425
+ #undef HANDLE_TYPE
426
+
427
+ case WireFormatLite::TYPE_STRING:
428
+ case WireFormatLite::TYPE_BYTES:
429
+ case WireFormatLite::TYPE_GROUP:
430
+ case WireFormatLite::TYPE_MESSAGE:
431
+ GOOGLE_LOG(FATAL) << "Non-primitive types can't be packed.";
432
+ break;
433
+ }
434
+ } else {
435
+ switch (real_type(type)) {
436
+ #define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \
437
+ case FieldDescriptor::TYPE_##UPPERCASE: \
438
+ for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \
439
+ target = WireFormatLite::Write##CAMELCASE##ToArray(number, \
440
+ repeated_##LOWERCASE##_value->Get(i), target); \
441
+ } \
442
+ break
443
+
444
+ HANDLE_TYPE( INT32, Int32, int32);
445
+ HANDLE_TYPE( INT64, Int64, int64);
446
+ HANDLE_TYPE( UINT32, UInt32, uint32);
447
+ HANDLE_TYPE( UINT64, UInt64, uint64);
448
+ HANDLE_TYPE( SINT32, SInt32, int32);
449
+ HANDLE_TYPE( SINT64, SInt64, int64);
450
+ HANDLE_TYPE( FIXED32, Fixed32, uint32);
451
+ HANDLE_TYPE( FIXED64, Fixed64, uint64);
452
+ HANDLE_TYPE(SFIXED32, SFixed32, int32);
453
+ HANDLE_TYPE(SFIXED64, SFixed64, int64);
454
+ HANDLE_TYPE( FLOAT, Float, float);
455
+ HANDLE_TYPE( DOUBLE, Double, double);
456
+ HANDLE_TYPE( BOOL, Bool, bool);
457
+ HANDLE_TYPE( STRING, String, string);
458
+ HANDLE_TYPE( BYTES, Bytes, string);
459
+ HANDLE_TYPE( ENUM, Enum, enum);
460
+ HANDLE_TYPE( GROUP, Group, message);
461
+ HANDLE_TYPE( MESSAGE, Message, message);
462
+ #undef HANDLE_TYPE
463
+ }
464
+ }
465
+ } else if (!is_cleared) {
466
+ switch (real_type(type)) {
467
+ #define HANDLE_TYPE(UPPERCASE, CAMELCASE, VALUE) \
468
+ case FieldDescriptor::TYPE_##UPPERCASE: \
469
+ target = WireFormatLite::Write##CAMELCASE##ToArray( \
470
+ number, VALUE, target); \
471
+ break
472
+
473
+ HANDLE_TYPE( INT32, Int32, int32_value);
474
+ HANDLE_TYPE( INT64, Int64, int64_value);
475
+ HANDLE_TYPE( UINT32, UInt32, uint32_value);
476
+ HANDLE_TYPE( UINT64, UInt64, uint64_value);
477
+ HANDLE_TYPE( SINT32, SInt32, int32_value);
478
+ HANDLE_TYPE( SINT64, SInt64, int64_value);
479
+ HANDLE_TYPE( FIXED32, Fixed32, uint32_value);
480
+ HANDLE_TYPE( FIXED64, Fixed64, uint64_value);
481
+ HANDLE_TYPE(SFIXED32, SFixed32, int32_value);
482
+ HANDLE_TYPE(SFIXED64, SFixed64, int64_value);
483
+ HANDLE_TYPE( FLOAT, Float, float_value);
484
+ HANDLE_TYPE( DOUBLE, Double, double_value);
485
+ HANDLE_TYPE( BOOL, Bool, bool_value);
486
+ HANDLE_TYPE( STRING, String, *string_value);
487
+ HANDLE_TYPE( BYTES, Bytes, *string_value);
488
+ HANDLE_TYPE( ENUM, Enum, enum_value);
489
+ HANDLE_TYPE( GROUP, Group, *message_value);
490
+ #undef HANDLE_TYPE
491
+ case FieldDescriptor::TYPE_MESSAGE:
492
+ if (is_lazy) {
493
+ target = lazymessage_value->WriteMessageToArray(number, target);
494
+ } else {
495
+ target = WireFormatLite::WriteMessageToArray(
496
+ number, *message_value, target);
497
+ }
498
+ break;
499
+ }
500
+ }
501
+ return target;
502
+ }
503
+
504
+ uint8* ExtensionSet::Extension::SerializeMessageSetItemWithCachedSizesToArray(
505
+ int number,
506
+ uint8* target) const {
507
+ if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) {
508
+ // Not a valid MessageSet extension, but serialize it the normal way.
509
+ GOOGLE_LOG(WARNING) << "Invalid message set extension.";
510
+ return SerializeFieldWithCachedSizesToArray(number, target);
511
+ }
512
+
513
+ if (is_cleared) return target;
514
+
515
+ // Start group.
516
+ target = io::CodedOutputStream::WriteTagToArray(
517
+ WireFormatLite::kMessageSetItemStartTag, target);
518
+ // Write type ID.
519
+ target = WireFormatLite::WriteUInt32ToArray(
520
+ WireFormatLite::kMessageSetTypeIdNumber, number, target);
521
+ // Write message.
522
+ if (is_lazy) {
523
+ target = lazymessage_value->WriteMessageToArray(
524
+ WireFormatLite::kMessageSetMessageNumber, target);
525
+ } else {
526
+ target = WireFormatLite::WriteMessageToArray(
527
+ WireFormatLite::kMessageSetMessageNumber, *message_value, target);
528
+ }
529
+ // End group.
530
+ target = io::CodedOutputStream::WriteTagToArray(
531
+ WireFormatLite::kMessageSetItemEndTag, target);
532
+ return target;
533
+ }
534
+
535
+
536
+ bool ExtensionSet::ParseFieldMaybeLazily(
537
+ int wire_type, int field_number, io::CodedInputStream* input,
538
+ ExtensionFinder* extension_finder,
539
+ MessageSetFieldSkipper* field_skipper) {
540
+ return ParseField(WireFormatLite::MakeTag(
541
+ field_number, static_cast<WireFormatLite::WireType>(wire_type)),
542
+ input, extension_finder, field_skipper);
543
+ }
544
+
545
+ bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input,
546
+ ExtensionFinder* extension_finder,
547
+ MessageSetFieldSkipper* field_skipper) {
548
+ while (true) {
549
+ const uint32 tag = input->ReadTag();
550
+ switch (tag) {
551
+ case 0:
552
+ return true;
553
+ case WireFormatLite::kMessageSetItemStartTag:
554
+ if (!ParseMessageSetItem(input, extension_finder, field_skipper)) {
555
+ return false;
556
+ }
557
+ break;
558
+ default:
559
+ if (!ParseField(tag, input, extension_finder, field_skipper)) {
560
+ return false;
561
+ }
562
+ break;
563
+ }
564
+ }
565
+ }
566
+
567
+ bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input,
568
+ const MessageLite* containing_type) {
569
+ MessageSetFieldSkipper skipper(NULL);
570
+ GeneratedExtensionFinder finder(containing_type);
571
+ return ParseMessageSet(input, &finder, &skipper);
572
+ }
573
+
574
+ bool ExtensionSet::ParseMessageSetItem(io::CodedInputStream* input,
575
+ ExtensionFinder* extension_finder,
576
+ MessageSetFieldSkipper* field_skipper) {
577
+ // TODO(kenton): It would be nice to share code between this and
578
+ // WireFormatLite::ParseAndMergeMessageSetItem(), but I think the
579
+ // differences would be hard to factor out.
580
+
581
+ // This method parses a group which should contain two fields:
582
+ // required int32 type_id = 2;
583
+ // required data message = 3;
584
+
585
+ uint32 last_type_id = 0;
586
+
587
+ // If we see message data before the type_id, we'll append it to this so
588
+ // we can parse it later.
589
+ string message_data;
590
+
591
+ while (true) {
592
+ const uint32 tag = input->ReadTag();
593
+ if (tag == 0) return false;
594
+
595
+ switch (tag) {
596
+ case WireFormatLite::kMessageSetTypeIdTag: {
597
+ uint32 type_id;
598
+ if (!input->ReadVarint32(&type_id)) return false;
599
+ last_type_id = type_id;
600
+
601
+ if (!message_data.empty()) {
602
+ // We saw some message data before the type_id. Have to parse it
603
+ // now.
604
+ io::CodedInputStream sub_input(
605
+ reinterpret_cast<const uint8*>(message_data.data()),
606
+ message_data.size());
607
+ if (!ParseFieldMaybeLazily(WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
608
+ last_type_id, &sub_input,
609
+ extension_finder, field_skipper)) {
610
+ return false;
611
+ }
612
+ message_data.clear();
613
+ }
614
+
615
+ break;
616
+ }
617
+
618
+ case WireFormatLite::kMessageSetMessageTag: {
619
+ if (last_type_id == 0) {
620
+ // We haven't seen a type_id yet. Append this data to message_data.
621
+ string temp;
622
+ uint32 length;
623
+ if (!input->ReadVarint32(&length)) return false;
624
+ if (!input->ReadString(&temp, length)) return false;
625
+ io::StringOutputStream output_stream(&message_data);
626
+ io::CodedOutputStream coded_output(&output_stream);
627
+ coded_output.WriteVarint32(length);
628
+ coded_output.WriteString(temp);
629
+ } else {
630
+ // Already saw type_id, so we can parse this directly.
631
+ if (!ParseFieldMaybeLazily(WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
632
+ last_type_id, input,
633
+ extension_finder, field_skipper)) {
634
+ return false;
635
+ }
636
+ }
637
+
638
+ break;
639
+ }
640
+
641
+ case WireFormatLite::kMessageSetItemEndTag: {
642
+ return true;
643
+ }
644
+
645
+ default: {
646
+ if (!field_skipper->SkipField(input, tag)) return false;
647
+ }
648
+ }
649
+ }
650
+ }
651
+
652
+ void ExtensionSet::Extension::SerializeMessageSetItemWithCachedSizes(
653
+ int number,
654
+ io::CodedOutputStream* output) const {
655
+ if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) {
656
+ // Not a valid MessageSet extension, but serialize it the normal way.
657
+ SerializeFieldWithCachedSizes(number, output);
658
+ return;
659
+ }
660
+
661
+ if (is_cleared) return;
662
+
663
+ // Start group.
664
+ output->WriteTag(WireFormatLite::kMessageSetItemStartTag);
665
+
666
+ // Write type ID.
667
+ WireFormatLite::WriteUInt32(WireFormatLite::kMessageSetTypeIdNumber,
668
+ number,
669
+ output);
670
+ // Write message.
671
+ if (is_lazy) {
672
+ lazymessage_value->WriteMessage(
673
+ WireFormatLite::kMessageSetMessageNumber, output);
674
+ } else {
675
+ WireFormatLite::WriteMessageMaybeToArray(
676
+ WireFormatLite::kMessageSetMessageNumber,
677
+ *message_value,
678
+ output);
679
+ }
680
+
681
+ // End group.
682
+ output->WriteTag(WireFormatLite::kMessageSetItemEndTag);
683
+ }
684
+
685
+ int ExtensionSet::Extension::MessageSetItemByteSize(int number) const {
686
+ if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) {
687
+ // Not a valid MessageSet extension, but compute the byte size for it the
688
+ // normal way.
689
+ return ByteSize(number);
690
+ }
691
+
692
+ if (is_cleared) return 0;
693
+
694
+ int our_size = WireFormatLite::kMessageSetItemTagsSize;
695
+
696
+ // type_id
697
+ our_size += io::CodedOutputStream::VarintSize32(number);
698
+
699
+ // message
700
+ int message_size = 0;
701
+ if (is_lazy) {
702
+ message_size = lazymessage_value->ByteSize();
703
+ } else {
704
+ message_size = message_value->ByteSize();
705
+ }
706
+
707
+ our_size += io::CodedOutputStream::VarintSize32(message_size);
708
+ our_size += message_size;
709
+
710
+ return our_size;
711
+ }
712
+
713
+ void ExtensionSet::SerializeMessageSetWithCachedSizes(
714
+ io::CodedOutputStream* output) const {
715
+ for (map<int, Extension>::const_iterator iter = extensions_.begin();
716
+ iter != extensions_.end(); ++iter) {
717
+ iter->second.SerializeMessageSetItemWithCachedSizes(iter->first, output);
718
+ }
719
+ }
720
+
721
+ int ExtensionSet::MessageSetByteSize() const {
722
+ int total_size = 0;
723
+
724
+ for (map<int, Extension>::const_iterator iter = extensions_.begin();
725
+ iter != extensions_.end(); ++iter) {
726
+ total_size += iter->second.MessageSetItemByteSize(iter->first);
727
+ }
728
+
729
+ return total_size;
730
+ }
731
+
732
+ } // namespace internal
733
+ } // namespace protobuf
734
+ } // namespace google