Go to the documentation of this file.
54 #include <google/protobuf/port_def.inc>
67 return val.full_name();
77 return val.GetRepresentative()->full_name();
81 bool CompareSortKeys(
const T*
a,
const T*
b) {
82 return GetSortKey(*
a) < GetSortKey(*
b);
86 std::vector<const T*> Sorted(
const std::unordered_set<const T*>& vals) {
87 std::vector<const T*> sorted(vals.begin(), vals.end());
88 std::sort(sorted.begin(), sorted.end(), CompareSortKeys<T>);
105 variables_[
"file_level_service_descriptors"] =
111 for (
int i = 0;
i <
msgs.size();
i++) {
146 std::sort(
sccs_.begin(),
sccs_.end(), CompareSortKeys<SCC>);
156 if (
file_->
name() !=
"net/proto2/compiler/proto/plugin.proto" &&
157 file_->
name() !=
"google/protobuf/compiler/plugin.proto") {
160 std::vector<std::string> names_to_undef;
161 std::vector<const FieldDescriptor*>
fields;
163 for (
int i = 0;
i <
fields.size();
i++) {
165 static const char* kMacroNames[] = {
"major",
"minor"};
167 if (
name == kMacroNames[
i]) {
168 names_to_undef.push_back(
name);
173 for (
int i = 0;
i < names_to_undef.size(); ++
i) {
186 IncludeFile(
"net/proto2/public/port_def.inc", printer);
193 "PROTOBUF_NAMESPACE_OPEN\n"
194 "namespace internal {\n"
195 "class AnyMetadata;\n"
196 "} // namespace internal\n"
197 "PROTOBUF_NAMESPACE_CLOSE\n");
231 "// @@protoc_insertion_point(namespace_scope)\n"
240 "// @@protoc_insertion_point(global_scope)\n"
242 IncludeFile(
"net/proto2/public/port_undef.inc", printer);
257 "#error \"Do not SWIG-wrap protobufs.\"\n"
263 format(
"// IWYU pragma: private, include \"$1$.proto.h\"\n\n",
274 format(
"// @@protoc_insertion_point(includes)\n");
293 format(
"#include \"$1$.proto.h\" // IWYU pragma: export\n",
306 format(
"// @@protoc_insertion_point(includes)\n");
317 "// @@protoc_insertion_point(namespace_scope)\n");
321 "// @@protoc_insertion_point(global_scope)\n"
341 format(
"#include <google/protobuf/$1$>",
path);
343 format(
"#include \"$1$google/protobuf/$2$\"",
347 format(
"#include \"$1$\"", google3_name);
351 format(
" // IWYU pragma: export");
359 bool use_system_include =
false;
365 use_system_include =
true;
374 if (use_system_include) {
389 "// Generated by the protocol buffer compiler. DO NOT EDIT!\n"
390 "// source: $filename$\n"
394 "#include <algorithm>\n"
399 DoIncludeFile(
"net/proto2/public/stubs/common.h",
false, printer);
402 IncludeFile(
"net/proto2/io/public/coded_stream.h", printer);
404 IncludeFile(
"net/proto2/public/extension_set.h", printer);
405 IncludeFile(
"net/proto2/public/wire_format_lite.h", printer);
409 IncludeFile(
"net/proto2/io/public/zero_copy_stream_impl_lite.h", printer);
413 IncludeFile(
"net/proto2/public/descriptor.h", printer);
414 IncludeFile(
"net/proto2/public/generated_message_reflection.h", printer);
415 IncludeFile(
"net/proto2/public/reflection_ops.h", printer);
416 IncludeFile(
"net/proto2/public/wire_format.h", printer);
421 "#include \"net/proto2/bridge/internal/message_set_util.h\"\n");
434 format(
"#include \"$1$.proto.h\"\n", basename);
438 format(
"// @@protoc_insertion_point(includes)\n");
439 IncludeFile(
"net/proto2/public/port_def.inc", printer);
448 " ::$proto_ns$::internal::ExplicitlyConstructed<$2$> _instance;\n",
474 if (msg ==
nullptr)
return;
512 format(
"extern $1$ ::$proto_ns$::internal::SCCInfo<$2$> $3$;\n",
517 for (
auto scc : Sorted(refs.
weak_sccs)) {
519 "extern __attribute__((weak)) ::$proto_ns$::internal::SCCInfo<$1$> "
528 format(
"extern __attribute__((weak)) $1$ $2$;\n",
536 "extern __attribute__((weak)) const "
537 "::$proto_ns$::internal::DescriptorTable $1$;\n",
569 format(
"void $1$_ReferenceStrong() {}\n",
579 "// @@protoc_insertion_point(namespace_scope)\n");
589 "// @@protoc_insertion_point(global_scope)\n");
643 format(
"void $1$_ReferenceStrong() {}\n",
653 for (
auto scc :
sccs_) {
699 "// @@protoc_insertion_point(namespace_scope)\n");
711 "// @@protoc_insertion_point(global_scope)\n");
713 IncludeFile(
"net/proto2/public/port_undef.inc", printer);
720 format(
"static ::$proto_ns$::Metadata $file_level_metadata$[$1$];\n",
725 "constexpr ::$proto_ns$::Metadata* $file_level_metadata$ = nullptr;\n");
730 "const ::$proto_ns$::EnumDescriptor* "
731 "$file_level_enum_descriptors$[$1$];\n",
736 "constexpr ::$proto_ns$::EnumDescriptor const** "
737 "$file_level_enum_descriptors$ = nullptr;\n");
742 "const ::$proto_ns$::ServiceDescriptor* "
743 "$file_level_service_descriptors$[$1$];\n",
748 "constexpr ::$proto_ns$::ServiceDescriptor const** "
749 "$file_level_service_descriptors$ = nullptr;\n");
755 "const $uint32$ $tablename$::offsets[] "
756 "PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {\n");
758 std::vector<std::pair<size_t, size_t> > pairs;
766 "static const ::$proto_ns$::internal::MigrationSchema schemas[] "
767 "PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {\n");
781 "::$proto_ns$::Message const * const file_default_instances[] = {\n");
786 "reinterpret_cast<const "
787 "::$proto_ns$::Message*>(&$1$::_$2$_default_instance_),\n",
799 "const $uint32$ $tablename$::offsets[1] = {};\n"
800 "static constexpr ::$proto_ns$::internal::MigrationSchema* schemas = "
803 "static constexpr ::$proto_ns$::Message* const* "
804 "file_default_instances = nullptr;\n"
815 format(
"const char $1$[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =\n",
821 file_proto.SerializeToString(&
file_data);
828 static const int kBytesPerLine = 25;
831 for (
int j = 0; j < kBytesPerLine &&
i <
file_data.size(); ++
i, ++j) {
839 static const int kBytesPerLine = 40;
840 for (
int i = 0;
i <
file_data.size();
i += kBytesPerLine) {
857 "static const ::$proto_ns$::internal::DescriptorTable*const "
858 "$desc_table$_deps[$1$] = {\n",
859 std::max(num_deps, 1));
872 "static ::$proto_ns$::internal::SCCInfoBase*const "
873 "$desc_table$_sccs[$1$] = {\n",
874 std::max<int>(
sccs_.size(), 1));
876 for (
auto scc :
sccs_) {
884 "static ::$proto_ns$::internal::once_flag $desc_table$_once;\n"
885 "static bool $desc_table$_initialized = false;\n"
886 "const ::$proto_ns$::internal::DescriptorTable $desc_table$ = {\n"
887 " &$desc_table$_initialized, $1$, \"$filename$\", $2$,\n"
888 " &$desc_table$_once, $desc_table$_sccs, $desc_table$_deps, $3$, $4$,\n"
889 " schemas, file_default_instances, $tablename$::offsets,\n"
890 " $file_level_metadata$, $5$, $file_level_enum_descriptors$, "
891 "$file_level_service_descriptors$,\n"
900 if (
file_->
name() !=
"net/proto2/proto/descriptor.proto") {
902 "// Force running AddDescriptors() at dynamic initialization time.\n"
903 "static bool $1$ = ("
904 " ::$proto_ns$::internal::AddDescriptors(&$desc_table$), true);\n",
916 format(
" GOOGLE_PROTOBUF_VERIFY_VERSION;\n\n");
931 " void* ptr = &$1$;\n"
932 " new (ptr) $2$();\n",
940 "::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);"
953 format(
"$1$::InitAsDefaultInstance();\n",
960 "$dllexport_decl $::$proto_ns$::internal::SCCInfo<$1$> $2$ =\n"
962 "{{ATOMIC_VAR_INIT(::$proto_ns$::internal::SCCInfoBase::kUninitialized), "
963 "$1$, InitDefaults$2$}, {",
978 "PROTOBUF_CONSTEXPR_VAR ::$proto_ns$::internal::ParseTableField\n"
979 " const $tablename$::entries[] "
980 "PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {\n");
983 std::vector<size_t> entries;
987 entries.push_back(
value);
993 format(
"{0, 0, 0, ::$proto_ns$::internal::kInvalidMask, 0, 0},\n");
1000 "PROTOBUF_CONSTEXPR_VAR "
1001 "::$proto_ns$::internal::AuxillaryParseTableField\n"
1002 " const $tablename$::aux[] "
1003 "PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {\n");
1006 std::vector<size_t> aux_entries;
1010 aux_entries.push_back(
value);
1015 format(
"::$proto_ns$::internal::AuxillaryParseTableField(),\n");
1021 "PROTOBUF_CONSTEXPR_VAR ::$proto_ns$::internal::ParseTable const\n"
1022 " $tablename$::schema[] "
1023 "PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {\n");
1027 size_t aux_offset = 0;
1031 aux_offset += aux_entries[
i];
1035 format(
"{ nullptr, nullptr, 0, -1, -1, false },\n");
1046 "const ::$proto_ns$::internal::FieldMetadata "
1047 "$tablename$::field_metadata[] "
1050 std::vector<int> field_metadata_offsets;
1053 field_metadata_offsets.push_back(
idx);
1056 field_metadata_offsets.push_back(
idx);
1060 "const ::$proto_ns$::internal::SerializationTable "
1061 "$tablename$::serialization_table[] = {\n");
1066 std::vector<const Descriptor*> calculated_order =
1071 format(
"{$1$, $tablename$::field_metadata + $2$},\n",
1072 field_metadata_offsets[
i + 1] - field_metadata_offsets[
i],
1073 field_metadata_offsets[
i]);
1088 for (
const auto&
p :
enums_) {
1092 "enum ${1$$2$$}$ : int;\n"
1093 "bool $2$_IsValid(int value);\n",
1094 enum_desc, enumname);
1100 "class ${1$$2$$}$;\n"
1102 "$dllexport_decl $extern $3$ $4$;\n",
1105 if (
options.lite_implicit_weak_fields) {
1106 format(
"void $1$_ReferenceStrong();\n", classname);
1113 for (
const auto& pair :
classes_) {
1115 "template<> $dllexport_decl $"
1116 "$1$* Arena::CreateMaybeMessage<$1$>(Arena*);\n",
1123 std::map<std::string, const EnumDescriptor*>
enums_;
1127 std::unordered_set<const FileDescriptor*>* fd_set) {
1136 std::vector<const Descriptor*> classes;
1137 std::vector<const EnumDescriptor*>
enums;
1143 std::vector<const FieldDescriptor*>
fields;
1145 for (
int i = 0;
i <
fields.size();
i++) {
1146 classes.push_back(
fields[
i]->containing_type());
1155 std::unordered_set<const FileDescriptor*> public_set;
1158 std::map<std::string, ForwardDeclarations> decls;
1159 for (
int i = 0;
i < classes.size();
i++) {
1161 if (
d && !public_set.count(
d->file()))
1164 for (
int i = 0;
i <
enums.size();
i++) {
1166 if (
d && !public_set.count(
d->file()))
1173 for (
const auto& pair : decls) {
1178 format(
"PROTOBUF_NAMESPACE_OPEN\n");
1179 for (
const auto& pair : decls) {
1182 format(
"PROTOBUF_NAMESPACE_CLOSE\n");
1189 "// Generated by the protocol buffer compiler. DO NOT EDIT!\n"
1190 "// source: $filename$\n"
1195 "#include <limits>\n"
1196 "#include <string>\n",
1200 format(
"#include <type_traits>\n");
1207 format(
"#endif // $GOOGLE_PROTOBUF$_INCLUDED_$1$\n",
1214 IncludeFile(
"net/proto2/public/implicit_weak_message.h", printer);
1218 IncludeFile(
"net/proto2/public/weak_field_map.h", printer);
1222 IncludeFile(
"net/proto2/public/lazy_field.h", printer);
1228 IncludeFile(
"net/proto2/public/port_def.inc", printer);
1230 "#if PROTOBUF_VERSION < $1$\n"
1231 "#error This file was generated by a newer version of protoc which is\n"
1232 "#error incompatible with your Protocol Buffer headers. Please update\n"
1233 "#error your headers.\n"
1235 "#if $2$ < PROTOBUF_MIN_PROTOC_VERSION\n"
1236 "#error This file was generated by an older version of protoc which "
1238 "#error incompatible with your Protocol Buffer headers. Please\n"
1239 "#error regenerate this file with a newer version of protoc.\n"
1242 PROTOBUF_MIN_HEADER_VERSION_FOR_PROTOC,
1244 IncludeFile(
"net/proto2/public/port_undef.inc", printer);
1248 IncludeFile(
"net/proto2/io/public/coded_stream.h", printer);
1249 IncludeFile(
"net/proto2/public/arena.h", printer);
1250 IncludeFile(
"net/proto2/public/arenastring.h", printer);
1251 IncludeFile(
"net/proto2/public/generated_message_table_driven.h", printer);
1252 IncludeFile(
"net/proto2/public/generated_message_util.h", printer);
1253 IncludeFile(
"net/proto2/public/inlined_string_field.h", printer);
1256 IncludeFile(
"net/proto2/public/metadata.h", printer);
1257 IncludeFile(
"net/proto2/public/generated_message_reflection.h", printer);
1259 IncludeFile(
"net/proto2/public/metadata_lite.h", printer);
1264 IncludeFile(
"net/proto2/public/message.h", printer);
1266 IncludeFile(
"net/proto2/public/message_lite.h", printer);
1282 IncludeFile(
"net/proto2/public/string_piece_field_support.h", printer);
1285 format(
"#include \"third_party/absl/strings/cord.h\"\n");
1291 IncludeFile(
"net/proto2/public/map_entry.h", printer);
1292 IncludeFile(
"net/proto2/public/map_field_inl.h", printer);
1294 IncludeFile(
"net/proto2/public/map_entry_lite.h", printer);
1295 IncludeFile(
"net/proto2/public/map_field_lite.h", printer);
1301 IncludeFile(
"net/proto2/public/generated_enum_reflection.h", printer);
1303 IncludeFile(
"net/proto2/public/generated_enum_util.h", printer);
1308 IncludeFile(
"net/proto2/public/service.h", printer);
1312 IncludeFile(
"net/proto2/public/unknown_field_set.h", printer);
1316 IncludeFile(
"net/proto2/internal/any.h", printer);
1327 format.Set(
"info_path", info_path);
1330 "#pragma $pragma$ \"$info_path$\"\n"
1331 "#endif // $guard$\n");
1364 "// Internal implementation detail -- do not use these members.\n"
1365 "struct $dllexport_decl $$tablename$ {\n"
1368 " static const ::$proto_ns$::internal::ParseTableField entries[]\n"
1369 " PROTOBUF_SECTION_VARIABLE(protodesc_cold);\n"
1370 " static const ::$proto_ns$::internal::AuxillaryParseTableField aux[]\n"
1371 " PROTOBUF_SECTION_VARIABLE(protodesc_cold);\n"
1372 " static const ::$proto_ns$::internal::ParseTable schema[$1$]\n"
1373 " PROTOBUF_SECTION_VARIABLE(protodesc_cold);\n"
1374 " static const ::$proto_ns$::internal::FieldMetadata field_metadata[];\n"
1375 " static const ::$proto_ns$::internal::SerializationTable "
1376 "serialization_table[];\n"
1377 " static const $uint32$ offsets[];\n"
1382 "extern $dllexport_decl $const ::$proto_ns$::internal::DescriptorTable "
1430 if (extension_generator->IsScoped())
continue;
1431 extension_generator->GenerateDeclaration(printer);
1441 " #pragma GCC diagnostic push\n"
1442 " #pragma GCC diagnostic ignored \"-Wstrict-aliasing\"\n"
1443 "#endif // __GNUC__\n");
1454 " #pragma GCC diagnostic pop\n"
1455 "#endif // __GNUC__\n");
std::unordered_set< const FileDescriptor * > strong_reflection_files
static const upb_enumdef enums[5]
bool IsBootstrapProto(const Options &options, const FileDescriptor *file)
#define GOOGLE_CHECK_EQ(A, B)
MessageSCCAnalyzer scc_analyzer_
bool IsAnyMessage(const FileDescriptor *descriptor, const Options &options)
GLuint const GLchar * name
const Descriptor::ReservedRange value
const EnumDescriptor * enum_type(int index) const
std::vector< std::unique_ptr< MessageGenerator > > message_generators_
std::string ProtobufNamespace(const Options &options)
void GenerateSource(io::Printer *printer)
void GenerateHeader(io::Printer *printer)
std::string StripProto(const std::string &filename)
void GenerateServiceDefinitions(io::Printer *printer)
static bool HasEnumDefinitions(const Descriptor *message_type)
static bool HasLazyFields(const Descriptor *descriptor, const Options &options)
std::set< const FileDescriptor * > weak_deps_
void DoIncludeFile(const std::string &google3_name, bool do_export, io::Printer *printer)
void GenerateDependencyIncludes(io::Printer *printer)
void GenerateProto2NamespaceEnumSpecializations(io::Printer *printer)
void IncludeFile(const std::string &google3_name, io::Printer *printer)
string CEscape(const string &src)
void GenerateExtensionIdentifiers(io::Printer *printer)
std::string QualifiedClassName(const Descriptor *d, const Options &options)
GLsizei const GLchar *const * string
std::unordered_set< const SCC * > strong_sccs
void AddEnum(const EnumDescriptor *d)
zend_class_entry * enum_type
void GenerateTables(io::Printer *printer)
string UniqueName(const std::string &name, const std::string &filename, const Options &options)
void GenerateSourceDefaultInstance(int idx, io::Printer *printer)
#define T(upbtypeconst, upbtype, ctype, default_value)
static uint32_t idx(tarjan *t, const upb_refcounted *r)
int enum_type_count() const
static bool HasMapFields(const Descriptor *descriptor)
void FlattenMessagesInFile(const FileDescriptor *file, std::vector< const Descriptor * > *result)
bool IsWeak(const FieldDescriptor *field, const Options &options)
void GeneratePBHeader(io::Printer *printer, const std::string &info_path)
bool HasWeakFields(const Descriptor *descriptor, const Options &options)
GLboolean GLboolean GLboolean b
std::string FileDllExport(const FileDescriptor *file, const Options &options)
void AddMessage(const Descriptor *d)
zend_class_entry * message_type
#define GOOGLE_ARRAYSIZE(a)
static bool HasStringPieceFields(const Descriptor *descriptor, const Options &options)
const SCC * GetSCC(const Descriptor *d)
bool UsingImplicitWeakFields(const FileDescriptor *file, const Options &options)
void GenerateMessageDefinitions(io::Printer *printer)
void Print(const Formatter &format, const Options &options) const
void GenerateMetadataPragma(io::Printer *printer, const std::string &info_path)
void GenerateGlobalStateFunctionDeclarations(io::Printer *printer)
const FileDescriptor * file_
static void PublicImportDFS(const FileDescriptor *fd, std::unordered_set< const FileDescriptor * > *fd_set)
FileGenerator(const FileDescriptor *file, const Options &options)
const ServiceDescriptor * service(int index) const
GLsizei const GLchar ** path
bool lite_implicit_weak_fields
static const char prefix[]
std::vector< std::unique_ptr< ExtensionGenerator > > extension_generators_
GLint GLint GLsizei GLint GLenum format
bool IsImplicitWeakField(const FieldDescriptor *field, const Options &options, MessageSCCAnalyzer *scc_analyzer)
int public_dependency_count() const
bool IsMapEntryMessage(const Descriptor *descriptor)
void GenerateBottomHeaderGuard(io::Printer *printer, bool pb_h)
std::string CreateHeaderInclude(const std::string &basename, const FileDescriptor *file)
void GenerateInitForSCC(const SCC *scc, io::Printer *printer)
std::string DefaultInstanceType(const Descriptor *descriptor, const Options &options)
void ChangeTo(const std::string &name)
void GenerateInlineFunctionDefinitions(io::Printer *printer)
std::vector< const SCC * > sccs_
std::string DescriptorTableName(const FileDescriptor *file, const Options &options)
bool UseUnknownFieldSet(const FileDescriptor *file, const Options &options)
bool IsDepWeak(const FileDescriptor *dep) const
bool table_driven_serialization
std::map< std::string, std::string > variables_
void SetCommonVars(const Options &options, std::map< std::string, std::string > *variables)
std::unordered_set< const SCC * > weak_sccs
bool GetBootstrapBasename(const Options &options, const std::string &basename, std::string *bootstrap_basename)
std::string IncludeGuard(const FileDescriptor *file, bool pb_h, const Options &options)
std::string QualifiedDefaultInstanceName(const Descriptor *descriptor, const Options &options)
void GenerateTopHeaderGuard(io::Printer *printer, bool pb_h)
static const upb_msgdef msgs[22]
bool HasDescriptorMethods(const FileDescriptor *file, const Options &options)
const FieldDescriptor * field
void ListAllFields(const Descriptor *d, std::vector< const FieldDescriptor * > *fields)
std::vector< const SCC * > children
const FileDescriptor * weak_dependency(int index) const
void CopyTo(FileDescriptorProto *proto) const
#define GOOGLE_CHECK(EXPRESSION)
static bool HasCordFields(const Descriptor *descriptor, const Options &options)
const char kThickSeparator[]
std::string Namespace(const std::string &package)
const std::string & name() const
static const upb_fielddef fields[107]
bool IsWellKnownMessage(const FileDescriptor *file)
std::map< std::string, const EnumDescriptor * > enums_
std::string annotation_guard_name
std::string SccInfoSymbol(const SCC *scc, const Options &options)
void StringReplace(const string &s, const string &oldsub, const string &newsub, bool replace_all, string *res)
bool HasGenericServices(const FileDescriptor *file, const Options &options)
const SCC * GetSCC(const Descriptor *descriptor)
std::unordered_set< const Descriptor * > weak_default_instances
void GenerateMacroUndefs(io::Printer *printer)
std::string DefaultInstanceName(const Descriptor *descriptor, const Options &options)
void GetCrossFileReferencesForField(const FieldDescriptor *field, CrossFileReferences *refs)
const FileDescriptor * dependency(int index) const
const FieldDescriptor * extension(int index) const
int service_count() const
static bool HasExtensionsOrExtendableMessage(const Descriptor *descriptor)
void GenerateGlobalSource(io::Printer *printer)
void GenerateProtoHeader(io::Printer *printer, const std::string &info_path)
std::string EscapeTrigraphs(const std::string &to_escape)
std::vector< const Descriptor * > descriptors
void PrintTopLevelDecl(const Formatter &format, const Options &options) const
std::string ClassName(const Descriptor *descriptor)
static bool HasRepeatedFields(const Descriptor *descriptor)
std::vector< std::unique_ptr< ServiceGenerator > > service_generators_
void GenerateReflectionInitializationCode(io::Printer *printer)
std::unordered_set< const FileDescriptor * > weak_reflection_files
void GenerateSourceForMessage(int idx, io::Printer *printer)
void ForEachField(const Descriptor *d, T &&func)
void ListAllTypesForServices(const FileDescriptor *fd, std::vector< const Descriptor * > *types)
std::string annotation_pragma_name
void GenerateForwardDeclarations(io::Printer *printer)
bool table_driven_parsing
bool IsSCCRepresentative(const Descriptor *d)
GLsizei const GLfloat * value
const Descriptor * descriptor_
void GenerateEnumDefinitions(io::Printer *printer)
const char kThinSeparator[]
bool IsProto2MessageSetFile(const FileDescriptor *file, const Options &options)
void GenerateSourceIncludes(io::Printer *printer)
const FileDescriptor * public_dependency(int index) const
GLboolean GLboolean GLboolean GLboolean a
void GenerateInternalForwardDeclarations(const CrossFileReferences &refs, io::Printer *printer)
FileDescriptorProto * file_
void GetCrossFileReferencesForFile(const FileDescriptor *file, CrossFileReferences *refs)
void GenerateLibraryIncludes(io::Printer *printer)
GLenum GLuint GLenum GLsizei const GLchar * message
int extension_count() const
std::string runtime_include_base
int weak_dependency_count() const
int dependency_count() const
std::vector< std::unique_ptr< EnumGenerator > > enum_generators_
DebugStringOptions options_
void IncludeFileAndExport(const std::string &google3_name, io::Printer *printer)
std::map< std::string, const Descriptor * > classes_
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:49