diff options
author | Chris Kennelly <ckennelly@google.com> | 2016-12-15 16:17:17 -0800 |
---|---|---|
committer | Chris Kennelly <ckennelly@google.com> | 2016-12-16 13:50:14 -0800 |
commit | 183d31cbdb5197b1a014893a91198e970379f656 (patch) | |
tree | 1dcb6e66e200a91724895185b4561aec8dc9552b /src/google/protobuf/compiler/cpp/cpp_string_field.cc | |
parent | a95e38ce8dec20d327692f4f5c2b0d37d6776696 (diff) | |
download | protobuf-183d31cbdb5197b1a014893a91198e970379f656.tar.gz protobuf-183d31cbdb5197b1a014893a91198e970379f656.tar.bz2 protobuf-183d31cbdb5197b1a014893a91198e970379f656.zip |
Add rvalue setters for non-arena strings on C++11.
Diffstat (limited to 'src/google/protobuf/compiler/cpp/cpp_string_field.cc')
-rw-r--r-- | src/google/protobuf/compiler/cpp/cpp_string_field.cc | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/google/protobuf/compiler/cpp/cpp_string_field.cc b/src/google/protobuf/compiler/cpp/cpp_string_field.cc index a9505e3d..2874de7d 100644 --- a/src/google/protobuf/compiler/cpp/cpp_string_field.cc +++ b/src/google/protobuf/compiler/cpp/cpp_string_field.cc @@ -141,7 +141,16 @@ GenerateAccessorDeclarations(io::Printer* printer) const { printer->Print(variables_, "$deprecated_attr$const ::std::string& $name$() const;\n" - "$deprecated_attr$void set_$name$(const ::std::string& value);\n" + "$deprecated_attr$void set_$name$(const ::std::string& value);\n"); + + if (!SupportsArenas(descriptor_)) { + printer->Print(variables_, + "#if LANG_CXX11\n" + "$deprecated_attr$void set_$name$(::std::string&& value);\n" + "#endif\n"); + } + + printer->Print(variables_, "$deprecated_attr$void set_$name$(const char* value);\n" "$deprecated_attr$void set_$name$(const $pointer_type$* value, size_t size)" ";\n" @@ -249,6 +258,14 @@ GenerateInlineAccessorDefinitions(io::Printer* printer, " $name$_.SetNoArena($default_variable$, value);\n" " // @@protoc_insertion_point(field_set:$full_name$)\n" "}\n" + "#if LANG_CXX11\n" + "$inline$void $classname$::set_$name$(::std::string&& value) {\n" + " $set_hasbit$\n" + " $name$_.SetNoArena(\n" + " $default_variable$, ::std::move(value));\n" + " // @@protoc_insertion_point(field_set_rvalue:$full_name$)\n" + "}\n" + "#endif\n" "$inline$void $classname$::set_$name$(const char* value) {\n" " $set_hasbit$\n" " $name$_.SetNoArena($default_variable$, $string_piece$(value));\n" @@ -633,6 +650,19 @@ GenerateInlineAccessorDefinitions(io::Printer* printer, " $oneof_prefix$$name$_.SetNoArena($default_variable$, value);\n" " // @@protoc_insertion_point(field_set:$full_name$)\n" "}\n" + "#if LANG_CXX11\n" + "$inline$void $classname$::set_$name$(::std::string&& value) {\n" + " // @@protoc_insertion_point(field_set:$full_name$)\n" + " if (!has_$name$()) {\n" + " clear_$oneof_name$();\n" + " set_has_$name$();\n" + " $oneof_prefix$$name$_.UnsafeSetDefault($default_variable$);\n" + " }\n" + " $oneof_prefix$$name$_.SetNoArena(\n" + " $default_variable$, ::std::move(value));\n" + " // @@protoc_insertion_point(field_set_rvalue:$full_name$)\n" + "}\n" + "#endif\n" "$inline$void $classname$::set_$name$(const char* value) {\n" " if (!has_$name$()) {\n" " clear_$oneof_name$();\n" |