grpc
third_party
protobuf
src
google
protobuf
compiler
protobuf/src/google/protobuf/compiler/plugin.h
Go to the documentation of this file.
1
// Protocol Buffers - Google's data interchange format
2
// Copyright 2008 Google Inc. All rights reserved.
3
// https://developers.google.com/protocol-buffers/
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
// Front-end for protoc code generator plugins written in C++.
34
//
35
// To implement a protoc plugin in C++, simply write an implementation of
36
// CodeGenerator, then create a main() function like:
37
// int main(int argc, char* argv[]) {
38
// MyCodeGenerator generator;
39
// return google::protobuf::compiler::PluginMain(argc, argv, &generator);
40
// }
41
// You must link your plugin against libprotobuf and libprotoc.
42
//
43
// The core part of PluginMain is to invoke the given CodeGenerator on a
44
// CodeGeneratorRequest to generate a CodeGeneratorResponse. This part is
45
// abstracted out and made into function GenerateCode so that it can be reused,
46
// for example, to implement a variant of PluginMain that does some
47
// preprocessing on the input CodeGeneratorRequest before feeding the request
48
// to the given code generator.
49
//
50
// To get protoc to use the plugin, do one of the following:
51
// * Place the plugin binary somewhere in the PATH and give it the name
52
// "protoc-gen-NAME" (replacing "NAME" with the name of your plugin). If you
53
// then invoke protoc with the parameter --NAME_out=OUT_DIR (again, replace
54
// "NAME" with your plugin's name), protoc will invoke your plugin to generate
55
// the output, which will be placed in OUT_DIR.
56
// * Place the plugin binary anywhere, with any name, and pass the --plugin
57
// parameter to protoc to direct it to your plugin like so:
58
// protoc --plugin=protoc-gen-NAME=path/to/mybinary --NAME_out=OUT_DIR
59
// On Windows, make sure to include the .exe suffix:
60
// protoc --plugin=protoc-gen-NAME=path/to/mybinary.exe --NAME_out=OUT_DIR
61
62
#ifndef GOOGLE_PROTOBUF_COMPILER_PLUGIN_H__
63
#define GOOGLE_PROTOBUF_COMPILER_PLUGIN_H__
64
65
#include <string>
66
67
#include <google/protobuf/port_def.inc>
68
69
namespace
google
{
70
namespace
protobuf
{
71
namespace
compiler
{
72
73
class
CodeGenerator
;
// code_generator.h
74
class
CodeGeneratorRequest;
75
class
CodeGeneratorResponse;
76
77
// Implements main() for a protoc plugin exposing the given code generator.
78
PROTOC_EXPORT
int
PluginMain
(
int
argc,
char
* argv[],
79
const
CodeGenerator
* generator);
80
81
82
// Generates code using the given code generator. Returns true if the code
83
// generation is successful. If the code generation fails, error_msg may be
84
// populated to describe the failure cause.
85
bool
GenerateCode
(
const
CodeGeneratorRequest&
request
,
86
const
CodeGenerator
& generator,
87
CodeGeneratorResponse*
response
,
std::string
* error_msg);
88
89
}
// namespace compiler
90
}
// namespace protobuf
91
}
// namespace google
92
93
#include <google/protobuf/port_undef.inc>
94
95
#endif // GOOGLE_PROTOBUF_COMPILER_PLUGIN_H__
benchmark.request
request
Definition:
benchmark.py:77
testing::internal::string
::std::string string
Definition:
bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
google::protobuf
Definition:
bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:12
google::protobuf::compiler::PluginMain
int PluginMain(int argc, char *argv[], const CodeGenerator *generator)
Definition:
bloaty/third_party/protobuf/src/google/protobuf/compiler/plugin.cc:147
grpc::protobuf::compiler::CodeGenerator
GRPC_CUSTOM_CODEGENERATOR CodeGenerator
Definition:
src/compiler/config.h:41
google::protobuf::compiler::GenerateCode
bool GenerateCode(const CodeGeneratorRequest &request, const CodeGenerator &generator, CodeGeneratorResponse *response, std::string *error_msg)
Definition:
bloaty/third_party/protobuf/src/google/protobuf/compiler/plugin.cc:103
asyncio_get_stats.response
response
Definition:
asyncio_get_stats.py:28
compiler
Definition:
bloaty/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.cc:21
google
Definition:
bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:11
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:43