protobuf
src
google
protobuf
compiler
cpp
cpp_generator.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
// Based on original Protocol Buffers design by
33
// Sanjay Ghemawat, Jeff Dean, and others.
34
//
35
// Generates C++ code for a given .proto file.
36
37
#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_GENERATOR_H__
38
#define GOOGLE_PROTOBUF_COMPILER_CPP_GENERATOR_H__
39
40
#include <string>
41
#include <
google/protobuf/compiler/code_generator.h
>
42
43
#include <google/protobuf/port_def.inc>
44
45
namespace
google
{
46
namespace
protobuf {
47
namespace
compiler
{
48
namespace
cpp
{
49
50
// CodeGenerator implementation which generates a C++ source file and
51
// header. If you create your own protocol compiler binary and you want
52
// it to support C++ output, you can do so by registering an instance of this
53
// CodeGenerator with the CommandLineInterface in your main() function.
54
class
PROTOC_EXPORT
CppGenerator
:
public
CodeGenerator
{
55
public
:
56
CppGenerator
();
57
~
CppGenerator
();
58
59
enum class
Runtime
{
60
kGoogle3,
// Use the internal google3 runtime.
61
kOpensource,
// Use the open-source runtime.
62
63
// Use the open-source runtime with google3 #include paths. We make these
64
// absolute to avoid ambiguity, so the runtime will be #included like:
65
// #include "third_party/protobuf/<...>/google/protobuf/message.h"
66
kOpensourceGoogle3
67
};
68
69
void
set_opensource_runtime
(
bool
opensource) {
70
opensource_runtime_ = opensource;
71
}
72
73
// If set to a non-empty string, generated code will do:
74
// #include "<BASE>/google/protobuf/message.h"
75
// instead of:
76
// #include <google/protobuf/message.h>
77
// This has no effect if opensource_runtime = false.
78
void
set_runtime_include_base
(
const
std::string
&
base
) {
79
runtime_include_base_ =
base
;
80
}
81
82
// implements CodeGenerator ----------------------------------------
83
bool
Generate(
const
FileDescriptor
* file,
const
std::string
& parameter,
84
GeneratorContext
* generator_context,
std::string
*
error
)
const
;
85
86
private
:
87
bool
opensource_runtime_ =
true
;
88
std::string
runtime_include_base_
;
89
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS
(
CppGenerator
);
90
};
91
92
}
// namespace cpp
93
}
// namespace compiler
94
}
// namespace protobuf
95
}
// namespace google
96
97
#include <google/protobuf/port_undef.inc>
98
99
#endif // GOOGLE_PROTOBUF_COMPILER_CPP_GENERATOR_H__
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS
#define GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeName)
Definition:
macros.h:40
google::protobuf::compiler::CodeGenerator
Definition:
code_generator.h:68
base
Definition:
logging.cc:2162
google::protobuf::compiler::cpp::CppGenerator::runtime_include_base_
std::string runtime_include_base_
Definition:
cpp_generator.h:88
string
GLsizei const GLchar *const * string
Definition:
glcorearb.h:3083
error
Definition:
cJSON.c:88
google::protobuf::compiler::cpp::CppGenerator::set_opensource_runtime
void set_opensource_runtime(bool opensource)
Definition:
cpp_generator.h:69
code_generator.h
cpp
Definition:
third_party/googletest/googlemock/scripts/generator/cpp/__init__.py:1
google::protobuf::FileDescriptor
Definition:
src/google/protobuf/descriptor.h:1320
google::protobuf::compiler::cpp::CppGenerator::Runtime
Runtime
Definition:
cpp_generator.h:59
google::protobuf::compiler::GeneratorContext
Definition:
code_generator.h:119
google::protobuf::compiler::cpp::CppGenerator::set_runtime_include_base
void set_runtime_include_base(const std::string &base)
Definition:
cpp_generator.h:78
google::protobuf::compiler::cpp::CppGenerator
Definition:
cpp_generator.h:54
compiler
Definition:
plugin.pb.cc:22
google
Definition:
data_proto2_to_proto3_util.h:11
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:49