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.
- data/.gitignore +17 -0
- data/.travis.yml +9 -0
- data/.yardopts +5 -0
- data/Gemfile +3 -0
- data/README.md +316 -0
- data/Rakefile +29 -0
- data/UPGRADING.md +60 -0
- data/bin/rpc_server +5 -0
- data/bin/rprotoc +62 -0
- data/examples/addressbook.pb.rb +55 -0
- data/examples/addressbook.proto +24 -0
- data/examples/reading_a_message.rb +32 -0
- data/examples/writing_a_message.rb +46 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/code_generator.h +142 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/command_line_interface.h +318 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum.h +99 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum_field.h +103 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_extension.h +85 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_field.h +167 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_file.h +98 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_generator.h +72 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_helpers.h +159 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message.h +170 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message_field.h +102 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_primitive_field.h +103 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_service.h +118 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_string_field.h +104 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.h +2721 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/importer.h +303 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum.h +84 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum_field.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_extension.h +77 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_field.h +108 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_file.h +101 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_generator.h +72 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_helpers.h +213 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message.h +109 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message_field.h +134 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_primitive_field.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_service.h +113 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_string_field.h +120 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/mock_code_generator.h +113 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/package_info.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/parser.h +434 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.h +73 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.pb.h +790 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/python/python_generator.h +156 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/subprocess.h +108 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/zip_writer.h +93 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.h +1367 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.pb.h +5223 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor_database.h +366 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/dynamic_message.h +136 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/extension_set.h +904 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_reflection.h +424 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_util.h +82 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream.h +1102 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream_inl.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/gzip_stream.h +207 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/package_info.h +54 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/printer.h +136 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/tokenizer.h +313 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream.h +238 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl.h +357 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl_lite.h +340 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/message.h +692 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/message_lite.h +239 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/package_info.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/reflection_ops.h +80 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/repeated_field.h +1295 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/service.h +291 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/common.h +1211 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/hash.h +220 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/map-util.h +119 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/once.h +123 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/stl_util-inl.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/strutil.h +457 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/substitute.h +170 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/test_util.h +174 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/test_util_lite.h +101 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/testing/file.h +83 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/testing/googletest.h +98 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/text_format.h +285 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest.pb.h +11915 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_custom_options.pb.h +2895 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_embed_optimize_for.pb.h +211 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_empty.pb.h +56 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import.pb.h +188 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import_lite.pb.h +151 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite.pb.h +4752 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite_imports_nonlite.pb.h +150 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_mset.pb.h +816 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_no_generic_services.pb.h +197 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_optimize_for.pb.h +403 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unknown_field_set.h +268 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format.h +304 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite.h +620 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite_inl.h +774 -0
- data/ext/ruby_generator/Makefile +10 -0
- data/ext/ruby_generator/RubyGenerator.cpp +450 -0
- data/ext/ruby_generator/RubyGenerator.h +199 -0
- data/ext/ruby_generator/extconf.rb +36 -0
- data/ext/ruby_generator/protoc-ruby +0 -0
- data/lib/protobuf/cli.rb +188 -0
- data/lib/protobuf/enum.rb +58 -0
- data/lib/protobuf/enum_value.rb +59 -0
- data/lib/protobuf/evented.rb +22 -0
- data/lib/protobuf/exceptions.rb +11 -0
- data/lib/protobuf/ext/eventmachine.rb +14 -0
- data/lib/protobuf/field/base_field.rb +240 -0
- data/lib/protobuf/field/bool_field.rb +36 -0
- data/lib/protobuf/field/bytes_field.rb +38 -0
- data/lib/protobuf/field/double_field.rb +19 -0
- data/lib/protobuf/field/enum_field.rb +50 -0
- data/lib/protobuf/field/extension_fields.rb +32 -0
- data/lib/protobuf/field/field_array.rb +65 -0
- data/lib/protobuf/field/fixed32_field.rb +19 -0
- data/lib/protobuf/field/fixed64_field.rb +22 -0
- data/lib/protobuf/field/float_field.rb +31 -0
- data/lib/protobuf/field/int32_field.rb +12 -0
- data/lib/protobuf/field/int64_field.rb +12 -0
- data/lib/protobuf/field/integer_field.rb +19 -0
- data/lib/protobuf/field/message_field.rb +53 -0
- data/lib/protobuf/field/sfixed32_field.rb +21 -0
- data/lib/protobuf/field/sfixed64_field.rb +24 -0
- data/lib/protobuf/field/signed_integer_field.rb +23 -0
- data/lib/protobuf/field/sint32_field.rb +12 -0
- data/lib/protobuf/field/sint64_field.rb +12 -0
- data/lib/protobuf/field/string_field.rb +14 -0
- data/lib/protobuf/field/uint32_field.rb +12 -0
- data/lib/protobuf/field/uint64_field.rb +12 -0
- data/lib/protobuf/field/varint_field.rb +61 -0
- data/lib/protobuf/field.rb +57 -0
- data/lib/protobuf/logger.rb +86 -0
- data/lib/protobuf/message/decoder.rb +83 -0
- data/lib/protobuf/message/encoder.rb +48 -0
- data/lib/protobuf/message/extend.rb +8 -0
- data/lib/protobuf/message/message.rb +1 -0
- data/lib/protobuf/message.rb +320 -0
- data/lib/protobuf/rpc/buffer.rb +79 -0
- data/lib/protobuf/rpc/client.rb +166 -0
- data/lib/protobuf/rpc/connector.rb +19 -0
- data/lib/protobuf/rpc/connectors/base.rb +38 -0
- data/lib/protobuf/rpc/connectors/common.rb +156 -0
- data/lib/protobuf/rpc/connectors/em_client.rb +84 -0
- data/lib/protobuf/rpc/connectors/eventmachine.rb +87 -0
- data/lib/protobuf/rpc/connectors/socket.rb +73 -0
- data/lib/protobuf/rpc/connectors/zmq.rb +69 -0
- data/lib/protobuf/rpc/error/client_error.rb +31 -0
- data/lib/protobuf/rpc/error/server_error.rb +43 -0
- data/lib/protobuf/rpc/error.rb +25 -0
- data/lib/protobuf/rpc/rpc.pb.rb +118 -0
- data/lib/protobuf/rpc/server.rb +89 -0
- data/lib/protobuf/rpc/servers/evented/server.rb +41 -0
- data/lib/protobuf/rpc/servers/evented_runner.rb +21 -0
- data/lib/protobuf/rpc/servers/socket/server.rb +111 -0
- data/lib/protobuf/rpc/servers/socket/worker.rb +66 -0
- data/lib/protobuf/rpc/servers/socket_runner.rb +27 -0
- data/lib/protobuf/rpc/servers/zmq/broker.rb +87 -0
- data/lib/protobuf/rpc/servers/zmq/server.rb +50 -0
- data/lib/protobuf/rpc/servers/zmq/util.rb +27 -0
- data/lib/protobuf/rpc/servers/zmq/worker.rb +60 -0
- data/lib/protobuf/rpc/servers/zmq_runner.rb +25 -0
- data/lib/protobuf/rpc/service.rb +173 -0
- data/lib/protobuf/rpc/service_dispatcher.rb +130 -0
- data/lib/protobuf/rpc/service_filters.rb +267 -0
- data/lib/protobuf/rpc/stat.rb +83 -0
- data/lib/protobuf/socket.rb +22 -0
- data/lib/protobuf/version.rb +4 -0
- data/lib/protobuf/wire_type.rb +10 -0
- data/lib/protobuf/zmq.rb +21 -0
- data/lib/protobuf.rb +86 -0
- data/proto/rpc.pb.rb +48 -0
- data/proto/rpc.proto +73 -0
- data/protobuf.gemspec +44 -0
- data/spec/benchmark/tasks.rb +179 -0
- data/spec/functional/embedded_service_spec.rb +7 -0
- data/spec/functional/evented_server_spec.rb +64 -0
- data/spec/functional/socket_server_spec.rb +58 -0
- data/spec/functional/zmq_server_spec.rb +58 -0
- data/spec/lib/protobuf/cli_spec.rb +212 -0
- data/spec/lib/protobuf/enum_spec.rb +98 -0
- data/spec/lib/protobuf/enum_value_spec.rb +15 -0
- data/spec/lib/protobuf/logger_spec.rb +131 -0
- data/spec/lib/protobuf/message/encoder_spec.rb +19 -0
- data/spec/lib/protobuf/message_spec.rb +209 -0
- data/spec/lib/protobuf/rpc/client_spec.rb +158 -0
- data/spec/lib/protobuf/rpc/connector_spec.rb +32 -0
- data/spec/lib/protobuf/rpc/connectors/base_spec.rb +50 -0
- data/spec/lib/protobuf/rpc/connectors/common_spec.rb +128 -0
- data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +36 -0
- data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +22 -0
- data/spec/lib/protobuf/rpc/servers/evented_server_spec.rb +18 -0
- data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +43 -0
- data/spec/lib/protobuf/rpc/servers/zmq/broker_spec.rb +35 -0
- data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +41 -0
- data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +45 -0
- data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +44 -0
- data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +116 -0
- data/spec/lib/protobuf/rpc/service_filters_spec.rb +451 -0
- data/spec/lib/protobuf/rpc/service_spec.rb +165 -0
- data/spec/lib/protobuf_spec.rb +62 -0
- data/spec/spec_helper.rb +51 -0
- data/spec/support/all.rb +6 -0
- data/spec/support/server.rb +101 -0
- data/spec/support/test/enum.pb.rb +34 -0
- data/spec/support/test/enum.proto +12 -0
- data/spec/support/test/resource.pb.rb +58 -0
- data/spec/support/test/resource.proto +31 -0
- data/spec/support/test/resource_service.rb +14 -0
- data/spec/support/test_app_file.rb +2 -0
- data/spec/support/tolerance_matcher.rb +40 -0
- data/test/data/data.bin +3 -0
- data/test/data/data_source.py +14 -0
- data/test/data/types.bin +0 -0
- data/test/data/types_source.py +22 -0
- data/test/data/unk.png +0 -0
- data/test/proto/addressbook.pb.rb +66 -0
- data/test/proto/addressbook.proto +33 -0
- data/test/proto/addressbook_base.pb.rb +58 -0
- data/test/proto/addressbook_base.proto +26 -0
- data/test/proto/addressbook_ext.pb.rb +20 -0
- data/test/proto/addressbook_ext.proto +6 -0
- data/test/proto/collision.pb.rb +17 -0
- data/test/proto/collision.proto +5 -0
- data/test/proto/ext_collision.pb.rb +24 -0
- data/test/proto/ext_collision.proto +8 -0
- data/test/proto/ext_range.pb.rb +22 -0
- data/test/proto/ext_range.proto +7 -0
- data/test/proto/float_default.proto +10 -0
- data/test/proto/lowercase.pb.rb +30 -0
- data/test/proto/lowercase.proto +9 -0
- data/test/proto/merge.pb.rb +39 -0
- data/test/proto/merge.proto +15 -0
- data/test/proto/nested.pb.rb +30 -0
- data/test/proto/nested.proto +9 -0
- data/test/proto/optional_field.pb.rb +35 -0
- data/test/proto/optional_field.proto +12 -0
- data/test/proto/packed.pb.rb +22 -0
- data/test/proto/packed.proto +6 -0
- data/test/proto/rpc.proto +6 -0
- data/test/proto/types.pb.rb +84 -0
- data/test/proto/types.proto +37 -0
- data/test/test_addressbook.rb +56 -0
- data/test/test_enum_value.rb +41 -0
- data/test/test_extension.rb +36 -0
- data/test/test_lowercase.rb +11 -0
- data/test/test_message.rb +128 -0
- data/test/test_optional_field.rb +103 -0
- data/test/test_packed_field.rb +40 -0
- data/test/test_parse.rb +15 -0
- data/test/test_repeated_types.rb +132 -0
- data/test/test_serialize.rb +61 -0
- data/test/test_standard_message.rb +96 -0
- data/test/test_types.rb +226 -0
- metadata +461 -0
|
@@ -0,0 +1,156 @@
|
|
|
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: robinson@google.com (Will Robinson)
|
|
32
|
+
//
|
|
33
|
+
// Generates Python code for a given .proto file.
|
|
34
|
+
|
|
35
|
+
#ifndef GOOGLE_PROTOBUF_COMPILER_PYTHON_GENERATOR_H__
|
|
36
|
+
#define GOOGLE_PROTOBUF_COMPILER_PYTHON_GENERATOR_H__
|
|
37
|
+
|
|
38
|
+
#include <string>
|
|
39
|
+
|
|
40
|
+
#include <google/protobuf/compiler/code_generator.h>
|
|
41
|
+
#include <google/protobuf/stubs/common.h>
|
|
42
|
+
|
|
43
|
+
namespace google {
|
|
44
|
+
namespace protobuf {
|
|
45
|
+
|
|
46
|
+
class Descriptor;
|
|
47
|
+
class EnumDescriptor;
|
|
48
|
+
class EnumValueDescriptor;
|
|
49
|
+
class FieldDescriptor;
|
|
50
|
+
class ServiceDescriptor;
|
|
51
|
+
|
|
52
|
+
namespace io { class Printer; }
|
|
53
|
+
|
|
54
|
+
namespace compiler {
|
|
55
|
+
namespace python {
|
|
56
|
+
|
|
57
|
+
// CodeGenerator implementation for generated Python protocol buffer classes.
|
|
58
|
+
// If you create your own protocol compiler binary and you want it to support
|
|
59
|
+
// Python output, you can do so by registering an instance of this
|
|
60
|
+
// CodeGenerator with the CommandLineInterface in your main() function.
|
|
61
|
+
class LIBPROTOC_EXPORT Generator : public CodeGenerator {
|
|
62
|
+
public:
|
|
63
|
+
Generator();
|
|
64
|
+
virtual ~Generator();
|
|
65
|
+
|
|
66
|
+
// CodeGenerator methods.
|
|
67
|
+
virtual bool Generate(const FileDescriptor* file,
|
|
68
|
+
const string& parameter,
|
|
69
|
+
GeneratorContext* generator_context,
|
|
70
|
+
string* error) const;
|
|
71
|
+
|
|
72
|
+
private:
|
|
73
|
+
void PrintImports() const;
|
|
74
|
+
void PrintFileDescriptor() const;
|
|
75
|
+
void PrintTopLevelEnums() const;
|
|
76
|
+
void PrintAllNestedEnumsInFile() const;
|
|
77
|
+
void PrintNestedEnums(const Descriptor& descriptor) const;
|
|
78
|
+
void PrintEnum(const EnumDescriptor& enum_descriptor) const;
|
|
79
|
+
|
|
80
|
+
void PrintTopLevelExtensions() const;
|
|
81
|
+
|
|
82
|
+
void PrintFieldDescriptor(
|
|
83
|
+
const FieldDescriptor& field, bool is_extension) const;
|
|
84
|
+
void PrintFieldDescriptorsInDescriptor(
|
|
85
|
+
const Descriptor& message_descriptor,
|
|
86
|
+
bool is_extension,
|
|
87
|
+
const string& list_variable_name,
|
|
88
|
+
int (Descriptor::*CountFn)() const,
|
|
89
|
+
const FieldDescriptor* (Descriptor::*GetterFn)(int) const) const;
|
|
90
|
+
void PrintFieldsInDescriptor(const Descriptor& message_descriptor) const;
|
|
91
|
+
void PrintExtensionsInDescriptor(const Descriptor& message_descriptor) const;
|
|
92
|
+
void PrintMessageDescriptors() const;
|
|
93
|
+
void PrintDescriptor(const Descriptor& message_descriptor) const;
|
|
94
|
+
void PrintNestedDescriptors(const Descriptor& containing_descriptor) const;
|
|
95
|
+
|
|
96
|
+
void PrintMessages() const;
|
|
97
|
+
void PrintMessage(const Descriptor& message_descriptor) const;
|
|
98
|
+
void PrintNestedMessages(const Descriptor& containing_descriptor) const;
|
|
99
|
+
|
|
100
|
+
void FixForeignFieldsInDescriptors() const;
|
|
101
|
+
void FixForeignFieldsInDescriptor(
|
|
102
|
+
const Descriptor& descriptor,
|
|
103
|
+
const Descriptor* containing_descriptor) const;
|
|
104
|
+
void FixForeignFieldsInField(const Descriptor* containing_type,
|
|
105
|
+
const FieldDescriptor& field,
|
|
106
|
+
const string& python_dict_name) const;
|
|
107
|
+
void AddMessageToFileDescriptor(const Descriptor& descriptor) const;
|
|
108
|
+
string FieldReferencingExpression(const Descriptor* containing_type,
|
|
109
|
+
const FieldDescriptor& field,
|
|
110
|
+
const string& python_dict_name) const;
|
|
111
|
+
template <typename DescriptorT>
|
|
112
|
+
void FixContainingTypeInDescriptor(
|
|
113
|
+
const DescriptorT& descriptor,
|
|
114
|
+
const Descriptor* containing_descriptor) const;
|
|
115
|
+
|
|
116
|
+
void FixForeignFieldsInExtensions() const;
|
|
117
|
+
void FixForeignFieldsInExtension(
|
|
118
|
+
const FieldDescriptor& extension_field) const;
|
|
119
|
+
void FixForeignFieldsInNestedExtensions(const Descriptor& descriptor) const;
|
|
120
|
+
|
|
121
|
+
void PrintServices() const;
|
|
122
|
+
void PrintServiceDescriptor(const ServiceDescriptor& descriptor) const;
|
|
123
|
+
void PrintServiceClass(const ServiceDescriptor& descriptor) const;
|
|
124
|
+
void PrintServiceStub(const ServiceDescriptor& descriptor) const;
|
|
125
|
+
|
|
126
|
+
void PrintEnumValueDescriptor(const EnumValueDescriptor& descriptor) const;
|
|
127
|
+
string OptionsValue(const string& class_name,
|
|
128
|
+
const string& serialized_options) const;
|
|
129
|
+
bool GeneratingDescriptorProto() const;
|
|
130
|
+
|
|
131
|
+
template <typename DescriptorT>
|
|
132
|
+
string ModuleLevelDescriptorName(const DescriptorT& descriptor) const;
|
|
133
|
+
string ModuleLevelMessageName(const Descriptor& descriptor) const;
|
|
134
|
+
string ModuleLevelServiceDescriptorName(
|
|
135
|
+
const ServiceDescriptor& descriptor) const;
|
|
136
|
+
|
|
137
|
+
template <typename DescriptorT, typename DescriptorProtoT>
|
|
138
|
+
void PrintSerializedPbInterval(
|
|
139
|
+
const DescriptorT& descriptor, DescriptorProtoT& proto) const;
|
|
140
|
+
|
|
141
|
+
// Very coarse-grained lock to ensure that Generate() is reentrant.
|
|
142
|
+
// Guards file_, printer_ and file_descriptor_serialized_.
|
|
143
|
+
mutable Mutex mutex_;
|
|
144
|
+
mutable const FileDescriptor* file_; // Set in Generate(). Under mutex_.
|
|
145
|
+
mutable string file_descriptor_serialized_;
|
|
146
|
+
mutable io::Printer* printer_; // Set in Generate(). Under mutex_.
|
|
147
|
+
|
|
148
|
+
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Generator);
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
} // namespace python
|
|
152
|
+
} // namespace compiler
|
|
153
|
+
} // namespace protobuf
|
|
154
|
+
|
|
155
|
+
} // namespace google
|
|
156
|
+
#endif // GOOGLE_PROTOBUF_COMPILER_PYTHON_GENERATOR_H__
|
|
@@ -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
|
+
|
|
33
|
+
#ifndef GOOGLE_PROTOBUF_COMPILER_SUBPROCESS_H__
|
|
34
|
+
#define GOOGLE_PROTOBUF_COMPILER_SUBPROCESS_H__
|
|
35
|
+
|
|
36
|
+
#ifdef _WIN32
|
|
37
|
+
#define WIN32_LEAN_AND_MEAN // right...
|
|
38
|
+
#include <windows.h>
|
|
39
|
+
#else // _WIN32
|
|
40
|
+
#include <sys/types.h>
|
|
41
|
+
#include <unistd.h>
|
|
42
|
+
#endif // !_WIN32
|
|
43
|
+
#include <google/protobuf/stubs/common.h>
|
|
44
|
+
|
|
45
|
+
#include <string>
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
namespace google {
|
|
49
|
+
namespace protobuf {
|
|
50
|
+
|
|
51
|
+
class Message;
|
|
52
|
+
|
|
53
|
+
namespace compiler {
|
|
54
|
+
|
|
55
|
+
// Utility class for launching sub-processes.
|
|
56
|
+
class Subprocess {
|
|
57
|
+
public:
|
|
58
|
+
Subprocess();
|
|
59
|
+
~Subprocess();
|
|
60
|
+
|
|
61
|
+
enum SearchMode {
|
|
62
|
+
SEARCH_PATH, // Use PATH environment variable.
|
|
63
|
+
EXACT_NAME // Program is an exact file name; don't use the PATH.
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// Start the subprocess. Currently we don't provide a way to specify
|
|
67
|
+
// arguments as protoc plugins don't have any.
|
|
68
|
+
void Start(const string& program, SearchMode search_mode);
|
|
69
|
+
|
|
70
|
+
// Serialize the input message and pipe it to the subprocess's stdin, then
|
|
71
|
+
// close the pipe. Meanwhile, read from the subprocess's stdout and parse
|
|
72
|
+
// the data into *output. All this is done carefully to avoid deadlocks.
|
|
73
|
+
// Returns true if successful. On any sort of error, returns false and sets
|
|
74
|
+
// *error to a description of the problem.
|
|
75
|
+
bool Communicate(const Message& input, Message* output, string* error);
|
|
76
|
+
|
|
77
|
+
#ifdef _WIN32
|
|
78
|
+
// Given an error code, returns a human-readable error message. This is
|
|
79
|
+
// defined here so that CommandLineInterface can share it.
|
|
80
|
+
static string Win32ErrorMessage(DWORD error_code);
|
|
81
|
+
#endif
|
|
82
|
+
|
|
83
|
+
private:
|
|
84
|
+
#ifdef _WIN32
|
|
85
|
+
DWORD process_start_error_;
|
|
86
|
+
HANDLE child_handle_;
|
|
87
|
+
|
|
88
|
+
// The file handles for our end of the child's pipes. We close each and
|
|
89
|
+
// set it to NULL when no longer needed.
|
|
90
|
+
HANDLE child_stdin_;
|
|
91
|
+
HANDLE child_stdout_;
|
|
92
|
+
|
|
93
|
+
#else // _WIN32
|
|
94
|
+
pid_t child_pid_;
|
|
95
|
+
|
|
96
|
+
// The file descriptors for our end of the child's pipes. We close each and
|
|
97
|
+
// set it to -1 when no longer needed.
|
|
98
|
+
int child_stdin_;
|
|
99
|
+
int child_stdout_;
|
|
100
|
+
|
|
101
|
+
#endif // !_WIN32
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
} // namespace compiler
|
|
105
|
+
} // namespace protobuf
|
|
106
|
+
|
|
107
|
+
} // namespace google
|
|
108
|
+
#endif // GOOGLE_PROTOBUF_COMPILER_SUBPROCESS_H__
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
// Protocol Buffers - Google's data interchange format
|
|
32
|
+
// Copyright 2008 Google Inc. All rights reserved.
|
|
33
|
+
// http://code.google.com/p/protobuf/
|
|
34
|
+
//
|
|
35
|
+
// Redistribution and use in source and binary forms, with or without
|
|
36
|
+
// modification, are permitted provided that the following conditions are
|
|
37
|
+
// met:
|
|
38
|
+
//
|
|
39
|
+
// * Redistributions of source code must retain the above copyright
|
|
40
|
+
// notice, this list of conditions and the following disclaimer.
|
|
41
|
+
// * Redistributions in binary form must reproduce the above
|
|
42
|
+
// copyright notice, this list of conditions and the following disclaimer
|
|
43
|
+
// in the documentation and/or other materials provided with the
|
|
44
|
+
// distribution.
|
|
45
|
+
// * Neither the name of Google Inc. nor the names of its
|
|
46
|
+
// contributors may be used to endorse or promote products derived from
|
|
47
|
+
// this software without specific prior written permission.
|
|
48
|
+
//
|
|
49
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
50
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
51
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
52
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
53
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
54
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
55
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
56
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
57
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
58
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
59
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
60
|
+
|
|
61
|
+
// Author: kenton@google.com (Kenton Varda)
|
|
62
|
+
|
|
63
|
+
#include <vector>
|
|
64
|
+
#include <google/protobuf/stubs/common.h>
|
|
65
|
+
#include <google/protobuf/io/zero_copy_stream.h>
|
|
66
|
+
|
|
67
|
+
namespace google {
|
|
68
|
+
namespace protobuf {
|
|
69
|
+
namespace compiler {
|
|
70
|
+
|
|
71
|
+
class ZipWriter {
|
|
72
|
+
public:
|
|
73
|
+
ZipWriter(io::ZeroCopyOutputStream* raw_output);
|
|
74
|
+
~ZipWriter();
|
|
75
|
+
|
|
76
|
+
bool Write(const string& filename, const string& contents);
|
|
77
|
+
bool WriteDirectory();
|
|
78
|
+
|
|
79
|
+
private:
|
|
80
|
+
struct FileInfo {
|
|
81
|
+
string name;
|
|
82
|
+
uint32 offset;
|
|
83
|
+
uint32 size;
|
|
84
|
+
uint32 crc32;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
io::ZeroCopyOutputStream* raw_output_;
|
|
88
|
+
vector<FileInfo> files_;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
} // namespace compiler
|
|
92
|
+
} // namespace protobuf
|
|
93
|
+
} // namespace google
|