Commit b833c5d2 authored by Max Kellermann's avatar Max Kellermann Committed by Max Kellermann

util/AllocatedString: replace Clone() with copy constructor

parent bca5d79f
......@@ -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;
}
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment