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,108 @@
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
+ #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_FIELD_H__
36
+ #define GOOGLE_PROTOBUF_COMPILER_JAVA_FIELD_H__
37
+
38
+ #include <string>
39
+ #include <google/protobuf/stubs/common.h>
40
+ #include <google/protobuf/descriptor.h>
41
+
42
+ namespace google {
43
+ namespace protobuf {
44
+ namespace io {
45
+ class Printer; // printer.h
46
+ }
47
+ }
48
+
49
+ namespace protobuf {
50
+ namespace compiler {
51
+ namespace java {
52
+
53
+ class FieldGenerator {
54
+ public:
55
+ FieldGenerator() {}
56
+ virtual ~FieldGenerator();
57
+
58
+ virtual int GetNumBitsForMessage() const = 0;
59
+ virtual int GetNumBitsForBuilder() const = 0;
60
+ virtual void GenerateInterfaceMembers(io::Printer* printer) const = 0;
61
+ virtual void GenerateMembers(io::Printer* printer) const = 0;
62
+ virtual void GenerateBuilderMembers(io::Printer* printer) const = 0;
63
+ virtual void GenerateInitializationCode(io::Printer* printer) const = 0;
64
+ virtual void GenerateBuilderClearCode(io::Printer* printer) const = 0;
65
+ virtual void GenerateMergingCode(io::Printer* printer) const = 0;
66
+ virtual void GenerateBuildingCode(io::Printer* printer) const = 0;
67
+ virtual void GenerateParsingCode(io::Printer* printer) const = 0;
68
+ virtual void GenerateParsingCodeFromPacked(io::Printer* printer) const;
69
+ virtual void GenerateSerializationCode(io::Printer* printer) const = 0;
70
+ virtual void GenerateSerializedSizeCode(io::Printer* printer) const = 0;
71
+ virtual void GenerateFieldBuilderInitializationCode(io::Printer* printer)
72
+ const = 0;
73
+
74
+ virtual void GenerateEqualsCode(io::Printer* printer) const = 0;
75
+ virtual void GenerateHashCode(io::Printer* printer) const = 0;
76
+
77
+ virtual string GetBoxedType() const = 0;
78
+
79
+ private:
80
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGenerator);
81
+ };
82
+
83
+ // Convenience class which constructs FieldGenerators for a Descriptor.
84
+ class FieldGeneratorMap {
85
+ public:
86
+ explicit FieldGeneratorMap(const Descriptor* descriptor);
87
+ ~FieldGeneratorMap();
88
+
89
+ const FieldGenerator& get(const FieldDescriptor* field) const;
90
+ const FieldGenerator& get_extension(int index) const;
91
+
92
+ private:
93
+ const Descriptor* descriptor_;
94
+ scoped_array<scoped_ptr<FieldGenerator> > field_generators_;
95
+ scoped_array<scoped_ptr<FieldGenerator> > extension_generators_;
96
+
97
+ static FieldGenerator* MakeGenerator(const FieldDescriptor* field,
98
+ int messageBitIndex, int builderBitIndex);
99
+
100
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGeneratorMap);
101
+ };
102
+
103
+ } // namespace java
104
+ } // namespace compiler
105
+ } // namespace protobuf
106
+
107
+ } // namespace google
108
+ #endif // GOOGLE_PROTOBUF_COMPILER_JAVA_FIELD_H__
@@ -0,0 +1,101 @@
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
+ #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_FILE_H__
36
+ #define GOOGLE_PROTOBUF_COMPILER_JAVA_FILE_H__
37
+
38
+ #include <string>
39
+ #include <vector>
40
+ #include <google/protobuf/stubs/common.h>
41
+
42
+ namespace google {
43
+ namespace protobuf {
44
+ class FileDescriptor; // descriptor.h
45
+ namespace io {
46
+ class Printer; // printer.h
47
+ }
48
+ namespace compiler {
49
+ class GeneratorContext; // code_generator.h
50
+ }
51
+ }
52
+
53
+ namespace protobuf {
54
+ namespace compiler {
55
+ namespace java {
56
+
57
+ class FileGenerator {
58
+ public:
59
+ explicit FileGenerator(const FileDescriptor* file);
60
+ ~FileGenerator();
61
+
62
+ // Checks for problems that would otherwise lead to cryptic compile errors.
63
+ // Returns true if there are no problems, or writes an error description to
64
+ // the given string and returns false otherwise.
65
+ bool Validate(string* error);
66
+
67
+ void Generate(io::Printer* printer);
68
+
69
+ // If we aren't putting everything into one file, this will write all the
70
+ // files other than the outer file (i.e. one for each message, enum, and
71
+ // service type).
72
+ void GenerateSiblings(const string& package_dir,
73
+ GeneratorContext* generator_context,
74
+ vector<string>* file_list);
75
+
76
+ const string& java_package() { return java_package_; }
77
+ const string& classname() { return classname_; }
78
+
79
+
80
+ private:
81
+ // Returns whether the dependency should be included in the output file.
82
+ // Always returns true for opensource, but used internally at Google to help
83
+ // improve compatibility with version 1 of protocol buffers.
84
+ bool ShouldIncludeDependency(const FileDescriptor* descriptor);
85
+
86
+ const FileDescriptor* file_;
87
+ string java_package_;
88
+ string classname_;
89
+
90
+
91
+ void GenerateEmbeddedDescriptor(io::Printer* printer);
92
+
93
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator);
94
+ };
95
+
96
+ } // namespace java
97
+ } // namespace compiler
98
+ } // namespace protobuf
99
+
100
+ } // namespace google
101
+ #endif // GOOGLE_PROTOBUF_COMPILER_JAVA_FILE_H__
@@ -0,0 +1,72 @@
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
+ // Generates Java code for a given .proto file.
36
+
37
+ #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_GENERATOR_H__
38
+ #define GOOGLE_PROTOBUF_COMPILER_JAVA_GENERATOR_H__
39
+
40
+ #include <string>
41
+ #include <google/protobuf/compiler/code_generator.h>
42
+
43
+ namespace google {
44
+ namespace protobuf {
45
+ namespace compiler {
46
+ namespace java {
47
+
48
+ // CodeGenerator implementation which generates Java code. If you create your
49
+ // own protocol compiler binary and you want it to support Java output, you
50
+ // can do so by registering an instance of this CodeGenerator with the
51
+ // CommandLineInterface in your main() function.
52
+ class LIBPROTOC_EXPORT JavaGenerator : public CodeGenerator {
53
+ public:
54
+ JavaGenerator();
55
+ ~JavaGenerator();
56
+
57
+ // implements CodeGenerator ----------------------------------------
58
+ bool Generate(const FileDescriptor* file,
59
+ const string& parameter,
60
+ GeneratorContext* context,
61
+ string* error) const;
62
+
63
+ private:
64
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(JavaGenerator);
65
+ };
66
+
67
+ } // namespace java
68
+ } // namespace compiler
69
+ } // namespace protobuf
70
+
71
+ } // namespace google
72
+ #endif // GOOGLE_PROTOBUF_COMPILER_JAVA_GENERATOR_H__
@@ -0,0 +1,213 @@
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
+ #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_HELPERS_H__
36
+ #define GOOGLE_PROTOBUF_COMPILER_JAVA_HELPERS_H__
37
+
38
+ #include <string>
39
+ #include <google/protobuf/descriptor.pb.h>
40
+ #include <google/protobuf/descriptor.h>
41
+
42
+ namespace google {
43
+ namespace protobuf {
44
+ namespace compiler {
45
+ namespace java {
46
+
47
+ // Commonly-used separator comments. Thick is a line of '=', thin is a line
48
+ // of '-'.
49
+ extern const char kThickSeparator[];
50
+ extern const char kThinSeparator[];
51
+
52
+ // Converts the field's name to camel-case, e.g. "foo_bar_baz" becomes
53
+ // "fooBarBaz" or "FooBarBaz", respectively.
54
+ string UnderscoresToCamelCase(const FieldDescriptor* field);
55
+ string UnderscoresToCapitalizedCamelCase(const FieldDescriptor* field);
56
+
57
+ // Similar, but for method names. (Typically, this merely has the effect
58
+ // of lower-casing the first letter of the name.)
59
+ string UnderscoresToCamelCase(const MethodDescriptor* method);
60
+
61
+ // Strips ".proto" or ".protodevel" from the end of a filename.
62
+ string StripProto(const string& filename);
63
+
64
+ // Gets the unqualified class name for the file. Each .proto file becomes a
65
+ // single Java class, with all its contents nested in that class.
66
+ string FileClassName(const FileDescriptor* file);
67
+
68
+ // Returns the file's Java package name.
69
+ string FileJavaPackage(const FileDescriptor* file);
70
+
71
+ // Returns output directory for the given package name.
72
+ string JavaPackageToDir(string package_name);
73
+
74
+ // Converts the given fully-qualified name in the proto namespace to its
75
+ // fully-qualified name in the Java namespace, given that it is in the given
76
+ // file.
77
+ string ToJavaName(const string& full_name, const FileDescriptor* file);
78
+
79
+ // These return the fully-qualified class name corresponding to the given
80
+ // descriptor.
81
+ inline string ClassName(const Descriptor* descriptor) {
82
+ return ToJavaName(descriptor->full_name(), descriptor->file());
83
+ }
84
+ inline string ClassName(const EnumDescriptor* descriptor) {
85
+ return ToJavaName(descriptor->full_name(), descriptor->file());
86
+ }
87
+ inline string ClassName(const ServiceDescriptor* descriptor) {
88
+ return ToJavaName(descriptor->full_name(), descriptor->file());
89
+ }
90
+ inline string ExtensionIdentifierName(const FieldDescriptor* descriptor) {
91
+ return ToJavaName(descriptor->full_name(), descriptor->file());
92
+ }
93
+ string ClassName(const FileDescriptor* descriptor);
94
+
95
+ // Get the unqualified name that should be used for a field's field
96
+ // number constant.
97
+ string FieldConstantName(const FieldDescriptor *field);
98
+
99
+ // Returns the type of the FieldDescriptor.
100
+ // This does nothing interesting for the open source release, but is used for
101
+ // hacks that improve compatability with version 1 protocol buffers at Google.
102
+ FieldDescriptor::Type GetType(const FieldDescriptor* field);
103
+
104
+ enum JavaType {
105
+ JAVATYPE_INT,
106
+ JAVATYPE_LONG,
107
+ JAVATYPE_FLOAT,
108
+ JAVATYPE_DOUBLE,
109
+ JAVATYPE_BOOLEAN,
110
+ JAVATYPE_STRING,
111
+ JAVATYPE_BYTES,
112
+ JAVATYPE_ENUM,
113
+ JAVATYPE_MESSAGE
114
+ };
115
+
116
+ JavaType GetJavaType(const FieldDescriptor* field);
117
+
118
+ // Get the fully-qualified class name for a boxed primitive type, e.g.
119
+ // "java.lang.Integer" for JAVATYPE_INT. Returns NULL for enum and message
120
+ // types.
121
+ const char* BoxedPrimitiveTypeName(JavaType type);
122
+
123
+ string DefaultValue(const FieldDescriptor* field);
124
+ bool IsDefaultValueJavaDefault(const FieldDescriptor* field);
125
+
126
+ // Does this message class keep track of unknown fields?
127
+ inline bool HasUnknownFields(const Descriptor* descriptor) {
128
+ return descriptor->file()->options().optimize_for() !=
129
+ FileOptions::LITE_RUNTIME;
130
+ }
131
+
132
+ // Does this message class have generated parsing, serialization, and other
133
+ // standard methods for which reflection-based fallback implementations exist?
134
+ inline bool HasGeneratedMethods(const Descriptor* descriptor) {
135
+ return descriptor->file()->options().optimize_for() !=
136
+ FileOptions::CODE_SIZE;
137
+ }
138
+
139
+ // Does this message have specialized equals() and hashCode() methods?
140
+ inline bool HasEqualsAndHashCode(const Descriptor* descriptor) {
141
+ return descriptor->file()->options().java_generate_equals_and_hash();
142
+ }
143
+
144
+ // Does this message class have descriptor and reflection methods?
145
+ inline bool HasDescriptorMethods(const Descriptor* descriptor) {
146
+ return descriptor->file()->options().optimize_for() !=
147
+ FileOptions::LITE_RUNTIME;
148
+ }
149
+ inline bool HasDescriptorMethods(const EnumDescriptor* descriptor) {
150
+ return descriptor->file()->options().optimize_for() !=
151
+ FileOptions::LITE_RUNTIME;
152
+ }
153
+ inline bool HasDescriptorMethods(const FileDescriptor* descriptor) {
154
+ return descriptor->options().optimize_for() !=
155
+ FileOptions::LITE_RUNTIME;
156
+ }
157
+
158
+ inline bool HasNestedBuilders(const Descriptor* descriptor) {
159
+ // The proto-lite version doesn't support nested builders.
160
+ return descriptor->file()->options().optimize_for() !=
161
+ FileOptions::LITE_RUNTIME;
162
+ }
163
+
164
+ // Should we generate generic services for this file?
165
+ inline bool HasGenericServices(const FileDescriptor *file) {
166
+ return file->service_count() > 0 &&
167
+ file->options().optimize_for() != FileOptions::LITE_RUNTIME &&
168
+ file->options().java_generic_services();
169
+ }
170
+
171
+
172
+ // Methods for shared bitfields.
173
+
174
+ // Gets the name of the shared bitfield for the given index.
175
+ string GetBitFieldName(int index);
176
+
177
+ // Gets the name of the shared bitfield for the given bit index.
178
+ // Effectively, GetBitFieldName(bitIndex / 32)
179
+ string GetBitFieldNameForBit(int bitIndex);
180
+
181
+ // Generates the java code for the expression that returns the boolean value
182
+ // of the bit of the shared bitfields for the given bit index.
183
+ // Example: "((bitField1_ & 0x04) == 0x04)"
184
+ string GenerateGetBit(int bitIndex);
185
+
186
+ // Generates the java code for the expression that sets the bit of the shared
187
+ // bitfields for the given bit index.
188
+ // Example: "bitField1_ = (bitField1_ | 0x04)"
189
+ string GenerateSetBit(int bitIndex);
190
+
191
+ // Generates the java code for the expression that clears the bit of the shared
192
+ // bitfields for the given bit index.
193
+ // Example: "bitField1_ = (bitField1_ & ~0x04)"
194
+ string GenerateClearBit(int bitIndex);
195
+
196
+ // Does the same as GenerateGetBit but operates on the bit field on a local
197
+ // variable. This is used by the builder to copy the value in the builder to
198
+ // the message.
199
+ // Example: "((from_bitField1_ & 0x04) == 0x04)"
200
+ string GenerateGetBitFromLocal(int bitIndex);
201
+
202
+ // Does the same as GenerateSetBit but operates on the bit field on a local
203
+ // variable. This is used by the builder to copy the value in the builder to
204
+ // the message.
205
+ // Example: "to_bitField1_ = (to_bitField1_ | 0x04)"
206
+ string GenerateSetBitToLocal(int bitIndex);
207
+
208
+ } // namespace java
209
+ } // namespace compiler
210
+ } // namespace protobuf
211
+
212
+ } // namespace google
213
+ #endif // GOOGLE_PROTOBUF_COMPILER_JAVA_HELPERS_H__
@@ -0,0 +1,109 @@
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
+ #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_MESSAGE_H__
36
+ #define GOOGLE_PROTOBUF_COMPILER_JAVA_MESSAGE_H__
37
+
38
+ #include <string>
39
+ #include <google/protobuf/stubs/common.h>
40
+ #include <google/protobuf/compiler/java/java_field.h>
41
+
42
+ namespace google {
43
+ namespace protobuf {
44
+ namespace io {
45
+ class Printer; // printer.h
46
+ }
47
+ }
48
+
49
+ namespace protobuf {
50
+ namespace compiler {
51
+ namespace java {
52
+
53
+ class MessageGenerator {
54
+ public:
55
+ explicit MessageGenerator(const Descriptor* descriptor);
56
+ ~MessageGenerator();
57
+
58
+ // All static variables have to be declared at the top-level of the file
59
+ // so that we can control initialization order, which is important for
60
+ // DescriptorProto bootstrapping to work.
61
+ void GenerateStaticVariables(io::Printer* printer);
62
+
63
+ // Output code which initializes the static variables generated by
64
+ // GenerateStaticVariables().
65
+ void GenerateStaticVariableInitializers(io::Printer* printer);
66
+
67
+ // Generate the class itself.
68
+ void Generate(io::Printer* printer);
69
+
70
+ // Generates the base interface that both the class and its builder implement
71
+ void GenerateInterface(io::Printer* printer);
72
+
73
+ // Generate code to register all contained extensions with an
74
+ // ExtensionRegistry.
75
+ void GenerateExtensionRegistrationCode(io::Printer* printer);
76
+
77
+ private:
78
+ enum UseMemoization {
79
+ MEMOIZE,
80
+ DONT_MEMOIZE
81
+ };
82
+
83
+ void GenerateMessageSerializationMethods(io::Printer* printer);
84
+ void GenerateParseFromMethods(io::Printer* printer);
85
+ void GenerateSerializeOneField(io::Printer* printer,
86
+ const FieldDescriptor* field);
87
+ void GenerateSerializeOneExtensionRange(
88
+ io::Printer* printer, const Descriptor::ExtensionRange* range);
89
+
90
+ void GenerateBuilder(io::Printer* printer);
91
+ void GenerateCommonBuilderMethods(io::Printer* printer);
92
+ void GenerateDescriptorMethods(io::Printer* printer);
93
+ void GenerateBuilderParsingMethods(io::Printer* printer);
94
+ void GenerateIsInitialized(io::Printer* printer,
95
+ UseMemoization useMemoization);
96
+ void GenerateEqualsAndHashCode(io::Printer* printer);
97
+
98
+ const Descriptor* descriptor_;
99
+ FieldGeneratorMap field_generators_;
100
+
101
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageGenerator);
102
+ };
103
+
104
+ } // namespace java
105
+ } // namespace compiler
106
+ } // namespace protobuf
107
+
108
+ } // namespace google
109
+ #endif // GOOGLE_PROTOBUF_COMPILER_JAVA_MESSAGE_H__