String/StringVal: Replace char*/string constructors with string_view

This commit is contained in:
Tim Wojtulewicz 2022-02-04 13:52:04 -07:00
parent 16ee942a8d
commit 4f470c24ed
4 changed files with 10 additions and 30 deletions

View file

@ -939,9 +939,7 @@ StringVal::StringVal(int length, const char* s)
{ {
} }
StringVal::StringVal(const char* s) : StringVal(new String(s)) { } StringVal::StringVal(std::string_view s) : StringVal(s.length(), s.data()) { }
StringVal::StringVal(const string& s) : StringVal(s.length(), s.data()) { }
StringVal::~StringVal() StringVal::~StringVal()
{ {

View file

@ -527,8 +527,7 @@ class StringVal final : public Val
{ {
public: public:
explicit StringVal(String* s); explicit StringVal(String* s);
explicit StringVal(const char* s); StringVal(std::string_view s);
explicit StringVal(const std::string& s);
StringVal(int length, const char* s); StringVal(int length, const char* s);
~StringVal() override; ~StringVal() override;

View file

@ -47,12 +47,7 @@ String::String(const u_char* str, int arg_n, bool add_NUL) : String()
Set(str, arg_n, add_NUL); Set(str, arg_n, add_NUL);
} }
String::String(const char* str) : String() String::String(std::string_view str) : String()
{
Set(str);
}
String::String(const std::string& str) : String()
{ {
Set(str); Set(str);
} }
@ -147,31 +142,21 @@ void String::Set(const u_char* str, int len, bool add_NUL)
use_free_to_delete = false; use_free_to_delete = false;
} }
void String::Set(const char* str) void String::Set(std::string_view str)
{ {
Reset(); Reset();
if ( str ) if ( str.data() )
{ {
n = strlen(str); n = str.size();
b = new u_char[n + 1]; b = new u_char[n + 1];
memcpy(b, str, n + 1); memcpy(b, str.data(), n);
b[n] = 0;
final_NUL = true; final_NUL = true;
use_free_to_delete = false; use_free_to_delete = false;
} }
} }
void String::Set(const std::string& str)
{
Reset();
n = str.size();
b = new u_char[n + 1];
memcpy(b, str.c_str(), n + 1);
final_NUL = true;
use_free_to_delete = false;
}
void String::Set(const String& str) void String::Set(const String& str)
{ {
*this = str; *this = str;

View file

@ -43,8 +43,7 @@ public:
// Constructors creating internal copies of the data passed in. // Constructors creating internal copies of the data passed in.
String(const u_char* str, int arg_n, bool add_NUL); String(const u_char* str, int arg_n, bool add_NUL);
explicit String(const char* str); String(std::string_view str);
explicit String(const std::string& str);
String(const String& bs); String(const String& bs);
// Constructor that takes owernship of the vector passed in. // Constructor that takes owernship of the vector passed in.
@ -72,8 +71,7 @@ public:
// contents to a copy of the string given by the arguments. // contents to a copy of the string given by the arguments.
// //
void Set(const u_char* str, int len, bool add_NUL = true); void Set(const u_char* str, int len, bool add_NUL = true);
void Set(const char* str); void Set(std::string_view str);
void Set(const std::string& str);
void Set(const String& str); void Set(const String& str);
void SetUseFreeToDelete(int use_it) { use_free_to_delete = use_it; } void SetUseFreeToDelete(int use_it) { use_free_to_delete = use_it; }