diff options
Diffstat (limited to 'src/google/protobuf/compiler/cpp/cpp_string_field.cc')
-rw-r--r-- | src/google/protobuf/compiler/cpp/cpp_string_field.cc | 63 |
1 files changed, 28 insertions, 35 deletions
diff --git a/src/google/protobuf/compiler/cpp/cpp_string_field.cc b/src/google/protobuf/compiler/cpp/cpp_string_field.cc index e74eb432..8590df7e 100644 --- a/src/google/protobuf/compiler/cpp/cpp_string_field.cc +++ b/src/google/protobuf/compiler/cpp/cpp_string_field.cc @@ -96,13 +96,11 @@ GenerateAccessorDeclarations(io::Printer* printer) const { printer->Print(variables_, "inline const ::std::string& $name$() const;\n" - "inline void set_$name$(const ::std::string& value);\n"); + "inline void set_$name$(const ::std::string& value);\n" + "inline void set_$name$(const char* value);\n"); if (descriptor_->type() == FieldDescriptor::TYPE_BYTES) { printer->Print(variables_, - "inline void set_$name$(const char* value, size_t size);\n"); - } else { - printer->Print(variables_, - "inline void set_$name$(const char* value);\n"); + "inline void set_$name$(const void* value, size_t size);\n"); } printer->Print(variables_, @@ -127,25 +125,23 @@ GenerateInlineAccessorDefinitions(io::Printer* printer) const { " $name$_ = new ::std::string;\n" " }\n" " $name$_->assign(value);\n" + "}\n" + "inline void $classname$::set_$name$(const char* value) {\n" + " _set_bit($index$);\n" + " if ($name$_ == &_default_$name$_) {\n" + " $name$_ = new ::std::string;\n" + " }\n" + " $name$_->assign(value);\n" "}\n"); if (descriptor_->type() == FieldDescriptor::TYPE_BYTES) { printer->Print(variables_, - "inline void $classname$::set_$name$(const char* value, size_t size) {\n" + "inline void $classname$::set_$name$(const void* value, size_t size) {\n" " _set_bit($index$);\n" " if ($name$_ == &_default_$name$_) {\n" " $name$_ = new ::std::string;\n" " }\n" - " $name$_->assign(value, size);\n" - "}\n"); - } else { - printer->Print(variables_, - "inline void $classname$::set_$name$(const char* value) {\n" - " _set_bit($index$);\n" - " if ($name$_ == &_default_$name$_) {\n" - " $name$_ = new ::std::string;\n" - " }\n" - " $name$_->assign(value);\n" + " $name$_->assign(reinterpret_cast<const char*>(value), size);\n" "}\n"); } @@ -265,17 +261,15 @@ GenerateAccessorDeclarations(io::Printer* printer) const { "inline const ::std::string& $name$(int index) const;\n" "inline ::std::string* mutable_$name$(int index);\n" "inline void set_$name$(int index, const ::std::string& value);\n" + "inline void set_$name$(int index, const char* value);\n" "inline ::std::string* add_$name$();\n" - "inline void add_$name$(const ::std::string& value);\n"); + "inline void add_$name$(const ::std::string& value);\n" + "inline void add_$name$(const char* value);\n"); if (descriptor_->type() == FieldDescriptor::TYPE_BYTES) { printer->Print(variables_, - "inline void set_$name$(int index, const char* value, size_t size);\n" - "inline void add_$name$(const char* value, size_t size);\n"); - } else { - printer->Print(variables_, - "inline void set_$name$(int index, const char* value);\n" - "inline void add_$name$(const char* value);\n"); + "inline void set_$name$(int index, const void* value, size_t size);\n" + "inline void add_$name$(const void* value, size_t size);\n"); } if (descriptor_->options().has_ctype()) { @@ -305,29 +299,28 @@ GenerateInlineAccessorDefinitions(io::Printer* printer) const { "inline void $classname$::set_$name$(int index, const ::std::string& value) {\n" " $name$_.Mutable(index)->assign(value);\n" "}\n" + "inline void $classname$::set_$name$(int index, const char* value) {\n" + " $name$_.Mutable(index)->assign(value);\n" + "}\n" "inline ::std::string* $classname$::add_$name$() {\n" " return $name$_.Add();\n" "}\n" "inline void $classname$::add_$name$(const ::std::string& value) {\n" " $name$_.Add()->assign(value);\n" + "}\n" + "inline void $classname$::add_$name$(const char* value) {\n" + " $name$_.Add()->assign(value);\n" "}\n"); if (descriptor_->type() == FieldDescriptor::TYPE_BYTES) { printer->Print(variables_, "inline void " - "$classname$::set_$name$(int index, const char* value, size_t size) {\n" - " $name$_.Mutable(index)->assign(value, size);\n" - "}\n" - "inline void $classname$::add_$name$(const char* value, size_t size) {\n" - " $name$_.Add()->assign(value, size);\n" - "}\n"); - } else { - printer->Print(variables_, - "inline void $classname$::set_$name$(int index, const char* value) {\n" - " $name$_.Mutable(index)->assign(value);\n" + "$classname$::set_$name$(int index, const void* value, size_t size) {\n" + " $name$_.Mutable(index)->assign(\n" + " reinterpret_cast<const char*>(value), size);\n" "}\n" - "inline void $classname$::add_$name$(const char* value) {\n" - " $name$_.Add()->assign(value);\n" + "inline void $classname$::add_$name$(const void* value, size_t size) {\n" + " $name$_.Add()->assign(reinterpret_cast<const char*>(value), size);\n" "}\n"); } } |