Go to the documentation of this file.
55 using internal::WireFormat;
56 using internal::WireFormatLite;
61 int messageBitIndex,
int builderBitIndex,
62 const FieldGeneratorInfo* info,
63 ClassNameResolver* name_resolver,
64 std::map<std::string, std::string>* variables) {
70 (*variables)[
"field_type"] = (*variables)[
"type"];
77 (*variables)[
"field_list_type"] =
78 "com.google.protobuf.Internal." + capitalized_type +
"List";
79 (*variables)[
"empty_list"] =
"empty" + capitalized_type +
"List()";
80 (*variables)[
"create_list"] =
"new" + capitalized_type +
"List()";
81 (*variables)[
"mutable_copy_list"] =
82 "mutableCopy(" + (*variables)[
"name"] +
"_)";
83 (*variables)[
"name_make_immutable"] =
84 (*variables)[
"name"] +
"_.makeImmutable()";
85 (*variables)[
"repeated_get"] =
86 (*variables)[
"name"] +
"_.get" + capitalized_type;
87 (*variables)[
"repeated_add"] =
88 (*variables)[
"name"] +
"_.add" + capitalized_type;
89 (*variables)[
"repeated_set"] =
90 (*variables)[
"name"] +
"_.set" + capitalized_type;
92 (*variables)[
"field_list_type"] =
93 "java.util.List<" + (*variables)[
"boxed_type"] +
">";
94 (*variables)[
"create_list"] =
95 "new java.util.ArrayList<" + (*variables)[
"boxed_type"] +
">()";
96 (*variables)[
"mutable_copy_list"] =
"new java.util.ArrayList<" +
97 (*variables)[
"boxed_type"] +
">(" +
98 (*variables)[
"name"] +
"_)";
99 (*variables)[
"empty_list"] =
"java.util.Collections.emptyList()";
100 (*variables)[
"name_make_immutable"] =
101 (*variables)[
"name"] +
"_ = java.util.Collections.unmodifiableList(" +
102 (*variables)[
"name"] +
"_)";
103 (*variables)[
"repeated_get"] = (*variables)[
"name"] +
"_.get";
104 (*variables)[
"repeated_add"] = (*variables)[
"name"] +
"_.add";
105 (*variables)[
"repeated_set"] = (*variables)[
"name"] +
"_.set";
109 (*variables)[
"default_init"] =
113 (*variables)[
"capitalized_type"] =
115 (*variables)[
"tag"] =
117 (*variables)[
"tag_size"] =
StrCat(
120 (*variables)[
"null_check"] =
121 " if (value == null) {\n"
122 " throw new NullPointerException();\n"
125 (*variables)[
"null_check"] =
"";
129 (*variables)[
"deprecation"] =
130 descriptor->options().deprecated() ?
"@java.lang.Deprecated " :
"";
132 if (fixed_size != -1) {
133 (*variables)[
"fixed_size"] =
StrCat(fixed_size);
135 (*variables)[
"on_changed"] =
"onChanged();";
139 (*variables)[
"get_has_field_bit_message"] =
GenerateGetBit(messageBitIndex);
140 (*variables)[
"get_has_field_bit_builder"] =
GenerateGetBit(builderBitIndex);
143 (*variables)[
"set_has_field_bit_message"] =
145 (*variables)[
"set_has_field_bit_builder"] =
147 (*variables)[
"clear_has_field_bit_builder"] =
150 (*variables)[
"is_field_present_message"] =
GenerateGetBit(messageBitIndex);
152 (*variables)[
"set_has_field_bit_message"] =
"";
153 (*variables)[
"set_has_field_bit_builder"] =
"";
154 (*variables)[
"clear_has_field_bit_builder"] =
"";
157 (*variables)[
"is_field_present_message"] =
158 "!" + (*variables)[
"name"] +
"_.isEmpty()";
160 (*variables)[
"is_field_present_message"] =
161 (*variables)[
"name"] +
"_ != " + (*variables)[
"default"];
166 (*variables)[
"get_mutable_bit_builder"] =
GenerateGetBit(builderBitIndex);
167 (*variables)[
"set_mutable_bit_builder"] =
GenerateSetBit(builderBitIndex);
168 (*variables)[
"clear_mutable_bit_builder"] =
GenerateClearBit(builderBitIndex);
172 (*variables)[
"get_mutable_bit_parser"] =
174 (*variables)[
"set_mutable_bit_parser"] =
177 (*variables)[
"get_has_field_bit_from_local"] =
179 (*variables)[
"set_has_field_bit_to_local"] =
191 SetPrimitiveVariables(
descriptor, messageBitIndex, builderBitIndex,
211 "$deprecation$boolean has$capitalized_name$();\n");
214 printer->
Print(
variables_,
"$deprecation$$type$ get$capitalized_name$();\n");
225 "$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"
226 " return $get_has_field_bit_message$;\n"
233 "$deprecation$public $type$ ${$get$capitalized_name$$}$() {\n"
241 printer->
Print(
variables_,
"private $field_type$ $name$_ $default_init$;\n");
247 "$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"
248 " return $get_has_field_bit_builder$;\n"
255 "$deprecation$public $type$ ${$get$capitalized_name$$}$() {\n"
262 "$deprecation$public Builder "
263 "${$set$capitalized_name$$}$($type$ value) {\n"
265 " $set_has_field_bit_builder$\n"
266 " $name$_ = value;\n"
275 "$deprecation$public Builder ${$clear$capitalized_name$$}$() {\n"
276 " $clear_has_field_bit_builder$\n");
284 " $name$_ = getDefaultInstance().get$capitalized_name$();\n");
309 "$name$_ = $default$;\n"
310 "$clear_has_field_bit_builder$\n");
317 "if (other.has$capitalized_name$()) {\n"
318 " set$capitalized_name$(other.get$capitalized_name$());\n"
322 "if (other.get$capitalized_name$() != $default$) {\n"
323 " set$capitalized_name$(other.get$capitalized_name$());\n"
333 "if ($get_has_field_bit_from_local$) {\n"
334 " result.$name$_ = $name$_;\n"
335 " $set_has_field_bit_to_local$;\n"
339 "if ($get_has_field_bit_from_local$) {\n"
340 " $set_has_field_bit_to_local$;\n"
342 "result.$name$_ = $name$_;\n");
352 "$set_has_field_bit_message$\n"
353 "$name$_ = input.read$capitalized_type$();\n");
364 "if ($is_field_present_message$) {\n"
365 " output.write$capitalized_type$($number$, $name$_);\n"
372 "if ($is_field_present_message$) {\n"
373 " size += com.google.protobuf.CodedOutputStream\n"
374 " .compute$capitalized_type$Size($number$, $name$_);\n"
385 "if (get$capitalized_name$()\n"
386 " != other.get$capitalized_name$()) return false;\n");
392 "if (java.lang.Float.floatToIntBits(get$capitalized_name$())\n"
393 " != java.lang.Float.floatToIntBits(\n"
394 " other.get$capitalized_name$())) return false;\n");
400 "if (java.lang.Double.doubleToLongBits(get$capitalized_name$())\n"
401 " != java.lang.Double.doubleToLongBits(\n"
402 " other.get$capitalized_name$())) return false;\n");
409 "if (!get$capitalized_name$()\n"
410 " .equals(other.get$capitalized_name$())) return false;\n");
427 "hash = (53 * hash) + get$capitalized_name$();\n");
433 "hash = (53 * hash) + com.google.protobuf.Internal.hashLong(\n"
434 " get$capitalized_name$());\n");
440 "hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(\n"
441 " get$capitalized_name$());\n");
446 "hash = (53 * hash) + java.lang.Float.floatToIntBits(\n"
447 " get$capitalized_name$());\n");
453 "hash = (53 * hash) + com.google.protobuf.Internal.hashLong(\n"
454 " java.lang.Double.doubleToLongBits(get$capitalized_name$()));\n");
461 "hash = (53 * hash) + get$capitalized_name$().hashCode();\n");
482 builderBitIndex, context) {
498 "$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"
499 " return $has_oneof_case_message$;\n"
506 "$deprecation$public $type$ ${$get$capitalized_name$$}$() {\n"
507 " if ($has_oneof_case_message$) {\n"
508 " return ($boxed_type$) $oneof_name$_;\n"
510 " return $default$;\n"
521 "$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"
522 " return $has_oneof_case_message$;\n"
529 "$deprecation$public $type$ ${$get$capitalized_name$$}$() {\n"
530 " if ($has_oneof_case_message$) {\n"
531 " return ($boxed_type$) $oneof_name$_;\n"
533 " return $default$;\n"
539 "$deprecation$public Builder "
540 "${$set$capitalized_name$$}$($type$ value) {\n"
542 " $set_oneof_case_message$;\n"
543 " $oneof_name$_ = value;\n"
552 "$deprecation$public Builder ${$clear$capitalized_name$$}$() {\n"
553 " if ($has_oneof_case_message$) {\n"
554 " $clear_oneof_case_message$;\n"
555 " $oneof_name$_ = null;\n"
566 "if ($has_oneof_case_message$) {\n"
567 " result.$oneof_name$_ = $oneof_name$_;\n"
574 "set$capitalized_name$(other.get$capitalized_name$());\n");
580 "$set_oneof_case_message$;\n"
581 "$oneof_name$_ = input.read$capitalized_type$();\n");
587 "if ($has_oneof_case_message$) {\n"
588 " output.write$capitalized_type$(\n");
596 " $number$, ($type$)(($boxed_type$) $oneof_name$_));\n");
598 printer->
Print(
"}\n");
604 "if ($has_oneof_case_message$) {\n"
605 " size += com.google.protobuf.CodedOutputStream\n"
606 " .compute$capitalized_type$Size(\n");
614 " $number$, ($type$)(($boxed_type$) $oneof_name$_));\n");
616 printer->
Print(
"}\n");
627 SetPrimitiveVariables(
descriptor, messageBitIndex, builderBitIndex,
647 "$deprecation$java.util.List<$boxed_type$> "
648 "get$capitalized_name$List();\n");
651 "$deprecation$int get$capitalized_name$Count();\n");
654 "$deprecation$$type$ get$capitalized_name$(int index);\n");
663 "$deprecation$public java.util.List<$boxed_type$>\n"
664 " ${$get$capitalized_name$List$}$() {\n"
671 "$deprecation$public int ${$get$capitalized_name$Count$}$() {\n"
672 " return $name$_.size();\n"
678 "$deprecation$public $type$ ${$get$capitalized_name$$}$(int index) {\n"
679 " return $repeated_get$(index);\n"
685 "private int $name$MemoizedSerializedSize = -1;\n");
701 "private $field_list_type$ $name$_ = $empty_list$;\n");
704 "private void ensure$capitalized_name$IsMutable() {\n"
705 " if (!$get_mutable_bit_builder$) {\n"
706 " $name$_ = $mutable_copy_list$;\n"
707 " $set_mutable_bit_builder$;\n"
718 "$deprecation$public java.util.List<$boxed_type$>\n"
719 " ${$get$capitalized_name$List$}$() {\n"
720 " return $get_mutable_bit_builder$ ?\n"
721 " java.util.Collections.unmodifiableList($name$_) : $name$_;\n"
727 "$deprecation$public int ${$get$capitalized_name$Count$}$() {\n"
728 " return $name$_.size();\n"
734 "$deprecation$public $type$ ${$get$capitalized_name$$}$(int index) {\n"
735 " return $repeated_get$(index);\n"
740 "$deprecation$public Builder ${$set$capitalized_name$$}$(\n"
741 " int index, $type$ value) {\n"
743 " ensure$capitalized_name$IsMutable();\n"
744 " $repeated_set$(index, value);\n"
751 "$deprecation$public Builder "
752 "${$add$capitalized_name$$}$($type$ value) {\n"
754 " ensure$capitalized_name$IsMutable();\n"
755 " $repeated_add$(value);\n"
762 "$deprecation$public Builder ${$addAll$capitalized_name$$}$(\n"
763 " java.lang.Iterable<? extends $boxed_type$> values) {\n"
764 " ensure$capitalized_name$IsMutable();\n"
765 " com.google.protobuf.AbstractMessageLite.Builder.addAll(\n"
766 " values, $name$_);\n"
774 "$deprecation$public Builder ${$clear$capitalized_name$$}$() {\n"
775 " $name$_ = $empty_list$;\n"
776 " $clear_mutable_bit_builder$;\n"
796 "$name$_ = $empty_list$;\n"
797 "$clear_mutable_bit_builder$;\n");
808 "if (!other.$name$_.isEmpty()) {\n"
809 " if ($name$_.isEmpty()) {\n"
810 " $name$_ = other.$name$_;\n"
811 " $clear_mutable_bit_builder$;\n"
813 " ensure$capitalized_name$IsMutable();\n"
814 " $name$_.addAll(other.$name$_);\n"
825 "if ($get_mutable_bit_builder$) {\n"
826 " $name_make_immutable$;\n"
827 " $clear_mutable_bit_builder$;\n"
829 "result.$name$_ = $name$_;\n");
835 "if (!$get_mutable_bit_parser$) {\n"
836 " $name$_ = $create_list$;\n"
837 " $set_mutable_bit_parser$;\n"
839 "$repeated_add$(input.read$capitalized_type$());\n");
846 "int length = input.readRawVarint32();\n"
847 "int limit = input.pushLimit(length);\n"
848 "if (!$get_mutable_bit_parser$ && input.getBytesUntilLimit() > 0) {\n"
849 " $name$_ = $create_list$;\n"
850 " $set_mutable_bit_parser$;\n"
852 "while (input.getBytesUntilLimit() > 0) {\n"
853 " $repeated_add$(input.read$capitalized_type$());\n"
855 "input.popLimit(limit);\n");
861 "if ($get_mutable_bit_parser$) {\n"
862 " $name_make_immutable$; // C\n"
873 "if (get$capitalized_name$List().size() > 0) {\n"
874 " output.writeUInt32NoTag($tag$);\n"
875 " output.writeUInt32NoTag($name$MemoizedSerializedSize);\n"
877 "for (int i = 0; i < $name$_.size(); i++) {\n"
878 " output.write$capitalized_type$NoTag($repeated_get$(i));\n"
883 "for (int i = 0; i < $name$_.size(); i++) {\n"
884 " output.write$capitalized_type$($number$, $repeated_get$(i));\n"
893 " int dataSize = 0;\n");
899 "for (int i = 0; i < $name$_.size(); i++) {\n"
900 " dataSize += com.google.protobuf.CodedOutputStream\n"
901 " .compute$capitalized_type$SizeNoTag($repeated_get$(i));\n"
906 "dataSize = $fixed_size$ * get$capitalized_name$List().size();\n");
909 printer->
Print(
"size += dataSize;\n");
913 "if (!get$capitalized_name$List().isEmpty()) {\n"
914 " size += $tag_size$;\n"
915 " size += com.google.protobuf.CodedOutputStream\n"
916 " .computeInt32SizeNoTag(dataSize);\n"
921 "size += $tag_size$ * get$capitalized_name$List().size();\n");
926 printer->
Print(
variables_,
"$name$MemoizedSerializedSize = dataSize;\n");
930 printer->
Print(
"}\n");
937 "if (!get$capitalized_name$List()\n"
938 " .equals(other.get$capitalized_name$List())) return false;\n");
945 "if (get$capitalized_name$Count() > 0) {\n"
946 " hash = (37 * hash) + $constant_name$;\n"
947 " hash = (53 * hash) + get$capitalized_name$List().hashCode();\n"
void GenerateMergingCode(io::Printer *printer) const
void GenerateBuildingCode(io::Printer *printer) const
std::string UnderscoresToCamelCase(const std::string &input, bool cap_next_letter)
void GenerateBuilderMembers(io::Printer *printer) const
void Print(const std::map< std::string, std::string > &variables, const char *text)
void GenerateEqualsCode(io::Printer *printer) const
std::string GenerateClearBit(int bitIndex)
void GenerateBuilderMembers(io::Printer *printer) const
std::map< std::string, std::string > variables_
void GenerateMembers(io::Printer *printer) const
const FieldDescriptor * descriptor_
void GenerateInterfaceMembers(io::Printer *printer) const
void GenerateFieldBuilderInitializationCode(io::Printer *printer) const
void GenerateBuilderClearCode(io::Printer *printer) const
const FieldDescriptor * descriptor_
virtual ~RepeatedImmutablePrimitiveFieldGenerator()
void GenerateEqualsCode(io::Printer *printer) const
void GenerateHashCode(io::Printer *printer) const
std::string GenerateGetBitMutableLocal(int bitIndex)
void GenerateSerializedSizeCode(io::Printer *printer) const
string StrCat(const AlphaNum &a, const AlphaNum &b)
void GenerateInitializationCode(io::Printer *printer) const
std::string GenerateSetBit(int bitIndex)
void GenerateSerializationCode(io::Printer *printer) const
ClassNameResolver * name_resolver_
void GenerateSerializedSizeCode(io::Printer *printer) const
void WriteFieldDocComment(io::Printer *printer, const FieldDescriptor *field)
std::string ImmutableDefaultValue(const FieldDescriptor *field, ClassNameResolver *name_resolver)
void GenerateSerializationCode(io::Printer *printer) const
GLsizei const GLchar *const * string
ClassNameResolver * name_resolver_
void SetCommonOneofVariables(const FieldDescriptor *descriptor, const OneofGeneratorInfo *info, std::map< std::string, std::string > *variables)
void GenerateParsingDoneCode(io::Printer *printer) const
~ImmutablePrimitiveOneofFieldGenerator()
void GenerateMergingCode(io::Printer *printer) const
void GenerateSerializedSizeCode(io::Printer *printer) const
bool IsDefaultValueJavaDefault(const FieldDescriptor *field)
int GetNumBitsForBuilder() const
const char * BoxedPrimitiveTypeName(JavaType type)
RepeatedImmutablePrimitiveFieldGenerator(const FieldDescriptor *descriptor, int messageBitIndex, int builderBitIndex, Context *context)
ImmutablePrimitiveOneofFieldGenerator(const FieldDescriptor *descriptor, int messageBitIndex, int builderBitIndex, Context *context)
const FileDescriptor * file() const
void GenerateParsingDoneCode(io::Printer *printer) const
void GenerateInitializationCode(io::Printer *printer) const
void GenerateInterfaceMembers(io::Printer *printer) const
const FieldGeneratorInfo * GetFieldGeneratorInfo(const FieldDescriptor *field) const
JavaType GetJavaType(const FieldDescriptor *field)
void GenerateParsingCode(io::Printer *printer) const
bool IsReferenceType(JavaType type)
void GenerateBuildingCode(io::Printer *printer) const
void PrintExtraFieldInfo(const std::map< std::string, std::string > &variables, io::Printer *printer)
std::string GenerateSetBitToLocal(int bitIndex)
#define GOOGLE_LOG(LEVEL)
std::string GetBoxedType() const
int FixedSize(FieldDescriptor::Type type)
void GenerateMembers(io::Printer *printer) const
~ImmutablePrimitiveFieldGenerator()
void GenerateParsingCode(io::Printer *printer) const
void Annotate(const char *varname, const SomeDescriptor *descriptor)
void GenerateFieldBuilderInitializationCode(io::Printer *printer) const
FieldDescriptor::Type GetType(const FieldDescriptor *field)
bool SupportFieldPresence(const FileDescriptor *descriptor)
void GenerateHashCode(io::Printer *printer) const
int GetNumBitsForMessage() const
ImmutablePrimitiveFieldGenerator(const FieldDescriptor *descriptor, int messageBitIndex, int builderBitIndex, Context *context)
std::map< std::string, std::string > variables_
void GenerateMembers(io::Printer *printer) const
int GetNumBitsForBuilder() const
std::string GenerateSetBitMutableLocal(int bitIndex)
int GetNumBitsForMessage() const
void GenerateParsingCodeFromPacked(io::Printer *printer) const
void GenerateMergingCode(io::Printer *printer) const
void SetCommonFieldVariables(const FieldDescriptor *descriptor, const FieldGeneratorInfo *info, std::map< std::string, std::string > *variables)
std::string GenerateGetBit(int bitIndex)
const char * GetCapitalizedType(const FieldDescriptor *field, bool immutable)
const Descriptor * descriptor_
const OneofGeneratorInfo * GetOneofGeneratorInfo(const OneofDescriptor *oneof) const
void GenerateSerializationCode(io::Printer *printer) const
std::string GetBoxedType() const
const char * PrimitiveTypeName(JavaType type)
void GenerateBuilderMembers(io::Printer *printer) const
void GenerateBuilderClearCode(io::Printer *printer) const
void GenerateParsingCode(io::Printer *printer) const
std::string GenerateGetBitFromLocal(int bitIndex)
void GenerateBuildingCode(io::Printer *printer) const
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:55