Go to the documentation of this file.
37 #include <unordered_set>
57 using internal::WireFormat;
58 using internal::WireFormatLite;
61 "// ===================================================================\n";
63 "// -------------------------------------------------------------------\n";
67 const char* kDefaultPackage =
"";
72 const char* kForbiddenWordList[] = {
81 new std::unordered_set<string>({
82 "abstract",
"assert",
"boolean",
"break",
"byte",
83 "case",
"catch",
"char",
"class",
"const",
84 "continue",
"default",
"do",
"double",
"else",
85 "enum",
"extends",
"final",
"finally",
"float",
86 "for",
"goto",
"if",
"implements",
"import",
87 "instanceof",
"int",
"interface",
"long",
"native",
88 "new",
"package",
"private",
"protected",
"public",
89 "return",
"short",
"static",
"strictfp",
"super",
90 "switch",
"synchronized",
"this",
"throw",
"throws",
91 "transient",
"try",
"void",
"volatile",
"while",
96 if (field_name == kForbiddenWordList[
i]) {
109 field_name =
field->message_type()->name();
111 field_name =
field->name();
113 if (IsForbidden(field_name)) {
126 if (annotation_file.empty()) {
130 "@javax.annotation.Generated(value=\"protoc\", comments=\"annotations:";
131 ptemplate.push_back(delimiter);
132 ptemplate.append(
"annotation_file");
133 ptemplate.push_back(delimiter);
134 ptemplate.append(
"\")\n");
135 printer->
Print(ptemplate.c_str(),
"annotation_file", annotation_file);
140 const std::map<std::string, std::string>& variables,
141 const char* var_name,
142 const char* terminating_string,
bool enforce_lite) {
144 enforce_lite ?
StrCat(var_name,
".internalGetVerifier()")
146 "new com.google.protobuf.Internal.EnumVerifier() {\n"
147 " @java.lang.Override\n"
148 " public boolean isInRange(int number) {\n"
151 ".forNumber(number) != null;\n"
156 StrCat(enum_verifier_string, terminating_string).c_str());
160 bool cap_next_letter) {
164 for (
int i = 0;
i <
input.size();
i++) {
166 if (cap_next_letter) {
167 result +=
input[
i] + (
'A' -
'a');
171 cap_next_letter =
false;
173 if (
i == 0 && !cap_next_letter) {
176 result +=
input[
i] + (
'a' -
'A');
181 cap_next_letter =
false;
184 cap_next_letter =
true;
186 cap_next_letter =
true;
226 if (
'0' <= fieldName[0] && fieldName[0] <=
'9') {
227 return '_' + fieldName;
251 result = kDefaultPackage;
252 if (!file->
package().empty()) {
253 if (!result.empty()) result +=
'.';
267 if (!package_dir.empty()) package_dir +=
"/";
293 std::string interfaces =
"// @@protoc_insertion_point(message_implements:" +
300 std::string interfaces =
"// @@protoc_insertion_point(builder_implements:" +
306 std::string interfaces =
"// @@protoc_insertion_point(interface_extends:" +
318 return field->type();
380 return "java.lang.String";
382 return "com.google.protobuf.ByteString";
403 return "java.lang.Integer";
405 return "java.lang.Long";
407 return "java.lang.Float";
409 return "java.lang.Double";
411 return "java.lang.Boolean";
413 return "java.lang.String";
415 return "com.google.protobuf.ByteString";
437 return "java.lang.Integer";
493 for (
int i = 0;
i < text.size();
i++) {
494 if ((text[
i] & 0x80) != 0) {
505 switch (
field->cpp_type()) {
518 if (
value == std::numeric_limits<double>::infinity()) {
519 return "Double.POSITIVE_INFINITY";
520 }
else if (
value == -std::numeric_limits<double>::infinity()) {
521 return "Double.NEGATIVE_INFINITY";
530 if (
value == std::numeric_limits<float>::infinity()) {
531 return "Float.POSITIVE_INFINITY";
532 }
else if (
value == -std::numeric_limits<float>::infinity()) {
533 return "Float.NEGATIVE_INFINITY";
541 return field->default_value_bool() ?
"true" :
"false";
544 if (
field->has_default_value()) {
547 "com.google.protobuf.Internal.bytesDefaultValue(\"$0\")",
550 return "com.google.protobuf.ByteString.EMPTY";
555 return "\"" +
CEscape(
field->default_value_string()) +
"\"";
559 "com.google.protobuf.Internal.stringDefaultValue(\"$0\")",
566 field->default_value_enum()->name();
570 ".getDefaultInstance()";
583 switch (
field->cpp_type()) {
585 return field->default_value_int32() == 0;
587 return field->default_value_uint32() == 0;
589 return field->default_value_int64() == 0L;
591 return field->default_value_uint64() == 0L;
593 return field->default_value_double() == 0.0;
595 return field->default_value_float() == 0.0;
597 return field->default_value_bool() ==
false;
599 return field->default_value_enum()->number() == 0;
614 field->default_value_string() !=
"";
618 "0x00000001",
"0x00000002",
"0x00000004",
"0x00000008",
619 "0x00000010",
"0x00000020",
"0x00000040",
"0x00000080",
621 "0x00000100",
"0x00000200",
"0x00000400",
"0x00000800",
622 "0x00001000",
"0x00002000",
"0x00004000",
"0x00008000",
624 "0x00010000",
"0x00020000",
"0x00040000",
"0x00080000",
625 "0x00100000",
"0x00200000",
"0x00400000",
"0x00800000",
627 "0x01000000",
"0x02000000",
"0x04000000",
"0x08000000",
628 "0x10000000",
"0x20000000",
"0x40000000",
"0x80000000",
646 int bitInVarIndex = bitIndex % 32;
655 int bitInVarIndex = bitIndex % 32;
665 return GenerateGetBitInternal(
"", bitIndex);
669 return GenerateSetBitInternal(
"", bitIndex);
674 int bitInVarIndex = bitIndex % 32;
682 return GenerateGetBitInternal(
"from_", bitIndex);
686 return GenerateSetBitInternal(
"to_", bitIndex);
690 return GenerateGetBitInternal(
"mutable_", bitIndex);
694 return GenerateSetBitInternal(
"mutable_", bitIndex);
843 std::unordered_set<const Descriptor*>* already_seen) {
844 if (already_seen->count(
type) > 0) {
855 already_seen->insert(
type);
860 if (
type->extension_range_count() > 0)
return true;
862 for (
int i = 0;
i <
type->field_count();
i++) {
864 if (
field->is_required()) {
878 std::unordered_set<const Descriptor*> already_seen;
885 if (
field->is_repeated()) {
907 std::vector<uint16>*
output) {
918 while (
number >= 0xD800) {
931 int result =
field->type();
950 int result =
field->type();
962 static const int kMapFieldType = 50;
963 static const int kOneofFieldTypeOffset = 51;
964 static const int kRequiredBit = 0x100;
965 static const int kUtf8CheckBit = 0x200;
966 static const int kCheckInitialized = 0x400;
967 static const int kMapWithProto2EnumValue = 0x800;
968 int extra_bits =
field->is_required() ? kRequiredBit : 0;
970 extra_bits |= kUtf8CheckBit;
974 extra_bits |= kCheckInitialized;
977 if (
field->is_map()) {
980 field->message_type()->FindFieldByName(
"value");
982 extra_bits |= kMapWithProto2EnumValue;
985 return kMapFieldType | extra_bits;
986 }
else if (
field->is_packed()) {
988 }
else if (
field->is_repeated()) {
990 }
else if (
field->containing_oneof() !=
NULL) {
992 kOneofFieldTypeOffset) |
1003 }
else if (code ==
'\b') {
1005 }
else if (code ==
'\n') {
1007 }
else if (code ==
'\r') {
1009 }
else if (code ==
'\f') {
1011 }
else if (code ==
'\'') {
1013 }
else if (code ==
'\"') {
1015 }
else if (code ==
'\\') {
1017 }
else if (code >= 0x20 && code <= 0x7f) {
1018 output->push_back(
static_cast<char>(code));
std::string UnderscoresToCamelCase(const std::string &input, bool cap_next_letter)
void Print(const std::map< std::string, std::string > &variables, const char *text)
std::string GenerateClearBit(int bitIndex)
GLuint const GLchar * name
std::string UnderscoresToCamelCaseCheckReserved(const FieldDescriptor *field)
const char kThinSeparator[]
string SimpleDtoa(double value)
std::string FieldName(const FieldDescriptor *field)
std::string GenerateGetBitMutableLocal(int bitIndex)
bool IsByteStringWithCustomDefaultValue(const FieldDescriptor *field)
zend_class_entry * field_type
void UpperString(string *s)
string StrCat(const AlphaNum &a, const AlphaNum &b)
int GetExperimentalJavaFieldTypeForPacked(const FieldDescriptor *field)
bool HasRepeatedFields(const Descriptor *descriptor)
std::string GenerateSetBit(int bitIndex)
string CEscape(const string &src)
std::string UnderscoresToCapitalizedCamelCase(const FieldDescriptor *field)
void PrintEnumVerifierLogic(io::Printer *printer, const FieldDescriptor *descriptor, const std::map< std::string, std::string > &variables, const char *var_name, const char *terminating_string, bool enforce_lite)
GLsizei const GLchar *const * string
int GetExperimentalJavaFieldTypeForSingular(const FieldDescriptor *field)
int GetExperimentalJavaFieldType(const FieldDescriptor *field)
std::string CamelCaseFieldName(const FieldDescriptor *field)
const std::string & name() const
bool CheckUtf8(const FieldDescriptor *descriptor)
std::string ExtraMessageOrBuilderInterfaces(const Descriptor *descriptor)
#define GOOGLE_ARRAYSIZE(a)
const std::string & package() const
int GetExperimentalJavaFieldTypeForRepeated(const FieldDescriptor *field)
bool IsDefaultValueJavaDefault(const FieldDescriptor *field)
const char * BoxedPrimitiveTypeName(JavaType type)
bool has_java_package() const
std::string JavaPackageToDir(std::string package_name)
const char kThickSeparator[]
void PrintGeneratedAnnotation(io::Printer *printer, char delimiter, const std::string &annotation_file)
static const char prefix[]
std::string FileClassName(const FileDescriptor *file, bool immutable)
JavaType GetJavaType(const FieldDescriptor *field)
std::string ExtraMessageInterfaces(const Descriptor *descriptor)
bool IsReferenceType(JavaType type)
std::string GetFileClassName(const FileDescriptor *file, bool immutable)
std::string GenerateSetBitToLocal(int bitIndex)
#define GOOGLE_LOG(LEVEL)
const char *const kReservedNames[]
std::string GetBitFieldName(int index)
int FixedSize(FieldDescriptor::Type type)
string Substitute(const char *format, const SubstituteArg &arg0, const SubstituteArg &arg1, const SubstituteArg &arg2, const SubstituteArg &arg3, const SubstituteArg &arg4, const SubstituteArg &arg5, const SubstituteArg &arg6, const SubstituteArg &arg7, const SubstituteArg &arg8, const SubstituteArg &arg9)
const FileOptions & options() const
std::string FileJavaPackage(const FileDescriptor *file, bool immutable)
string StringPrintf(const char *format,...)
string SimpleFtoa(float value)
const FieldDescriptor * field
void WriteUInt32ToUtf16CharSequence(uint32 number, std::vector< uint16 > *output)
#define GOOGLE_CHECK(EXPRESSION)
FieldDescriptor::Type GetType(const FieldDescriptor *field)
bool SupportFieldPresence(const FileDescriptor *descriptor)
static const upb_fielddef fields[107]
std::string ClassName(const Descriptor *descriptor)
const char * FieldTypeName(FieldDescriptor::Type field_type)
void StringReplace(const string &s, const string &oldsub, const string &newsub, bool replace_all, string *res)
std::string CapitalizedFieldName(const FieldDescriptor *field)
std::string GetBitFieldNameForBit(int bitIndex)
std::string UniqueFileScopeIdentifier(const Descriptor *descriptor)
std::string GenerateSetBitMutableLocal(int bitIndex)
std::string GetOneofStoredType(const FieldDescriptor *field)
bool AllAscii(const std::string &text)
std::string ExtraBuilderInterfaces(const Descriptor *descriptor)
std::string FieldConstantName(const FieldDescriptor *field)
std::string DefaultValue(const FieldDescriptor *field, bool immutable, ClassNameResolver *name_resolver)
std::string StripProto(const std::string &filename)
std::string GenerateGetBit(int bitIndex)
bool HasRequiredFields(const Descriptor *type, std::unordered_set< const Descriptor * > *already_seen)
std::string GetClassName(const Descriptor *descriptor, bool immutable)
bool HasSuffixString(const string &str, const string &suffix)
GLsizei const GLfloat * value
const char * GetCapitalizedType(const FieldDescriptor *field, bool immutable)
string StripSuffixString(const string &str, const string &suffix)
const upb_json_parsermethod const upb_symtab upb_sink * output
const char * PrimitiveTypeName(JavaType type)
const FieldDescriptor ** SortFieldsByNumber(const Descriptor *descriptor)
const std::string & java_package() const
const Descriptor::ReservedRange const EnumValueDescriptor method
std::string GenerateGetBitFromLocal(int bitIndex)
void EscapeUtf16ToString(uint16 code, std::string *output)
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:55