protobuf 2.2.5-java

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 (256) hide show
  1. data/.gitignore +17 -0
  2. data/.travis.yml +9 -0
  3. data/.yardopts +5 -0
  4. data/Gemfile +3 -0
  5. data/README.md +316 -0
  6. data/Rakefile +29 -0
  7. data/UPGRADING.md +60 -0
  8. data/bin/rpc_server +5 -0
  9. data/bin/rprotoc +62 -0
  10. data/examples/addressbook.pb.rb +55 -0
  11. data/examples/addressbook.proto +24 -0
  12. data/examples/reading_a_message.rb +32 -0
  13. data/examples/writing_a_message.rb +46 -0
  14. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/code_generator.h +142 -0
  15. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/command_line_interface.h +318 -0
  16. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum.h +99 -0
  17. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum_field.h +103 -0
  18. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_extension.h +85 -0
  19. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_field.h +167 -0
  20. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_file.h +98 -0
  21. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_generator.h +72 -0
  22. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_helpers.h +159 -0
  23. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message.h +170 -0
  24. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message_field.h +102 -0
  25. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_primitive_field.h +103 -0
  26. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_service.h +118 -0
  27. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_string_field.h +104 -0
  28. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.h +2721 -0
  29. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/importer.h +303 -0
  30. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum.h +84 -0
  31. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum_field.h +121 -0
  32. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_extension.h +77 -0
  33. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_field.h +108 -0
  34. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_file.h +101 -0
  35. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_generator.h +72 -0
  36. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_helpers.h +213 -0
  37. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message.h +109 -0
  38. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message_field.h +134 -0
  39. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_primitive_field.h +121 -0
  40. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_service.h +113 -0
  41. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_string_field.h +120 -0
  42. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/mock_code_generator.h +113 -0
  43. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/package_info.h +64 -0
  44. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/parser.h +434 -0
  45. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.h +73 -0
  46. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.pb.h +790 -0
  47. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/python/python_generator.h +156 -0
  48. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/subprocess.h +108 -0
  49. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/zip_writer.h +93 -0
  50. data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.h +1367 -0
  51. data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.pb.h +5223 -0
  52. data/ext/protobuf-2.4.1/src/google/protobuf/descriptor_database.h +366 -0
  53. data/ext/protobuf-2.4.1/src/google/protobuf/dynamic_message.h +136 -0
  54. data/ext/protobuf-2.4.1/src/google/protobuf/extension_set.h +904 -0
  55. data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_reflection.h +424 -0
  56. data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_util.h +82 -0
  57. data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream.h +1102 -0
  58. data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream_inl.h +64 -0
  59. data/ext/protobuf-2.4.1/src/google/protobuf/io/gzip_stream.h +207 -0
  60. data/ext/protobuf-2.4.1/src/google/protobuf/io/package_info.h +54 -0
  61. data/ext/protobuf-2.4.1/src/google/protobuf/io/printer.h +136 -0
  62. data/ext/protobuf-2.4.1/src/google/protobuf/io/tokenizer.h +313 -0
  63. data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream.h +238 -0
  64. data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl.h +357 -0
  65. data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl_lite.h +340 -0
  66. data/ext/protobuf-2.4.1/src/google/protobuf/message.h +692 -0
  67. data/ext/protobuf-2.4.1/src/google/protobuf/message_lite.h +239 -0
  68. data/ext/protobuf-2.4.1/src/google/protobuf/package_info.h +64 -0
  69. data/ext/protobuf-2.4.1/src/google/protobuf/reflection_ops.h +80 -0
  70. data/ext/protobuf-2.4.1/src/google/protobuf/repeated_field.h +1295 -0
  71. data/ext/protobuf-2.4.1/src/google/protobuf/service.h +291 -0
  72. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/common.h +1211 -0
  73. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/hash.h +220 -0
  74. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/map-util.h +119 -0
  75. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/once.h +123 -0
  76. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/stl_util-inl.h +121 -0
  77. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/strutil.h +457 -0
  78. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/substitute.h +170 -0
  79. data/ext/protobuf-2.4.1/src/google/protobuf/test_util.h +174 -0
  80. data/ext/protobuf-2.4.1/src/google/protobuf/test_util_lite.h +101 -0
  81. data/ext/protobuf-2.4.1/src/google/protobuf/testing/file.h +83 -0
  82. data/ext/protobuf-2.4.1/src/google/protobuf/testing/googletest.h +98 -0
  83. data/ext/protobuf-2.4.1/src/google/protobuf/text_format.h +285 -0
  84. data/ext/protobuf-2.4.1/src/google/protobuf/unittest.pb.h +11915 -0
  85. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_custom_options.pb.h +2895 -0
  86. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_embed_optimize_for.pb.h +211 -0
  87. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_empty.pb.h +56 -0
  88. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import.pb.h +188 -0
  89. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import_lite.pb.h +151 -0
  90. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite.pb.h +4752 -0
  91. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite_imports_nonlite.pb.h +150 -0
  92. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_mset.pb.h +816 -0
  93. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_no_generic_services.pb.h +197 -0
  94. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_optimize_for.pb.h +403 -0
  95. data/ext/protobuf-2.4.1/src/google/protobuf/unknown_field_set.h +268 -0
  96. data/ext/protobuf-2.4.1/src/google/protobuf/wire_format.h +304 -0
  97. data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite.h +620 -0
  98. data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite_inl.h +774 -0
  99. data/ext/ruby_generator/Makefile +10 -0
  100. data/ext/ruby_generator/RubyGenerator.cpp +450 -0
  101. data/ext/ruby_generator/RubyGenerator.h +199 -0
  102. data/ext/ruby_generator/extconf.rb +36 -0
  103. data/ext/ruby_generator/protoc-ruby +0 -0
  104. data/lib/protobuf/cli.rb +188 -0
  105. data/lib/protobuf/enum.rb +58 -0
  106. data/lib/protobuf/enum_value.rb +59 -0
  107. data/lib/protobuf/evented.rb +22 -0
  108. data/lib/protobuf/exceptions.rb +11 -0
  109. data/lib/protobuf/ext/eventmachine.rb +14 -0
  110. data/lib/protobuf/field/base_field.rb +240 -0
  111. data/lib/protobuf/field/bool_field.rb +36 -0
  112. data/lib/protobuf/field/bytes_field.rb +38 -0
  113. data/lib/protobuf/field/double_field.rb +19 -0
  114. data/lib/protobuf/field/enum_field.rb +50 -0
  115. data/lib/protobuf/field/extension_fields.rb +32 -0
  116. data/lib/protobuf/field/field_array.rb +65 -0
  117. data/lib/protobuf/field/fixed32_field.rb +19 -0
  118. data/lib/protobuf/field/fixed64_field.rb +22 -0
  119. data/lib/protobuf/field/float_field.rb +31 -0
  120. data/lib/protobuf/field/int32_field.rb +12 -0
  121. data/lib/protobuf/field/int64_field.rb +12 -0
  122. data/lib/protobuf/field/integer_field.rb +19 -0
  123. data/lib/protobuf/field/message_field.rb +53 -0
  124. data/lib/protobuf/field/sfixed32_field.rb +21 -0
  125. data/lib/protobuf/field/sfixed64_field.rb +24 -0
  126. data/lib/protobuf/field/signed_integer_field.rb +23 -0
  127. data/lib/protobuf/field/sint32_field.rb +12 -0
  128. data/lib/protobuf/field/sint64_field.rb +12 -0
  129. data/lib/protobuf/field/string_field.rb +14 -0
  130. data/lib/protobuf/field/uint32_field.rb +12 -0
  131. data/lib/protobuf/field/uint64_field.rb +12 -0
  132. data/lib/protobuf/field/varint_field.rb +61 -0
  133. data/lib/protobuf/field.rb +57 -0
  134. data/lib/protobuf/logger.rb +86 -0
  135. data/lib/protobuf/message/decoder.rb +83 -0
  136. data/lib/protobuf/message/encoder.rb +48 -0
  137. data/lib/protobuf/message/extend.rb +8 -0
  138. data/lib/protobuf/message/message.rb +1 -0
  139. data/lib/protobuf/message.rb +320 -0
  140. data/lib/protobuf/rpc/buffer.rb +79 -0
  141. data/lib/protobuf/rpc/client.rb +166 -0
  142. data/lib/protobuf/rpc/connector.rb +19 -0
  143. data/lib/protobuf/rpc/connectors/base.rb +38 -0
  144. data/lib/protobuf/rpc/connectors/common.rb +156 -0
  145. data/lib/protobuf/rpc/connectors/em_client.rb +84 -0
  146. data/lib/protobuf/rpc/connectors/eventmachine.rb +87 -0
  147. data/lib/protobuf/rpc/connectors/socket.rb +73 -0
  148. data/lib/protobuf/rpc/connectors/zmq.rb +69 -0
  149. data/lib/protobuf/rpc/error/client_error.rb +31 -0
  150. data/lib/protobuf/rpc/error/server_error.rb +43 -0
  151. data/lib/protobuf/rpc/error.rb +25 -0
  152. data/lib/protobuf/rpc/rpc.pb.rb +118 -0
  153. data/lib/protobuf/rpc/server.rb +89 -0
  154. data/lib/protobuf/rpc/servers/evented/server.rb +41 -0
  155. data/lib/protobuf/rpc/servers/evented_runner.rb +21 -0
  156. data/lib/protobuf/rpc/servers/socket/server.rb +111 -0
  157. data/lib/protobuf/rpc/servers/socket/worker.rb +66 -0
  158. data/lib/protobuf/rpc/servers/socket_runner.rb +27 -0
  159. data/lib/protobuf/rpc/servers/zmq/broker.rb +87 -0
  160. data/lib/protobuf/rpc/servers/zmq/server.rb +50 -0
  161. data/lib/protobuf/rpc/servers/zmq/util.rb +27 -0
  162. data/lib/protobuf/rpc/servers/zmq/worker.rb +60 -0
  163. data/lib/protobuf/rpc/servers/zmq_runner.rb +25 -0
  164. data/lib/protobuf/rpc/service.rb +173 -0
  165. data/lib/protobuf/rpc/service_dispatcher.rb +130 -0
  166. data/lib/protobuf/rpc/service_filters.rb +267 -0
  167. data/lib/protobuf/rpc/stat.rb +83 -0
  168. data/lib/protobuf/socket.rb +22 -0
  169. data/lib/protobuf/version.rb +4 -0
  170. data/lib/protobuf/wire_type.rb +10 -0
  171. data/lib/protobuf/zmq.rb +21 -0
  172. data/lib/protobuf.rb +86 -0
  173. data/proto/rpc.pb.rb +48 -0
  174. data/proto/rpc.proto +73 -0
  175. data/protobuf.gemspec +44 -0
  176. data/spec/benchmark/tasks.rb +179 -0
  177. data/spec/functional/embedded_service_spec.rb +7 -0
  178. data/spec/functional/evented_server_spec.rb +64 -0
  179. data/spec/functional/socket_server_spec.rb +58 -0
  180. data/spec/functional/zmq_server_spec.rb +58 -0
  181. data/spec/lib/protobuf/cli_spec.rb +212 -0
  182. data/spec/lib/protobuf/enum_spec.rb +98 -0
  183. data/spec/lib/protobuf/enum_value_spec.rb +15 -0
  184. data/spec/lib/protobuf/logger_spec.rb +131 -0
  185. data/spec/lib/protobuf/message/encoder_spec.rb +19 -0
  186. data/spec/lib/protobuf/message_spec.rb +209 -0
  187. data/spec/lib/protobuf/rpc/client_spec.rb +158 -0
  188. data/spec/lib/protobuf/rpc/connector_spec.rb +32 -0
  189. data/spec/lib/protobuf/rpc/connectors/base_spec.rb +50 -0
  190. data/spec/lib/protobuf/rpc/connectors/common_spec.rb +128 -0
  191. data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +36 -0
  192. data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +22 -0
  193. data/spec/lib/protobuf/rpc/servers/evented_server_spec.rb +18 -0
  194. data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +43 -0
  195. data/spec/lib/protobuf/rpc/servers/zmq/broker_spec.rb +35 -0
  196. data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +41 -0
  197. data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +45 -0
  198. data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +44 -0
  199. data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +116 -0
  200. data/spec/lib/protobuf/rpc/service_filters_spec.rb +451 -0
  201. data/spec/lib/protobuf/rpc/service_spec.rb +165 -0
  202. data/spec/lib/protobuf_spec.rb +62 -0
  203. data/spec/spec_helper.rb +51 -0
  204. data/spec/support/all.rb +6 -0
  205. data/spec/support/server.rb +101 -0
  206. data/spec/support/test/enum.pb.rb +34 -0
  207. data/spec/support/test/enum.proto +12 -0
  208. data/spec/support/test/resource.pb.rb +58 -0
  209. data/spec/support/test/resource.proto +31 -0
  210. data/spec/support/test/resource_service.rb +14 -0
  211. data/spec/support/test_app_file.rb +2 -0
  212. data/spec/support/tolerance_matcher.rb +40 -0
  213. data/test/data/data.bin +3 -0
  214. data/test/data/data_source.py +14 -0
  215. data/test/data/types.bin +0 -0
  216. data/test/data/types_source.py +22 -0
  217. data/test/data/unk.png +0 -0
  218. data/test/proto/addressbook.pb.rb +66 -0
  219. data/test/proto/addressbook.proto +33 -0
  220. data/test/proto/addressbook_base.pb.rb +58 -0
  221. data/test/proto/addressbook_base.proto +26 -0
  222. data/test/proto/addressbook_ext.pb.rb +20 -0
  223. data/test/proto/addressbook_ext.proto +6 -0
  224. data/test/proto/collision.pb.rb +17 -0
  225. data/test/proto/collision.proto +5 -0
  226. data/test/proto/ext_collision.pb.rb +24 -0
  227. data/test/proto/ext_collision.proto +8 -0
  228. data/test/proto/ext_range.pb.rb +22 -0
  229. data/test/proto/ext_range.proto +7 -0
  230. data/test/proto/float_default.proto +10 -0
  231. data/test/proto/lowercase.pb.rb +30 -0
  232. data/test/proto/lowercase.proto +9 -0
  233. data/test/proto/merge.pb.rb +39 -0
  234. data/test/proto/merge.proto +15 -0
  235. data/test/proto/nested.pb.rb +30 -0
  236. data/test/proto/nested.proto +9 -0
  237. data/test/proto/optional_field.pb.rb +35 -0
  238. data/test/proto/optional_field.proto +12 -0
  239. data/test/proto/packed.pb.rb +22 -0
  240. data/test/proto/packed.proto +6 -0
  241. data/test/proto/rpc.proto +6 -0
  242. data/test/proto/types.pb.rb +84 -0
  243. data/test/proto/types.proto +37 -0
  244. data/test/test_addressbook.rb +56 -0
  245. data/test/test_enum_value.rb +41 -0
  246. data/test/test_extension.rb +36 -0
  247. data/test/test_lowercase.rb +11 -0
  248. data/test/test_message.rb +128 -0
  249. data/test/test_optional_field.rb +103 -0
  250. data/test/test_packed_field.rb +40 -0
  251. data/test/test_parse.rb +15 -0
  252. data/test/test_repeated_types.rb +132 -0
  253. data/test/test_serialize.rb +61 -0
  254. data/test/test_standard_message.rb +96 -0
  255. data/test/test_types.rb +226 -0
  256. metadata +461 -0
