util/AllocatedString: replace Clone() with copy constructor
This commit is contained in:
parent
bca5d79f88
commit
b833c5d2c7
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue