| Index: third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc
|
| diff --git a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc
|
| index 1c35fefa12100ceb219758a42cda815cb11cd1d7..9f929d378bf0bdd2bffd5d7b3fba69240634374d 100644
|
| --- a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc
|
| +++ b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc
|
| @@ -1,6 +1,6 @@
|
| // Protocol Buffers - Google's data interchange format
|
| // Copyright 2008 Google Inc. All rights reserved.
|
| -// http://code.google.com/p/protobuf/
|
| +// https://developers.google.com/protocol-buffers/
|
| //
|
| // Redistribution and use in source and binary forms, with or without
|
| // modification, are permitted provided that the following conditions are
|
| @@ -93,6 +93,7 @@ void SetPrimitiveVariables(const FieldDescriptor* descriptor,
|
| (*variables)["wire_format_field_type"] =
|
| "::google::protobuf::internal::WireFormatLite::" + FieldDescriptorProto_Type_Name(
|
| static_cast<FieldDescriptorProto_Type>(descriptor->type()));
|
| + (*variables)["full_name"] = descriptor->full_name();
|
| }
|
|
|
| } // namespace
|
| @@ -116,19 +117,23 @@ GeneratePrivateMembers(io::Printer* printer) const {
|
| void PrimitiveFieldGenerator::
|
| GenerateAccessorDeclarations(io::Printer* printer) const {
|
| printer->Print(variables_,
|
| - "inline $type$ $name$() const$deprecation$;\n"
|
| - "inline void set_$name$($type$ value)$deprecation$;\n");
|
| + "$type$ $name$() const$deprecation$;\n"
|
| + "void set_$name$($type$ value)$deprecation$;\n");
|
| }
|
|
|
| void PrimitiveFieldGenerator::
|
| -GenerateInlineAccessorDefinitions(io::Printer* printer) const {
|
| - printer->Print(variables_,
|
| - "inline $type$ $classname$::$name$() const {\n"
|
| +GenerateInlineAccessorDefinitions(io::Printer* printer, bool is_inline) const {
|
| + map<string, string> variables(variables_);
|
| + variables["inline"] = is_inline ? "inline" : "";
|
| + printer->Print(variables,
|
| + "$inline$ $type$ $classname$::$name$() const {\n"
|
| + " // @@protoc_insertion_point(field_get:$full_name$)\n"
|
| " return $name$_;\n"
|
| "}\n"
|
| - "inline void $classname$::set_$name$($type$ value) {\n"
|
| - " set_has_$name$();\n"
|
| + "$inline$ void $classname$::set_$name$($type$ value) {\n"
|
| + " $set_hasbit$\n"
|
| " $name$_ = value;\n"
|
| + " // @@protoc_insertion_point(field_set:$full_name$)\n"
|
| "}\n");
|
| }
|
|
|
| @@ -158,7 +163,7 @@ GenerateMergeFromCodedStream(io::Printer* printer) const {
|
| "DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<\n"
|
| " $type$, $wire_format_field_type$>(\n"
|
| " input, &$name$_)));\n"
|
| - "set_has_$name$();\n");
|
| + "$set_hasbit$\n");
|
| }
|
|
|
| void PrimitiveFieldGenerator::
|
| @@ -191,13 +196,73 @@ GenerateByteSize(io::Printer* printer) const {
|
|
|
| // ===================================================================
|
|
|
| +PrimitiveOneofFieldGenerator::
|
| +PrimitiveOneofFieldGenerator(const FieldDescriptor* descriptor,
|
| + const Options& options)
|
| + : PrimitiveFieldGenerator(descriptor, options) {
|
| + SetCommonOneofFieldVariables(descriptor, &variables_);
|
| +}
|
| +
|
| +PrimitiveOneofFieldGenerator::~PrimitiveOneofFieldGenerator() {}
|
| +
|
| +void PrimitiveOneofFieldGenerator::
|
| +GenerateInlineAccessorDefinitions(io::Printer* printer, bool is_inline) const {
|
| + map<string, string> variables(variables_);
|
| + variables["inline"] = is_inline ? "inline" : "";
|
| + printer->Print(variables,
|
| + "$inline$ $type$ $classname$::$name$() const {\n"
|
| + " // @@protoc_insertion_point(field_get:$full_name$)\n"
|
| + " if (has_$name$()) {\n"
|
| + " return $oneof_prefix$$name$_;\n"
|
| + " }\n"
|
| + " return $default$;\n"
|
| + "}\n"
|
| + "$inline$ void $classname$::set_$name$($type$ value) {\n"
|
| + " if (!has_$name$()) {\n"
|
| + " clear_$oneof_name$();\n"
|
| + " set_has_$name$();\n"
|
| + " }\n"
|
| + " $oneof_prefix$$name$_ = value;\n"
|
| + " // @@protoc_insertion_point(field_set:$full_name$)\n"
|
| + "}\n");
|
| +}
|
| +
|
| +void PrimitiveOneofFieldGenerator::
|
| +GenerateClearingCode(io::Printer* printer) const {
|
| + printer->Print(variables_, "$oneof_prefix$$name$_ = $default$;\n");
|
| +}
|
| +
|
| +void PrimitiveOneofFieldGenerator::
|
| +GenerateSwappingCode(io::Printer* printer) const {
|
| + // Don't print any swapping code. Swapping the union will swap this field.
|
| +}
|
| +
|
| +void PrimitiveOneofFieldGenerator::
|
| +GenerateConstructorCode(io::Printer* printer) const {
|
| + printer->Print(
|
| + variables_,
|
| + " $classname$_default_oneof_instance_->$name$_ = $default$;\n");
|
| +}
|
| +
|
| +void PrimitiveOneofFieldGenerator::
|
| +GenerateMergeFromCodedStream(io::Printer* printer) const {
|
| + printer->Print(variables_,
|
| + "clear_$oneof_name$();\n"
|
| + "DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<\n"
|
| + " $type$, $wire_format_field_type$>(\n"
|
| + " input, &$oneof_prefix$$name$_)));\n"
|
| + "set_has_$name$();\n");
|
| +}
|
| +
|
| +// ===================================================================
|
| +
|
| RepeatedPrimitiveFieldGenerator::
|
| RepeatedPrimitiveFieldGenerator(const FieldDescriptor* descriptor,
|
| const Options& options)
|
| : descriptor_(descriptor) {
|
| SetPrimitiveVariables(descriptor, &variables_, options);
|
|
|
| - if (descriptor->options().packed()) {
|
| + if (descriptor->is_packed()) {
|
| variables_["packed_reader"] = "ReadPackedPrimitive";
|
| variables_["repeated_reader"] = "ReadRepeatedPrimitiveNoInline";
|
| } else {
|
| @@ -212,7 +277,7 @@ void RepeatedPrimitiveFieldGenerator::
|
| GeneratePrivateMembers(io::Printer* printer) const {
|
| printer->Print(variables_,
|
| "::google::protobuf::RepeatedField< $type$ > $name$_;\n");
|
| - if (descriptor_->options().packed() && HasGeneratedMethods(descriptor_->file())) {
|
| + if (descriptor_->is_packed() && HasGeneratedMethods(descriptor_->file())) {
|
| printer->Print(variables_,
|
| "mutable int _$name$_cached_byte_size_;\n");
|
| }
|
| @@ -221,35 +286,42 @@ GeneratePrivateMembers(io::Printer* printer) const {
|
| void RepeatedPrimitiveFieldGenerator::
|
| GenerateAccessorDeclarations(io::Printer* printer) const {
|
| printer->Print(variables_,
|
| - "inline $type$ $name$(int index) const$deprecation$;\n"
|
| - "inline void set_$name$(int index, $type$ value)$deprecation$;\n"
|
| - "inline void add_$name$($type$ value)$deprecation$;\n");
|
| + "$type$ $name$(int index) const$deprecation$;\n"
|
| + "void set_$name$(int index, $type$ value)$deprecation$;\n"
|
| + "void add_$name$($type$ value)$deprecation$;\n");
|
| printer->Print(variables_,
|
| - "inline const ::google::protobuf::RepeatedField< $type$ >&\n"
|
| + "const ::google::protobuf::RepeatedField< $type$ >&\n"
|
| " $name$() const$deprecation$;\n"
|
| - "inline ::google::protobuf::RepeatedField< $type$ >*\n"
|
| + "::google::protobuf::RepeatedField< $type$ >*\n"
|
| " mutable_$name$()$deprecation$;\n");
|
| }
|
|
|
| void RepeatedPrimitiveFieldGenerator::
|
| -GenerateInlineAccessorDefinitions(io::Printer* printer) const {
|
| - printer->Print(variables_,
|
| - "inline $type$ $classname$::$name$(int index) const {\n"
|
| +GenerateInlineAccessorDefinitions(io::Printer* printer, bool is_inline) const {
|
| + map<string, string> variables(variables_);
|
| + variables["inline"] = is_inline ? "inline" : "";
|
| + printer->Print(variables,
|
| + "$inline$ $type$ $classname$::$name$(int index) const {\n"
|
| + " // @@protoc_insertion_point(field_get:$full_name$)\n"
|
| " return $name$_.Get(index);\n"
|
| "}\n"
|
| - "inline void $classname$::set_$name$(int index, $type$ value) {\n"
|
| + "$inline$ void $classname$::set_$name$(int index, $type$ value) {\n"
|
| " $name$_.Set(index, value);\n"
|
| + " // @@protoc_insertion_point(field_set:$full_name$)\n"
|
| "}\n"
|
| - "inline void $classname$::add_$name$($type$ value) {\n"
|
| + "$inline$ void $classname$::add_$name$($type$ value) {\n"
|
| " $name$_.Add(value);\n"
|
| + " // @@protoc_insertion_point(field_add:$full_name$)\n"
|
| "}\n");
|
| - printer->Print(variables_,
|
| - "inline const ::google::protobuf::RepeatedField< $type$ >&\n"
|
| + printer->Print(variables,
|
| + "$inline$ const ::google::protobuf::RepeatedField< $type$ >&\n"
|
| "$classname$::$name$() const {\n"
|
| + " // @@protoc_insertion_point(field_list:$full_name$)\n"
|
| " return $name$_;\n"
|
| "}\n"
|
| - "inline ::google::protobuf::RepeatedField< $type$ >*\n"
|
| + "$inline$ ::google::protobuf::RepeatedField< $type$ >*\n"
|
| "$classname$::mutable_$name$() {\n"
|
| + " // @@protoc_insertion_point(field_mutable_list:$full_name$)\n"
|
| " return &$name$_;\n"
|
| "}\n");
|
| }
|
| @@ -266,7 +338,7 @@ GenerateMergingCode(io::Printer* printer) const {
|
|
|
| void RepeatedPrimitiveFieldGenerator::
|
| GenerateSwappingCode(io::Printer* printer) const {
|
| - printer->Print(variables_, "$name$_.Swap(&other->$name$_);\n");
|
| + printer->Print(variables_, "$name$_.UnsafeArenaSwap(&other->$name$_);\n");
|
| }
|
|
|
| void RepeatedPrimitiveFieldGenerator::
|
| @@ -292,7 +364,7 @@ GenerateMergeFromCodedStreamWithPacking(io::Printer* printer) const {
|
|
|
| void RepeatedPrimitiveFieldGenerator::
|
| GenerateSerializeWithCachedSizes(io::Printer* printer) const {
|
| - if (descriptor_->options().packed()) {
|
| + if (descriptor_->is_packed()) {
|
| // Write the tag and the size.
|
| printer->Print(variables_,
|
| "if (this->$name$_size() > 0) {\n"
|
| @@ -305,7 +377,7 @@ GenerateSerializeWithCachedSizes(io::Printer* printer) const {
|
| }
|
| printer->Print(variables_,
|
| "for (int i = 0; i < this->$name$_size(); i++) {\n");
|
| - if (descriptor_->options().packed()) {
|
| + if (descriptor_->is_packed()) {
|
| printer->Print(variables_,
|
| " ::google::protobuf::internal::WireFormatLite::Write$declared_type$NoTag(\n"
|
| " this->$name$(i), output);\n");
|
| @@ -319,7 +391,7 @@ GenerateSerializeWithCachedSizes(io::Printer* printer) const {
|
|
|
| void RepeatedPrimitiveFieldGenerator::
|
| GenerateSerializeWithCachedSizesToArray(io::Printer* printer) const {
|
| - if (descriptor_->options().packed()) {
|
| + if (descriptor_->is_packed()) {
|
| // Write the tag and the size.
|
| printer->Print(variables_,
|
| "if (this->$name$_size() > 0) {\n"
|
| @@ -333,7 +405,7 @@ GenerateSerializeWithCachedSizesToArray(io::Printer* printer) const {
|
| }
|
| printer->Print(variables_,
|
| "for (int i = 0; i < this->$name$_size(); i++) {\n");
|
| - if (descriptor_->options().packed()) {
|
| + if (descriptor_->is_packed()) {
|
| printer->Print(variables_,
|
| " target = ::google::protobuf::internal::WireFormatLite::\n"
|
| " Write$declared_type$NoTagToArray(this->$name$(i), target);\n");
|
| @@ -363,7 +435,7 @@ GenerateByteSize(io::Printer* printer) const {
|
| "data_size = $fixed_size$ * this->$name$_size();\n");
|
| }
|
|
|
| - if (descriptor_->options().packed()) {
|
| + if (descriptor_->is_packed()) {
|
| printer->Print(variables_,
|
| "if (data_size > 0) {\n"
|
| " total_size += $tag_size$ +\n"
|
|
|