@@ -0,0 +1,239 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // http://code.google.com/p/protobuf/
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
+ // Authors: wink@google.com (Wink Saville),
32
+ // kenton@google.com (Kenton Varda)
33
+ // Based on original Protocol Buffers design by
34
+ // Sanjay Ghemawat, Jeff Dean, and others.
35
+ //
36
+ // Defines MessageLite, the abstract interface implemented by all (lite
37
+ // and non-lite) protocol message objects.
38
+
39
+ #ifndef GOOGLE_PROTOBUF_MESSAGE_LITE_H__
40
+ #define GOOGLE_PROTOBUF_MESSAGE_LITE_H__
41
+
42
+ #include <google/protobuf/stubs/common.h>
43
+ #include <google/protobuf/io/coded_stream.h>
44
+
45
+ namespace google {
46
+ namespace protobuf {
47
+
48
+ // Interface to light weight protocol messages.
49
+ //
50
+ // This interface is implemented by all protocol message objects. Non-lite
51
+ // messages additionally implement the Message interface, which is a
52
+ // subclass of MessageLite. Use MessageLite instead when you only need
53
+ // the subset of features which it supports -- namely, nothing that uses
54
+ // descriptors or reflection. You can instruct the protocol compiler
55
+ // to generate classes which implement only MessageLite, not the full
56
+ // Message interface, by adding the following line to the .proto file:
57
+ //
58
+ // option optimize_for = LITE_RUNTIME;
59
+ //
60
+ // This is particularly useful on resource-constrained systems where
61
+ // the full protocol buffers runtime library is too big.
62
+ //
63
+ // Note that on non-constrained systems (e.g. servers) when you need
64
+ // to link in lots of protocol definitions, a better way to reduce
65
+ // total code footprint is to use optimize_for = CODE_SIZE. This
66
+ // will make the generated code smaller while still supporting all the
67
+ // same features (at the expense of speed). optimize_for = LITE_RUNTIME
68
+ // is best when you only have a small number of message types linked
69
+ // into your binary, in which case the size of the protocol buffers
70
+ // runtime itself is the biggest problem.
71
+ class LIBPROTOBUF_EXPORT MessageLite {
72
+ public:
73
+ inline MessageLite() {}
74
+ virtual ~MessageLite();
75
+
76
+ // Basic Operations ------------------------------------------------
77
+
78
+ // Get the name of this message type, e.g. "foo.bar.BazProto".
79
+ virtual string GetTypeName() const = 0;
80
+
81
+ // Construct a new instance of the same type. Ownership is passed to the
82
+ // caller.
83
+ virtual MessageLite* New() const = 0;
84
+
85
+ // Clear all fields of the message and set them to their default values.
86
+ // Clear() avoids freeing memory, assuming that any memory allocated
87
+ // to hold parts of the message will be needed again to hold the next
88
+ // message. If you actually want to free the memory used by a Message,
89
+ // you must delete it.
90
+ virtual void Clear() = 0;
91
+
92
+ // Quickly check if all required fields have values set.
93
+ virtual bool IsInitialized() const = 0;
94
+
95
+ // This is not implemented for Lite messages -- it just returns "(cannot
96
+ // determine missing fields for lite message)". However, it is implemented
97
+ // for full messages. See message.h.
98
+ virtual string InitializationErrorString() const;
99
+
100
+ // If |other| is the exact same class as this, calls MergeFrom(). Otherwise,
101
+ // results are undefined (probably crash).
102
+ virtual void CheckTypeAndMergeFrom(const MessageLite& other) = 0;
103
+
104
+ // Parsing ---------------------------------------------------------
105
+ // Methods for parsing in protocol buffer format. Most of these are
106
+ // just simple wrappers around MergeFromCodedStream().
107
+
108
+ // Fill the message with a protocol buffer parsed from the given input
109
+ // stream. Returns false on a read error or if the input is in the
110
+ // wrong format.
111
+ bool ParseFromCodedStream(io::CodedInputStream* input);
112
+ // Like ParseFromCodedStream(), but accepts messages that are missing
113
+ // required fields.
114
+ bool ParsePartialFromCodedStream(io::CodedInputStream* input);
115
+ // Read a protocol buffer from the given zero-copy input stream. If
116
+ // successful, the entire input will be consumed.
117
+ bool ParseFromZeroCopyStream(io::ZeroCopyInputStream* input);
118
+ // Like ParseFromZeroCopyStream(), but accepts messages that are missing
119
+ // required fields.
120
+ bool ParsePartialFromZeroCopyStream(io::ZeroCopyInputStream* input);
121
+ // Read a protocol buffer from the given zero-copy input stream, expecting
122
+ // the message to be exactly "size" bytes long. If successful, exactly
123
+ // this many bytes will have been consumed from the input.
124
+ bool ParseFromBoundedZeroCopyStream(io::ZeroCopyInputStream* input, int size);
125
+ // Like ParseFromBoundedZeroCopyStream(), but accepts messages that are
126
+ // missing required fields.
127
+ bool ParsePartialFromBoundedZeroCopyStream(io::ZeroCopyInputStream* input,
128
+ int size);
129
+ // Parse a protocol buffer contained in a string.
130
+ bool ParseFromString(const string& data);
131
+ // Like ParseFromString(), but accepts messages that are missing
132
+ // required fields.
133
+ bool ParsePartialFromString(const string& data);
134
+ // Parse a protocol buffer contained in an array of bytes.
135
+ bool ParseFromArray(const void* data, int size);
136
+ // Like ParseFromArray(), but accepts messages that are missing
137
+ // required fields.
138
+ bool ParsePartialFromArray(const void* data, int size);
139
+
140
+
141
+ // Reads a protocol buffer from the stream and merges it into this
142
+ // Message. Singular fields read from the input overwrite what is
143
+ // already in the Message and repeated fields are appended to those
144
+ // already present.
145
+ //
146
+ // It is the responsibility of the caller to call input->LastTagWas()
147
+ // (for groups) or input->ConsumedEntireMessage() (for non-groups) after
148
+ // this returns to verify that the message's end was delimited correctly.
149
+ //
150
+ // ParsefromCodedStream() is implemented as Clear() followed by
151
+ // MergeFromCodedStream().
152
+ bool MergeFromCodedStream(io::CodedInputStream* input);
153
+
154
+ // Like MergeFromCodedStream(), but succeeds even if required fields are
155
+ // missing in the input.
156
+ //
157
+ // MergeFromCodedStream() is just implemented as MergePartialFromCodedStream()
158
+ // followed by IsInitialized().
159
+ virtual bool MergePartialFromCodedStream(io::CodedInputStream* input) = 0;
160
+
161
+ // Serialization ---------------------------------------------------
162
+ // Methods for serializing in protocol buffer format. Most of these
163
+ // are just simple wrappers around ByteSize() and SerializeWithCachedSizes().
164
+
165
+ // Write a protocol buffer of this message to the given output. Returns
166
+ // false on a write error. If the message is missing required fields,
167
+ // this may GOOGLE_CHECK-fail.
168
+ bool SerializeToCodedStream(io::CodedOutputStream* output) const;
169
+ // Like SerializeToCodedStream(), but allows missing required fields.
170
+ bool SerializePartialToCodedStream(io::CodedOutputStream* output) const;
171
+ // Write the message to the given zero-copy output stream. All required
172
+ // fields must be set.
173
+ bool SerializeToZeroCopyStream(io::ZeroCopyOutputStream* output) const;
174
+ // Like SerializeToZeroCopyStream(), but allows missing required fields.
175
+ bool SerializePartialToZeroCopyStream(io::ZeroCopyOutputStream* output) const;
176
+ // Serialize the message and store it in the given string. All required
177
+ // fields must be set.
178
+ bool SerializeToString(string* output) const;
179
+ // Like SerializeToString(), but allows missing required fields.
180
+ bool SerializePartialToString(string* output) const;
181
+ // Serialize the message and store it in the given byte array. All required
182
+ // fields must be set.
183
+ bool SerializeToArray(void* data, int size) const;
184
+ // Like SerializeToArray(), but allows missing required fields.
185
+ bool SerializePartialToArray(void* data, int size) const;
186
+
187
+ // Make a string encoding the message. Is equivalent to calling
188
+ // SerializeToString() on a string and using that. Returns the empty
189
+ // string if SerializeToString() would have returned an error.
190
+ // Note: If you intend to generate many such strings, you may
191
+ // reduce heap fragmentation by instead re-using the same string
192
+ // object with calls to SerializeToString().
193
+ string SerializeAsString() const;
194
+ // Like SerializeAsString(), but allows missing required fields.
195
+ string SerializePartialAsString() const;
196
+
197
+ // Like SerializeToString(), but appends to the data to the string's existing
198
+ // contents. All required fields must be set.
199
+ bool AppendToString(string* output) const;
200
+ // Like AppendToString(), but allows missing required fields.
201
+ bool AppendPartialToString(string* output) const;
202
+
203
+ // Computes the serialized size of the message. This recursively calls
204
+ // ByteSize() on all embedded messages. If a subclass does not override
205
+ // this, it MUST override SetCachedSize().
206
+ virtual int ByteSize() const = 0;
207
+
208
+ // Serializes the message without recomputing the size. The message must
209
+ // not have changed since the last call to ByteSize(); if it has, the results
210
+ // are undefined.
211
+ virtual void SerializeWithCachedSizes(
212
+ io::CodedOutputStream* output) const = 0;
213
+
214
+ // Like SerializeWithCachedSizes, but writes directly to *target, returning
215
+ // a pointer to the byte immediately after the last byte written. "target"
216
+ // must point at a byte array of at least ByteSize() bytes.
217
+ virtual uint8* SerializeWithCachedSizesToArray(uint8* target) const;
218
+
219
+ // Returns the result of the last call to ByteSize(). An embedded message's
220
+ // size is needed both to serialize it (because embedded messages are
221
+ // length-delimited) and to compute the outer message's size. Caching
222
+ // the size avoids computing it multiple times.
223
+ //
224
+ // ByteSize() does not automatically use the cached size when available
225
+ // because this would require invalidating it every time the message was
226
+ // modified, which would be too hard and expensive. (E.g. if a deeply-nested
227
+ // sub-message is changed, all of its parents' cached sizes would need to be
228
+ // invalidated, which is too much work for an otherwise inlined setter
229
+ // method.)
230
+ virtual int GetCachedSize() const = 0;
231
+
232
+ private:
233
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageLite);
234
+ };
235
+
236
+ } // namespace protobuf
237
+
238
+ } // namespace google
239
+ #endif // GOOGLE_PROTOBUF_MESSAGE_LITE_H__
@@ -0,0 +1,64 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // http://code.google.com/p/protobuf/
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
+ // This file exists solely to document the google::protobuf namespace.
36
+ // It is not compiled into anything, but it may be read by an automated
37
+ // documentation generator.
38
+
39
+ namespace google {
40
+
41
+ // Core components of the Protocol Buffers runtime library.
42
+ //
43
+ // The files in this package represent the core of the Protocol Buffer
44
+ // system. All of them are part of the libprotobuf library.
45
+ //
46
+ // A note on thread-safety:
47
+ //
48
+ // Thread-safety in the Protocol Buffer library follows a simple rule:
49
+ // unless explicitly noted otherwise, it is always safe to use an object
50
+ // from multiple threads simultaneously as long as the object is declared
51
+ // const in all threads (or, it is only used in ways that would be allowed
52
+ // if it were declared const). However, if an object is accessed in one
53
+ // thread in a way that would not be allowed if it were const, then it is
54
+ // not safe to access that object in any other thread simultaneously.
55
+ //
56
+ // Put simply, read-only access to an object can happen in multiple threads
57
+ // simultaneously, but write access can only happen in a single thread at
58
+ // a time.
59
+ //
60
+ // The implementation does contain some "const" methods which actually modify
61
+ // the object behind the scenes -- e.g., to cache results -- but in these cases
62
+ // mutex locking is used to make the access thread-safe.
63
+ namespace protobuf {}
64
+ } // namespace google
@@ -0,0 +1,80 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // http://code.google.com/p/protobuf/
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
+ // This header is logically internal, but is made public because it is used
36
+ // from protocol-compiler-generated code, which may reside in other components.
37
+
38
+ #ifndef GOOGLE_PROTOBUF_REFLECTION_OPS_H__
39
+ #define GOOGLE_PROTOBUF_REFLECTION_OPS_H__
40
+
41
+ #include <google/protobuf/message.h>
42
+
43
+ namespace google {
44
+ namespace protobuf {
45
+ namespace internal {
46
+
47
+ // Basic operations that can be performed using reflection.
48
+ // These can be used as a cheap way to implement the corresponding
49
+ // methods of the Message interface, though they are likely to be
50
+ // slower than implementations tailored for the specific message type.
51
+ //
52
+ // This class should stay limited to operations needed to implement
53
+ // the Message interface.
54
+ //
55
+ // This class is really a namespace that contains only static methods.
56
+ class LIBPROTOBUF_EXPORT ReflectionOps {
57
+ public:
58
+ static void Copy(const Message& from, Message* to);
59
+ static void Merge(const Message& from, Message* to);
60
+ static void Clear(Message* message);
61
+ static bool IsInitialized(const Message& message);
62
+ static void DiscardUnknownFields(Message* message);
63
+
64
+ // Finds all unset required fields in the message and adds their full
65
+ // paths (e.g. "foo.bar[5].baz") to *names. "prefix" will be attached to
66
+ // the front of each name.
67
+ static void FindInitializationErrors(const Message& message,
68
+ const string& prefix,
69
+ vector<string>* errors);
70
+
71
+ private:
72
+ // All methods are static. No need to construct.
73
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ReflectionOps);
74
+ };
75
+
76
+ } // namespace internal
77
+ } // namespace protobuf
78
+
79
+ } // namespace google
80
+ #endif // GOOGLE_PROTOBUF_REFLECTION_OPS_H__