Go to the documentation of this file.
49 std::map<std::string, std::string>* variables,
53 (*variables)[
"stream_writer"] =
54 (*variables)[
"declared_type"] +
58 (*variables)[
"full_name"] =
descriptor->full_name();
61 descriptor->message_type()->FindFieldByName(
"key");
63 descriptor->message_type()->FindFieldByName(
"value");
65 switch (
val->cpp_type()) {
70 (*variables)[
"val_cpp"] =
ClassName(
val->enum_type(),
true);
75 (*variables)[
"key_wire_type"] =
77 (*variables)[
"val_wire_type"] =
84 (*variables)[
"lite"] =
"";
86 (*variables)[
"lite"] =
"Lite";
93 (*variables)[
"default_enum_value"] =
"0";
108 "::$proto_ns$::internal::MapField$lite$<\n"
109 " $map_classname$,\n"
110 " $key_cpp$, $val_cpp$,\n"
111 " ::$proto_ns$::internal::WireFormatLite::$key_wire_type$,\n"
112 " ::$proto_ns$::internal::WireFormatLite::$val_wire_type$,\n"
113 " $default_enum_value$ > $name$_;\n");
120 "$deprecated_attr$const ::$proto_ns$::Map< $key_cpp$, $val_cpp$ >&\n"
121 " ${1$$name$$}$() const;\n"
122 "$deprecated_attr$::$proto_ns$::Map< $key_cpp$, $val_cpp$ >*\n"
123 " ${1$mutable_$name$$}$();\n",
131 "inline const ::$proto_ns$::Map< $key_cpp$, $val_cpp$ >&\n"
132 "$classname$::$name$() const {\n"
133 " // @@protoc_insertion_point(field_map:$full_name$)\n"
134 " return $name$_.GetMap();\n"
136 "inline ::$proto_ns$::Map< $key_cpp$, $val_cpp$ >*\n"
137 "$classname$::mutable_$name$() {\n"
138 " // @@protoc_insertion_point(field_mutable_map:$full_name$)\n"
139 " return $name$_.MutableMap();\n"
145 format(
"$name$_.Clear();\n");
150 format(
"$name$_.MergeFrom(from.$name$_);\n");
155 format(
"$name$_.Swap(&other->$name$_);\n");
174 "$map_classname$::Parser< ::$proto_ns$::internal::MapField$lite$<\n"
175 " $map_classname$,\n"
176 " $key_cpp$, $val_cpp$,\n"
177 " ::$proto_ns$::internal::WireFormatLite::$key_wire_type$,\n"
178 " ::$proto_ns$::internal::WireFormatLite::$val_wire_type$,\n"
179 " $default_enum_value$ >,\n"
180 " ::$proto_ns$::Map< $key_cpp$, $val_cpp$ > >"
181 " parser(&$name$_);\n");
185 "DO_(::$proto_ns$::internal::WireFormatLite::ReadMessageNoVirtual(\n"
186 " input, &parser));\n");
187 key =
"parser.key()";
188 value =
"parser.value()";
190 key =
"entry->key()";
191 value =
"entry->value()";
192 format(
"auto entry = parser.NewEntry();\n");
194 "std::string data;\n"
195 "DO_(::$proto_ns$::internal::WireFormatLite::ReadString(input, "
197 "DO_(entry->ParseFromString(data));\n"
198 "if ($val_cpp$_IsValid(*entry->mutable_value())) {\n"
199 " (*mutable_$name$())[entry->key()] =\n"
200 " static_cast< $val_cpp$ >(*entry->mutable_value());\n"
204 " mutable_unknown_fields()"
205 "->AddLengthDelimited($number$, data);\n");
208 " unknown_fields_stream.WriteVarint32($tag$u);\n"
209 " unknown_fields_stream.WriteVarint32(\n"
210 " static_cast< ::google::protobuf::uint32>(data.size()));\n"
211 " unknown_fields_stream.WriteString(data);\n");
219 StrCat(
key,
".data(), static_cast<int>(",
key,
".length()),\n")
234 bool string_value,
bool to_array,
235 bool is_deterministic) {
237 if (is_deterministic) {
238 format(
"for (size_type i = 0; i < n; i++) {\n");
239 ptr = string_key ?
"items[static_cast<ptrdiff_t>(i)]"
240 :
"items[static_cast<ptrdiff_t>(i)].second";
243 "for (::$proto_ns$::Map< $key_cpp$, $val_cpp$ >::const_iterator\n"
244 " it = this->$name$().begin();\n"
245 " it != this->$name$().end(); ++it) {\n");
252 "target = $map_classname$::Funcs::SerializeToArray($number$, "
253 "$1$->first, $1$->second, target);\n",
257 "$map_classname$::Funcs::SerializeToCodedStream($number$, "
258 "$1$->first, $1$->second, output);\n",
262 if (string_key || string_value) {
265 format(
"Utf8Check::Check(&(*$1$));\n", ptr);
283 bool to_array)
const {
285 format(
"if (!this->$name$().empty()) {\n");
295 "typedef ::$proto_ns$::Map< $key_cpp$, $val_cpp$ >::const_pointer\n"
299 "typedef ConstPtr SortItem;\n"
300 "typedef ::$proto_ns$::internal::"
301 "CompareByDerefFirst<SortItem> Less;\n");
304 "typedef ::$proto_ns$::internal::SortItem< $key_cpp$, ConstPtr > "
306 "typedef ::$proto_ns$::internal::CompareByFirstField<SortItem> "
309 bool utf8_check = string_key || string_value;
312 "struct Utf8Check {\n"
313 " static void Check(ConstPtr p) {\n");
319 "p->first.data(), static_cast<int>(p->first.length()),\n",
format);
324 "p->second.data(), static_cast<int>(p->second.length()),\n",
format);
336 " this->$name$().size() > 1) {\n"
337 " ::std::unique_ptr<SortItem[]> items(\n"
338 " new SortItem[this->$name$().size()]);\n"
339 " typedef ::$proto_ns$::Map< $key_cpp$, $val_cpp$ >::size_type "
341 " size_type n = 0;\n"
342 " for (::$proto_ns$::Map< $key_cpp$, $val_cpp$ >::const_iterator\n"
343 " it = this->$name$().begin();\n"
344 " it != this->$name$().end(); ++it, ++n) {\n"
345 " items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);\n"
347 " ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());\n",
348 to_array ?
"false" :
"output->IsSerializationDeterministic()");
364 "total_size += $tag_size$ *\n"
365 " ::$proto_ns$::internal::FromIntSize(this->$name$_size());\n"
366 "for (::$proto_ns$::Map< $key_cpp$, $val_cpp$ >::const_iterator\n"
367 " it = this->$name$().begin();\n"
368 " it != this->$name$().end(); ++it) {\n"
369 " total_size += $map_classname$::Funcs::ByteSizeLong(it->first, "
void GenerateConstructorCode(io::Printer *printer) const
const Descriptor::ReservedRange value
string StrCat(const AlphaNum &a, const AlphaNum &b)
void GenerateSerializeWithCachedSizesToArray(io::Printer *printer) const
void SetCommonFieldVariables(const FieldDescriptor *descriptor, std::map< std::string, std::string > *variables, const Options &options)
GLsizei const GLchar *const * string
const char * DeclaredTypeMethodName(FieldDescriptor::Type type)
const FieldDescriptor * descriptor_
std::map< std::string, std::string > variables_
void GenerateAccessorDeclarations(io::Printer *printer) const
void GenerateUtf8CheckCodeForString(const FieldDescriptor *field, const Options &options, bool for_parse, const char *parameters, const Formatter &format)
void GenerateInlineAccessorDefinitions(io::Printer *printer) const
void SetMessageVariables(const FieldDescriptor *descriptor, std::map< std::string, std::string > *variables, const Options &options)
void GenerateMergeFromCodedStream(io::Printer *printer) const
const FileDescriptor * file() const
GLint GLint GLsizei GLint GLenum format
void GenerateSwappingCode(io::Printer *printer) const
MapFieldGenerator(const FieldDescriptor *descriptor, const Options &options)
std::string FieldMessageTypeName(const FieldDescriptor *field, const Options &options)
bool HasDescriptorMethods(const FileDescriptor *file, const Options &options)
const SETUP_TEARDOWN_TESTCONTEXT char * key
bool IsProto3Field(const FieldDescriptor *field_descriptor)
std::string Int32ToString(int number)
const FieldDescriptor * FindFieldByName(const std::string &name) const
void GenerateMergingCode(io::Printer *printer) const
static void GenerateSerializationLoop(const Formatter &format, bool string_key, bool string_value, bool to_array, bool is_deterministic)
std::string ClassName(const Descriptor *descriptor)
const char * PrimitiveTypeName(FieldDescriptor::CppType type)
string ToUpper(const string &s)
const Descriptor * message_type() const
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei const GLfloat * value
void GenerateClearingCode(io::Printer *printer) const
void GeneratePrivateMembers(io::Printer *printer) const
void GenerateByteSize(io::Printer *printer) const
bool HasFastArraySerialization(const FileDescriptor *file, const Options &options)
void GenerateCopyConstructorCode(io::Printer *printer) const
void GenerateSerializeWithCachedSizes(io::Printer *printer) const
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:49