From c132a4aa165d8ce2b65af62d4bde4a7ce08d07c3 Mon Sep 17 00:00:00 2001 From: reed-lau Date: Wed, 7 Aug 2019 14:27:22 +0800 Subject: [PATCH] replace 'const std::string&' with 'std::string'(by value) --- src/google/protobuf/extension_set.h | 35 ++------ .../protobuf/generated_message_reflection.cc | 84 ++----------------- src/google/protobuf/message.h | 12 +-- 3 files changed, 21 insertions(+), 110 deletions(-) diff --git a/src/google/protobuf/extension_set.h b/src/google/protobuf/extension_set.h index 70d416fb35..328347d094 100644 --- a/src/google/protobuf/extension_set.h +++ b/src/google/protobuf/extension_set.h @@ -268,8 +268,7 @@ class PROTOBUF_EXPORT ExtensionSet { void SetDouble(int number, FieldType type, double value, desc); void SetBool(int number, FieldType type, bool value, desc); void SetEnum(int number, FieldType type, int value, desc); - void SetString(int number, FieldType type, const std::string& value, desc); - void SetString(int number, FieldType type, std::string&& value, desc); + void SetString(int number, FieldType type, std::string value, desc); std::string* MutableString(int number, FieldType type, desc); MessageLite* MutableMessage(int number, FieldType type, const MessageLite& prototype, desc); @@ -332,8 +331,7 @@ class PROTOBUF_EXPORT ExtensionSet { void SetRepeatedDouble(int number, int index, double value); void SetRepeatedBool(int number, int index, bool value); void SetRepeatedEnum(int number, int index, int value); - void SetRepeatedString(int number, int index, const std::string& value); - void SetRepeatedString(int number, int index, std::string&& value); + void SetRepeatedString(int number, int index, std::string value); std::string* MutableRepeatedString(int number, int index); MessageLite* MutableRepeatedMessage(int number, int index); @@ -346,8 +344,7 @@ class PROTOBUF_EXPORT ExtensionSet { void AddDouble(int number, FieldType type, bool packed, double value, desc); void AddBool(int number, FieldType type, bool packed, bool value, desc); void AddEnum(int number, FieldType type, bool packed, int value, desc); - void AddString(int number, FieldType type, const std::string& value, desc); - void AddString(int number, FieldType type, std::string&& value, desc); + void AddString(int number, FieldType type, std::string value, desc); std::string* AddString(int number, FieldType type, desc); MessageLite* AddMessage(int number, FieldType type, const MessageLite& prototype, desc); @@ -861,32 +858,18 @@ class PROTOBUF_EXPORT ExtensionSet { // These are just for convenience... inline void ExtensionSet::SetString(int number, FieldType type, - const std::string& value, + std::string value, const FieldDescriptor* descriptor) { - MutableString(number, type, descriptor)->assign(value); -} -inline void ExtensionSet::SetString(int number, FieldType type, - std::string&& value, - const FieldDescriptor* descriptor) { - *MutableString(number, type, descriptor) = std::move(value); -} -inline void ExtensionSet::SetRepeatedString(int number, int index, - const std::string& value) { - MutableRepeatedString(number, index)->assign(value); + MutableString(number, type, descriptor)->assign(std::move(value)); } inline void ExtensionSet::SetRepeatedString(int number, int index, - std::string&& value) { - *MutableRepeatedString(number, index) = std::move(value); -} -inline void ExtensionSet::AddString(int number, FieldType type, - const std::string& value, - const FieldDescriptor* descriptor) { - AddString(number, type, descriptor)->assign(value); + std::string value) { + MutableRepeatedString(number, index)->assign(std::move(value)); } inline void ExtensionSet::AddString(int number, FieldType type, - std::string&& value, + std::string value, const FieldDescriptor* descriptor) { - *AddString(number, type, descriptor) = std::move(value); + AddString(number, type, descriptor)->assign(std::move(value)); } // =================================================================== // Glue for generated extension accessors diff --git a/src/google/protobuf/generated_message_reflection.cc b/src/google/protobuf/generated_message_reflection.cc index e987d748e3..1f2750ab54 100644 --- a/src/google/protobuf/generated_message_reflection.cc +++ b/src/google/protobuf/generated_message_reflection.cc @@ -1191,40 +1191,7 @@ const std::string& Reflection::GetStringReference(const Message& message, void Reflection::SetString(Message* message, const FieldDescriptor* field, - const std::string& value) const { - USAGE_CHECK_ALL(SetString, SINGULAR, STRING); - if (field->is_extension()) { - return MutableExtensionSet(message)->SetString(field->number(), - field->type(), value, field); - } else { - switch (field->options().ctype()) { - default: // TODO(kenton): Support other string reps. - case FieldOptions::STRING: { - if (IsInlined(field)) { - MutableField(message, field) - ->SetNoArena(nullptr, value); - break; - } - - const std::string* default_ptr = - &DefaultRaw(field).Get(); - if (field->containing_oneof() && !HasOneofField(*message, field)) { - ClearOneof(message, field->containing_oneof()); - MutableField(message, field) - ->UnsafeSetDefault(default_ptr); - } - MutableField(message, field) - ->Mutable(default_ptr, GetArena(message)) - ->assign(value); - break; - } - } - } -} - - -void Reflection::SetString(Message* message, const FieldDescriptor* field, - std::string&& value) const { + std::string value) const { USAGE_CHECK_ALL(SetString, SINGULAR, STRING); if (field->is_extension()) { return MutableExtensionSet(message)->SetString(field->number(), @@ -1235,7 +1202,7 @@ void Reflection::SetString(Message* message, const FieldDescriptor* field, case FieldOptions::STRING: { if (IsInlined(field)) { MutableField(message, field) - ->SetNoArena(nullptr, value); + ->SetNoArena(nullptr, std::move(value)); break; } @@ -1246,8 +1213,8 @@ void Reflection::SetString(Message* message, const FieldDescriptor* field, MutableField(message, field) ->UnsafeSetDefault(default_ptr); } - *(MutableField(message, field) - ->Mutable(default_ptr, GetArena(message))) = std::move(value); + MutableField(message, field) + ->Mutable(default_ptr, GetArena(message))->assign(std::move(value)); break; } } @@ -1288,25 +1255,7 @@ const std::string& Reflection::GetRepeatedStringReference( void Reflection::SetRepeatedString(Message* message, const FieldDescriptor* field, int index, - const std::string& value) const { - USAGE_CHECK_ALL(SetRepeatedString, REPEATED, STRING); - if (field->is_extension()) { - MutableExtensionSet(message)->SetRepeatedString(field->number(), index, - value); - } else { - switch (field->options().ctype()) { - default: // TODO(kenton): Support other string reps. - case FieldOptions::STRING: - *MutableRepeatedField(message, field, index) = value; - break; - } - } -} - - -void Reflection::SetRepeatedString(Message* message, - const FieldDescriptor* field, int index, - std::string&& value) const { + std::string value) const { USAGE_CHECK_ALL(SetRepeatedString, REPEATED, STRING); if (field->is_extension()) { MutableExtensionSet(message)->SetRepeatedString(field->number(), index, @@ -1315,23 +1264,7 @@ void Reflection::SetRepeatedString(Message* message, switch (field->options().ctype()) { default: // TODO(kenton): Support other string reps. case FieldOptions::STRING: - *MutableRepeatedField(message, field, index) = std::move(value); - break; - } - } -} - -void Reflection::AddString(Message* message, const FieldDescriptor* field, - const std::string& value) const { - USAGE_CHECK_ALL(AddString, REPEATED, STRING); - if (field->is_extension()) { - MutableExtensionSet(message)->AddString(field->number(), field->type(), - value, field); - } else { - switch (field->options().ctype()) { - default: // TODO(kenton): Support other string reps. - case FieldOptions::STRING: - *AddField(message, field) = value; + MutableRepeatedField(message, field, index)->assign(std::move(value)); break; } } @@ -1339,7 +1272,7 @@ void Reflection::AddString(Message* message, const FieldDescriptor* field, void Reflection::AddString(Message* message, const FieldDescriptor* field, - std::string&& value) const { + std::string value) const { USAGE_CHECK_ALL(AddString, REPEATED, STRING); if (field->is_extension()) { MutableExtensionSet(message)->AddString(field->number(), field->type(), @@ -1348,12 +1281,13 @@ void Reflection::AddString(Message* message, const FieldDescriptor* field, switch (field->options().ctype()) { default: // TODO(kenton): Support other string reps. case FieldOptions::STRING: - *AddField(message, field) = std::move(value); + AddField(message, field)->assign(std::move(value)); break; } } } + // ------------------------------------------------------------------- const EnumValueDescriptor* Reflection::GetEnum( diff --git a/src/google/protobuf/message.h b/src/google/protobuf/message.h index 4ff91aee30..0ead26a7fc 100644 --- a/src/google/protobuf/message.h +++ b/src/google/protobuf/message.h @@ -539,9 +539,7 @@ class PROTOBUF_EXPORT Reflection final { void SetBool(Message* message, const FieldDescriptor* field, bool value) const; void SetString(Message* message, const FieldDescriptor* field, - const std::string& value) const; - void SetString(Message* message, const FieldDescriptor* field, - std::string&& value) const; + std::string value) const; void SetEnum(Message* message, const FieldDescriptor* field, const EnumValueDescriptor* value) const; // Set an enum field's value with an integer rather than EnumValueDescriptor. @@ -641,9 +639,7 @@ class PROTOBUF_EXPORT Reflection final { void SetRepeatedBool(Message* message, const FieldDescriptor* field, int index, bool value) const; void SetRepeatedString(Message* message, const FieldDescriptor* field, - int index, const std::string& value) const; - void SetRepeatedString(Message* message, const FieldDescriptor* field, - int index, std::string&& value) const; + int index, std::string value) const; void SetRepeatedEnum(Message* message, const FieldDescriptor* field, int index, const EnumValueDescriptor* value) const; // Set an enum field's value with an integer rather than EnumValueDescriptor. @@ -680,9 +676,7 @@ class PROTOBUF_EXPORT Reflection final { void AddBool(Message* message, const FieldDescriptor* field, bool value) const; void AddString(Message* message, const FieldDescriptor* field, - const std::string& value) const; - void AddString(Message* message, const FieldDescriptor* field, - std::string&& value) const; + std::string value) const; void AddEnum(Message* message, const FieldDescriptor* field, const EnumValueDescriptor* value) const; // Add an integer value to a repeated enum field rather than