util/AllocatedString: replace Clone() with copy constructor

This commit is contained in:
Max Kellermann 2021-01-14 13:43:42 +01:00 committed by Max Kellermann
parent bca5d79f88
commit b833c5d2c7
2 changed files with 9 additions and 10 deletions

View File

@ -38,11 +38,11 @@ class IcuCompare {
#ifdef _WIN32
/* Windows API functions work with wchar_t strings, so let's
cache the MultiByteToWideChar() result for performance */
BasicAllocatedString<wchar_t> needle;
#else
AllocatedString needle;
using AllocatedString = BasicAllocatedString<wchar_t>;
#endif
AllocatedString needle;
public:
IcuCompare():needle(nullptr) {}
@ -50,12 +50,12 @@ public:
IcuCompare(const IcuCompare &src) noexcept
:needle(src
? src.needle.Clone()
? AllocatedString(src.needle)
: nullptr) {}
IcuCompare &operator=(const IcuCompare &src) noexcept {
needle = src
? src.needle.Clone()
? AllocatedString(src.needle)
: nullptr;
return *this;
}

View File

@ -71,6 +71,9 @@ public:
explicit BasicAllocatedString(const_pointer src)
:value(Duplicate(src)) {}
BasicAllocatedString(const BasicAllocatedString &src) noexcept
:BasicAllocatedString(Duplicate(src.value)) {}
BasicAllocatedString(BasicAllocatedString &&src) noexcept
:value(src.Steal()) {}
@ -137,10 +140,6 @@ public:
return std::exchange(value, nullptr);
}
BasicAllocatedString Clone() const {
return BasicAllocatedString(Duplicate(*this));
}
private:
static pointer Duplicate(string_view src) {
auto p = new value_type[src.size() + 1];
@ -150,7 +149,7 @@ private:
static pointer Duplicate(const_pointer src) {
return src != nullptr
? Duplicate(std::string_view(src))
? Duplicate(string_view(src))
: nullptr;
}
};