1ffe3c632Sopenharmony_ci// Protocol Buffers - Google's data interchange format 2ffe3c632Sopenharmony_ci// Copyright 2008 Google Inc. All rights reserved. 3ffe3c632Sopenharmony_ci// https://developers.google.com/protocol-buffers/ 4ffe3c632Sopenharmony_ci// 5ffe3c632Sopenharmony_ci// Redistribution and use in source and binary forms, with or without 6ffe3c632Sopenharmony_ci// modification, are permitted provided that the following conditions are 7ffe3c632Sopenharmony_ci// met: 8ffe3c632Sopenharmony_ci// 9ffe3c632Sopenharmony_ci// * Redistributions of source code must retain the above copyright 10ffe3c632Sopenharmony_ci// notice, this list of conditions and the following disclaimer. 11ffe3c632Sopenharmony_ci// * Redistributions in binary form must reproduce the above 12ffe3c632Sopenharmony_ci// copyright notice, this list of conditions and the following disclaimer 13ffe3c632Sopenharmony_ci// in the documentation and/or other materials provided with the 14ffe3c632Sopenharmony_ci// distribution. 15ffe3c632Sopenharmony_ci// * Neither the name of Google Inc. nor the names of its 16ffe3c632Sopenharmony_ci// contributors may be used to endorse or promote products derived from 17ffe3c632Sopenharmony_ci// this software without specific prior written permission. 18ffe3c632Sopenharmony_ci// 19ffe3c632Sopenharmony_ci// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20ffe3c632Sopenharmony_ci// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21ffe3c632Sopenharmony_ci// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22ffe3c632Sopenharmony_ci// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23ffe3c632Sopenharmony_ci// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24ffe3c632Sopenharmony_ci// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25ffe3c632Sopenharmony_ci// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26ffe3c632Sopenharmony_ci// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27ffe3c632Sopenharmony_ci// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28ffe3c632Sopenharmony_ci// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29ffe3c632Sopenharmony_ci// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30ffe3c632Sopenharmony_ci 31ffe3c632Sopenharmony_ci#include <google/protobuf/compiler/cpp/cpp_generator.h> 32ffe3c632Sopenharmony_ci#include <google/protobuf/compiler/java/java_generator.h> 33ffe3c632Sopenharmony_ci#include <google/protobuf/compiler/js/js_generator.h> 34ffe3c632Sopenharmony_ci#include <google/protobuf/compiler/command_line_interface.h> 35ffe3c632Sopenharmony_ci#include <google/protobuf/compiler/python/python_generator.h> 36ffe3c632Sopenharmony_ci#include <google/protobuf/compiler/csharp/csharp_generator.h> 37ffe3c632Sopenharmony_ci#include <google/protobuf/compiler/objectivec/objectivec_generator.h> 38ffe3c632Sopenharmony_ci#include <google/protobuf/compiler/php/php_generator.h> 39ffe3c632Sopenharmony_ci#include <google/protobuf/compiler/ruby/ruby_generator.h> 40ffe3c632Sopenharmony_ci 41ffe3c632Sopenharmony_ci#include <google/protobuf/port_def.inc> 42ffe3c632Sopenharmony_ci 43ffe3c632Sopenharmony_cinamespace google { 44ffe3c632Sopenharmony_cinamespace protobuf { 45ffe3c632Sopenharmony_cinamespace compiler { 46ffe3c632Sopenharmony_ci 47ffe3c632Sopenharmony_ciint ProtobufMain(int argc, char* argv[]) { 48ffe3c632Sopenharmony_ci 49ffe3c632Sopenharmony_ci CommandLineInterface cli; 50ffe3c632Sopenharmony_ci cli.AllowPlugins("protoc-"); 51ffe3c632Sopenharmony_ci 52ffe3c632Sopenharmony_ci // Proto2 C++ 53ffe3c632Sopenharmony_ci cpp::CppGenerator cpp_generator; 54ffe3c632Sopenharmony_ci cli.RegisterGenerator("--cpp_out", "--cpp_opt", &cpp_generator, 55ffe3c632Sopenharmony_ci "Generate C++ header and source."); 56ffe3c632Sopenharmony_ci 57ffe3c632Sopenharmony_ci#ifdef GOOGLE_PROTOBUF_RUNTIME_INCLUDE_BASE 58ffe3c632Sopenharmony_ci cpp_generator.set_opensource_runtime(true); 59ffe3c632Sopenharmony_ci cpp_generator.set_runtime_include_base(GOOGLE_PROTOBUF_RUNTIME_INCLUDE_BASE); 60ffe3c632Sopenharmony_ci#endif 61ffe3c632Sopenharmony_ci 62ffe3c632Sopenharmony_ci // Proto2 Java 63ffe3c632Sopenharmony_ci java::JavaGenerator java_generator; 64ffe3c632Sopenharmony_ci cli.RegisterGenerator("--java_out", "--java_opt", &java_generator, 65ffe3c632Sopenharmony_ci "Generate Java source file."); 66ffe3c632Sopenharmony_ci 67ffe3c632Sopenharmony_ci 68ffe3c632Sopenharmony_ci // Proto2 Python 69ffe3c632Sopenharmony_ci python::Generator py_generator; 70ffe3c632Sopenharmony_ci cli.RegisterGenerator("--python_out", "--python_opt", &py_generator, 71ffe3c632Sopenharmony_ci "Generate Python source file."); 72ffe3c632Sopenharmony_ci 73ffe3c632Sopenharmony_ci // PHP 74ffe3c632Sopenharmony_ci php::Generator php_generator; 75ffe3c632Sopenharmony_ci cli.RegisterGenerator("--php_out", "--php_opt", &php_generator, 76ffe3c632Sopenharmony_ci "Generate PHP source file."); 77ffe3c632Sopenharmony_ci 78ffe3c632Sopenharmony_ci // Ruby 79ffe3c632Sopenharmony_ci ruby::Generator rb_generator; 80ffe3c632Sopenharmony_ci cli.RegisterGenerator("--ruby_out", "--ruby_opt", &rb_generator, 81ffe3c632Sopenharmony_ci "Generate Ruby source file."); 82ffe3c632Sopenharmony_ci 83ffe3c632Sopenharmony_ci // CSharp 84ffe3c632Sopenharmony_ci csharp::Generator csharp_generator; 85ffe3c632Sopenharmony_ci cli.RegisterGenerator("--csharp_out", "--csharp_opt", &csharp_generator, 86ffe3c632Sopenharmony_ci "Generate C# source file."); 87ffe3c632Sopenharmony_ci 88ffe3c632Sopenharmony_ci // Objective-C 89ffe3c632Sopenharmony_ci objectivec::ObjectiveCGenerator objc_generator; 90ffe3c632Sopenharmony_ci cli.RegisterGenerator("--objc_out", "--objc_opt", &objc_generator, 91ffe3c632Sopenharmony_ci "Generate Objective-C header and source."); 92ffe3c632Sopenharmony_ci 93ffe3c632Sopenharmony_ci // JavaScript 94ffe3c632Sopenharmony_ci js::Generator js_generator; 95ffe3c632Sopenharmony_ci cli.RegisterGenerator("--js_out", "--js_opt", &js_generator, 96ffe3c632Sopenharmony_ci "Generate JavaScript source."); 97ffe3c632Sopenharmony_ci 98ffe3c632Sopenharmony_ci return cli.Run(argc, argv); 99ffe3c632Sopenharmony_ci} 100ffe3c632Sopenharmony_ci 101ffe3c632Sopenharmony_ci} // namespace compiler 102ffe3c632Sopenharmony_ci} // namespace protobuf 103ffe3c632Sopenharmony_ci} // namespace google 104ffe3c632Sopenharmony_ci 105ffe3c632Sopenharmony_ciint main(int argc, char* argv[]) { 106ffe3c632Sopenharmony_ci return PROTOBUF_NAMESPACE_ID::compiler::ProtobufMain(argc, argv); 107ffe3c632Sopenharmony_ci} 108