| // Protocol Buffers - Google's data interchange format |
| // Copyright 2008 Google Inc. All rights reserved. |
| // https://developers.google.com/protocol-buffers/ |
| // |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions are |
| // met: |
| // |
| // * Redistributions of source code must retain the above copyright |
| // notice, this list of conditions and the following disclaimer. |
| // * Redistributions in binary form must reproduce the above |
| // copyright notice, this list of conditions and the following disclaimer |
| // in the documentation and/or other materials provided with the |
| // distribution. |
| // * Neither the name of Google Inc. nor the names of its |
| // contributors may be used to endorse or promote products derived from |
| // this software without specific prior written permission. |
| // |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| #include <google/protobuf/compiler/cpp/generator.h> |
| #include <google/protobuf/compiler/java/generator.h> |
| #include <google/protobuf/compiler/java/kotlin_generator.h> |
| #include <google/protobuf/compiler/command_line_interface.h> |
| #include <google/protobuf/compiler/csharp/csharp_generator.h> |
| #include <google/protobuf/compiler/objectivec/objectivec_generator.h> |
| #include <google/protobuf/compiler/php/php_generator.h> |
| #include <google/protobuf/compiler/python/generator.h> |
| #include <google/protobuf/compiler/python/pyi_generator.h> |
| #include <google/protobuf/compiler/ruby/ruby_generator.h> |
| |
| // Must be included last. |
| #include <google/protobuf/port_def.inc> |
| |
| namespace google { |
| namespace protobuf { |
| namespace compiler { |
| |
| int ProtobufMain(int argc, char* argv[]) { |
| |
| CommandLineInterface cli; |
| cli.AllowPlugins("protoc-"); |
| |
| // Proto2 C++ |
| cpp::CppGenerator cpp_generator; |
| cli.RegisterGenerator("--cpp_out", "--cpp_opt", &cpp_generator, |
| "Generate C++ header and source."); |
| |
| #ifdef GOOGLE_PROTOBUF_RUNTIME_INCLUDE_BASE |
| cpp_generator.set_opensource_runtime(true); |
| cpp_generator.set_runtime_include_base(GOOGLE_PROTOBUF_RUNTIME_INCLUDE_BASE); |
| #endif |
| |
| // Proto2 Java |
| java::JavaGenerator java_generator; |
| cli.RegisterGenerator("--java_out", "--java_opt", &java_generator, |
| "Generate Java source file."); |
| |
| // Proto2 Kotlin |
| java::KotlinGenerator kt_generator; |
| cli.RegisterGenerator("--kotlin_out", "--kotlin_opt", &kt_generator, |
| "Generate Kotlin file."); |
| |
| |
| // Proto2 Python |
| python::Generator py_generator; |
| cli.RegisterGenerator("--python_out", "--python_opt", &py_generator, |
| "Generate Python source file."); |
| // Python pyi |
| python::PyiGenerator pyi_generator; |
| cli.RegisterGenerator("--pyi_out", &pyi_generator, |
| "Generate python pyi stub."); |
| |
| // PHP |
| php::Generator php_generator; |
| cli.RegisterGenerator("--php_out", "--php_opt", &php_generator, |
| "Generate PHP source file."); |
| |
| // Ruby |
| ruby::Generator rb_generator; |
| cli.RegisterGenerator("--ruby_out", "--ruby_opt", &rb_generator, |
| "Generate Ruby source file."); |
| |
| // CSharp |
| csharp::Generator csharp_generator; |
| cli.RegisterGenerator("--csharp_out", "--csharp_opt", &csharp_generator, |
| "Generate C# source file."); |
| |
| // Objective-C |
| objectivec::ObjectiveCGenerator objc_generator; |
| cli.RegisterGenerator("--objc_out", "--objc_opt", &objc_generator, |
| "Generate Objective-C header and source."); |
| |
| return cli.Run(argc, argv); |
| } |
| |
| } // namespace compiler |
| } // namespace protobuf |
| } // namespace google |
| |
| int main(int argc, char* argv[]) { |
| return PROTOBUF_NAMESPACE_ID::compiler::ProtobufMain(argc, argv); |
| } |