#include <google/protobuf/compiler/cpp/helpers.h>
#include <cstdint>
#include <functional>
#include <limits>
#include <map>
#include <memory>
#include <queue>
#include <unordered_set>
#include <vector>
#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/logging.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/compiler/cpp/names.h>
#include <google/protobuf/compiler/cpp/options.h>
#include <google/protobuf/descriptor.pb.h>
#include <google/protobuf/compiler/scc.h>
#include <google/protobuf/io/printer.h>
#include <google/protobuf/io/zero_copy_stream.h>
#include <google/protobuf/dynamic_message.h>
#include <google/protobuf/wire_format.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/stubs/substitute.h>
#include <google/protobuf/stubs/hash.h>
#include <google/protobuf/port_def.inc>
namespace google {
namespace protobuf {
namespace compiler {
namespace cpp {
namespace {
static const char kAnyMessageName[] = …;
static const char kAnyProtoFile[] = …;
static const char kAnyLiteMessageName[] = …;
static const char kAnyLiteProtoFile[] = …;
std::string DotsToColons(const std::string& name) { … }
static const char* const kKeywordList[] = …;
static std::unordered_set<std::string>* MakeKeywordsMap() { … }
static std::unordered_set<std::string>& kKeywords = …;
std::string IntTypeName(const Options& options, const std::string& type) { … }
void SetIntVar(const Options& options, const std::string& type,
std::map<std::string, std::string>* variables) { … }
bool AllocExpected(const Descriptor* descriptor) { … }
enum class VerifyInt32Type { … };
inline VerifySimpleType VerifyInt32TypeToVerifyCustom(VerifyInt32Type t) { … }
}
bool IsLazy(const FieldDescriptor* field, const Options& options,
MessageSCCAnalyzer* scc_analyzer) { … }
inline bool IsEagerlyVerifiedLazyByProfile(const FieldDescriptor* field,
const Options& options,
MessageSCCAnalyzer* scc_analyzer) { … }
bool IsEagerlyVerifiedLazy(const FieldDescriptor* field, const Options& options,
MessageSCCAnalyzer* scc_analyzer) { … }
bool IsLazilyVerifiedLazy(const FieldDescriptor* field,
const Options& options) { … }
void SetCommonVars(const Options& options,
std::map<std::string, std::string>* variables) { … }
void SetCommonMessageDataVariables(
const Descriptor* descriptor,
std::map<std::string, std::string>* variables) { … }
void SetUnknownFieldsVariable(const Descriptor* descriptor,
const Options& options,
std::map<std::string, std::string>* variables) { … }
std::string UnderscoresToCamelCase(const std::string& input,
bool cap_next_letter) { … }
const char kThickSeparator[] = …;
const char kThinSeparator[] = …;
bool CanInitializeByZeroing(const FieldDescriptor* field) { … }
std::string ClassName(const Descriptor* descriptor) { … }
std::string ClassName(const EnumDescriptor* enum_descriptor) { … }
std::string QualifiedClassName(const Descriptor* d, const Options& options) { … }
std::string QualifiedClassName(const EnumDescriptor* d,
const Options& options) { … }
std::string QualifiedClassName(const Descriptor* d) { … }
std::string QualifiedClassName(const EnumDescriptor* d) { … }
std::string ExtensionName(const FieldDescriptor* d) { … }
std::string QualifiedExtensionName(const FieldDescriptor* d,
const Options& options) { … }
std::string QualifiedExtensionName(const FieldDescriptor* d) { … }
std::string Namespace(const std::string& package) { … }
std::string Namespace(const FileDescriptor* d, const Options& options) { … }
std::string Namespace(const Descriptor* d, const Options& options) { … }
std::string Namespace(const FieldDescriptor* d, const Options& options) { … }
std::string Namespace(const EnumDescriptor* d, const Options& options) { … }
std::string DefaultInstanceType(const Descriptor* descriptor,
const Options& , bool split) { … }
std::string DefaultInstanceName(const Descriptor* descriptor,
const Options& , bool split) { … }
std::string DefaultInstancePtr(const Descriptor* descriptor,
const Options& options, bool split) { … }
std::string QualifiedDefaultInstanceName(const Descriptor* descriptor,
const Options& options, bool split) { … }
std::string QualifiedDefaultInstancePtr(const Descriptor* descriptor,
const Options& options, bool split) { … }
std::string DescriptorTableName(const FileDescriptor* file,
const Options& options) { … }
std::string FileDllExport(const FileDescriptor* file, const Options& options) { … }
std::string SuperClassName(const Descriptor* descriptor,
const Options& options) { … }
std::string ResolveKeyword(const std::string& name) { … }
std::string FieldName(const FieldDescriptor* field) { … }
std::string FieldMemberName(const FieldDescriptor* field, bool split) { … }
std::string OneofCaseConstantName(const FieldDescriptor* field) { … }
std::string QualifiedOneofCaseConstantName(const FieldDescriptor* field) { … }
std::string EnumValueName(const EnumValueDescriptor* enum_value) { … }
int EstimateAlignmentSize(const FieldDescriptor* field) { … }
std::string FieldConstantName(const FieldDescriptor* field) { … }
std::string FieldMessageTypeName(const FieldDescriptor* field,
const Options& options) { … }
std::string StripProto(const std::string& filename) { … }
const char* PrimitiveTypeName(FieldDescriptor::CppType type) { … }
std::string PrimitiveTypeName(const Options& options,
FieldDescriptor::CppType type) { … }
const char* DeclaredTypeMethodName(FieldDescriptor::Type type) { … }
std::string Int32ToString(int number) { … }
static std::string Int64ToString(int64_t number) { … }
static std::string UInt64ToString(uint64_t number) { … }
std::string DefaultValue(const FieldDescriptor* field) { … }
std::string DefaultValue(const Options& options, const FieldDescriptor* field) { … }
std::string FilenameIdentifier(const std::string& filename) { … }
std::string UniqueName(const std::string& name, const std::string& filename,
const Options& options) { … }
std::string QualifiedFileLevelSymbol(const FileDescriptor* file,
const std::string& name,
const Options& options) { … }
std::string EscapeTrigraphs(const std::string& to_escape) { … }
std::string SafeFunctionName(const Descriptor* descriptor,
const FieldDescriptor* field,
const std::string& prefix) { … }
bool IsStringInlined(const FieldDescriptor* descriptor,
const Options& options) { … }
static bool HasLazyFields(const Descriptor* descriptor, const Options& options,
MessageSCCAnalyzer* scc_analyzer) { … }
bool HasLazyFields(const FileDescriptor* file, const Options& options,
MessageSCCAnalyzer* scc_analyzer) { … }
bool ShouldSplit(const Descriptor*, const Options&) { … }
bool ShouldSplit(const FieldDescriptor*, const Options&) { … }
static bool HasRepeatedFields(const Descriptor* descriptor) { … }
bool HasRepeatedFields(const FileDescriptor* file) { … }
static bool IsStringPieceField(const FieldDescriptor* field,
const Options& options) { … }
static bool HasStringPieceFields(const Descriptor* descriptor,
const Options& options) { … }
bool HasStringPieceFields(const FileDescriptor* file, const Options& options) { … }
static bool IsCordField(const FieldDescriptor* field, const Options& options) { … }
static bool HasCordFields(const Descriptor* descriptor,
const Options& options) { … }
bool HasCordFields(const FileDescriptor* file, const Options& options) { … }
static bool HasExtensionsOrExtendableMessage(const Descriptor* descriptor) { … }
bool HasExtensionsOrExtendableMessage(const FileDescriptor* file) { … }
static bool HasMapFields(const Descriptor* descriptor) { … }
bool HasMapFields(const FileDescriptor* file) { … }
static bool HasEnumDefinitions(const Descriptor* message_type) { … }
bool HasEnumDefinitions(const FileDescriptor* file) { … }
bool ShouldVerify(const Descriptor* descriptor, const Options& options,
MessageSCCAnalyzer* scc_analyzer) { … }
bool ShouldVerify(const FileDescriptor* file, const Options& options,
MessageSCCAnalyzer* scc_analyzer) { … }
bool IsUtf8String(const FieldDescriptor* field) { … }
VerifySimpleType ShouldVerifySimple(const Descriptor* descriptor) { … }
bool IsStringOrMessage(const FieldDescriptor* field) { … }
FieldOptions::CType EffectiveStringCType(const FieldDescriptor* field,
const Options& options) { … }
bool IsAnyMessage(const FileDescriptor* descriptor, const Options& options) { … }
bool IsAnyMessage(const Descriptor* descriptor, const Options& options) { … }
bool IsWellKnownMessage(const FileDescriptor* file) { … }
static bool FieldEnforceUtf8(const FieldDescriptor* field,
const Options& options) { … }
static bool FileUtf8Verification(const FileDescriptor* file,
const Options& options) { … }
Utf8CheckMode GetUtf8CheckMode(const FieldDescriptor* field,
const Options& options) { … }
static void GenerateUtf8CheckCode(const FieldDescriptor* field,
const Options& options, bool for_parse,
const char* parameters,
const char* strict_function,
const char* verify_function,
const Formatter& format) { … }
void GenerateUtf8CheckCodeForString(const FieldDescriptor* field,
const Options& options, bool for_parse,
const char* parameters,
const Formatter& format) { … }
void GenerateUtf8CheckCodeForCord(const FieldDescriptor* field,
const Options& options, bool for_parse,
const char* parameters,
const Formatter& format) { … }
void FlattenMessagesInFile(const FileDescriptor* file,
std::vector<const Descriptor*>* result) { … }
bool HasWeakFields(const Descriptor* descriptor, const Options& options) { … }
bool HasWeakFields(const FileDescriptor* file, const Options& options) { … }
bool UsingImplicitWeakFields(const FileDescriptor* file,
const Options& options) { … }
bool IsImplicitWeakField(const FieldDescriptor* field, const Options& options,
MessageSCCAnalyzer* scc_analyzer) { … }
MessageAnalysis MessageSCCAnalyzer::GetSCCAnalysis(const SCC* scc) { … }
void ListAllFields(const Descriptor* d,
std::vector<const FieldDescriptor*>* fields) { … }
void ListAllFields(const FileDescriptor* d,
std::vector<const FieldDescriptor*>* fields) { … }
void ListAllTypesForServices(const FileDescriptor* fd,
std::vector<const Descriptor*>* types) { … }
bool GetBootstrapBasename(const Options& options, const std::string& basename,
std::string* bootstrap_basename) { … }
bool IsBootstrapProto(const Options& options, const FileDescriptor* file) { … }
bool MaybeBootstrap(const Options& options, GeneratorContext* generator_context,
bool bootstrap_flag, std::string* basename) { … }
static bool HasExtensionFromFile(const Message& msg, const FileDescriptor* file,
const Options& options,
bool* has_opt_codesize_extension) { … }
static bool HasBootstrapProblem(const FileDescriptor* file,
const Options& options,
bool* has_opt_codesize_extension) { … }
FileOptions_OptimizeMode GetOptimizeFor(const FileDescriptor* file,
const Options& options,
bool* has_opt_codesize_extension) { … }
inline bool IsMessageOwnedArenaEligible(const Descriptor* desc,
const Options& options) { … }
bool EnableMessageOwnedArena(const Descriptor* desc, const Options& options) { … }
bool EnableMessageOwnedArenaTrial(const Descriptor* desc,
const Options& options) { … }
bool HasMessageFieldOrExtension(const Descriptor* desc) { … }
}
}
}
}