@@ -269,6 +269,7 @@ class PROTOBUF_EXPORT ExtensionSet {
269
269
void SetBool (int number, FieldType type, bool value, desc);
270
270
void SetEnum (int number, FieldType type, int value, desc);
271
271
void SetString (int number, FieldType type, const std::string& value, desc);
272
+ void SetString (int number, FieldType type, std::string&& value, desc);
272
273
std::string* MutableString (int number, FieldType type, desc);
273
274
MessageLite* MutableMessage (int number, FieldType type,
274
275
const MessageLite& prototype, desc);
@@ -332,6 +333,7 @@ class PROTOBUF_EXPORT ExtensionSet {
332
333
void SetRepeatedBool (int number, int index, bool value);
333
334
void SetRepeatedEnum (int number, int index, int value);
334
335
void SetRepeatedString (int number, int index, const std::string& value);
336
+ void SetRepeatedString (int number, int index, std::string&& value);
335
337
std::string* MutableRepeatedString (int number, int index);
336
338
MessageLite* MutableRepeatedMessage (int number, int index);
337
339
@@ -345,6 +347,7 @@ class PROTOBUF_EXPORT ExtensionSet {
345
347
void AddBool (int number, FieldType type, bool packed, bool value, desc);
346
348
void AddEnum (int number, FieldType type, bool packed, int value, desc);
347
349
void AddString (int number, FieldType type, const std::string& value, desc);
350
+ void AddString (int number, FieldType type, std::string&& value, desc);
348
351
std::string* AddString (int number, FieldType type, desc);
349
352
MessageLite* AddMessage (int number, FieldType type,
350
353
const MessageLite& prototype, desc);
@@ -862,16 +865,29 @@ inline void ExtensionSet::SetString(int number, FieldType type,
862
865
const FieldDescriptor* descriptor) {
863
866
MutableString (number, type, descriptor)->assign (value);
864
867
}
868
+ inline void ExtensionSet::SetString (int number, FieldType type,
869
+ std::string&& value,
870
+ const FieldDescriptor* descriptor) {
871
+ *MutableString (number, type, descriptor) = std::move (value);
872
+ }
865
873
inline void ExtensionSet::SetRepeatedString (int number, int index,
866
874
const std::string& value) {
867
875
MutableRepeatedString (number, index )->assign (value);
868
876
}
877
+ inline void ExtensionSet::SetRepeatedString (int number, int index,
878
+ std::string&& value) {
879
+ *MutableRepeatedString (number, index ) = std::move (value);
880
+ }
869
881
inline void ExtensionSet::AddString (int number, FieldType type,
870
882
const std::string& value,
871
883
const FieldDescriptor* descriptor) {
872
884
AddString (number, type, descriptor)->assign (value);
873
885
}
874
-
886
+ inline void ExtensionSet::AddString (int number, FieldType type,
887
+ std::string&& value,
888
+ const FieldDescriptor* descriptor) {
889
+ *AddString (number, type, descriptor) = std::move (value);
890
+ }
875
891
// ===================================================================
876
892
// Glue for generated extension accessors
877
893
0 commit comments