mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 23:58:12 +00:00
StringView: Make construction of String from a StringView containing a String cheaper
... at the cost of an additional pointer per view.
This commit is contained in:
parent
8fecc0eaee
commit
f9ba7adae2
3 changed files with 9 additions and 3 deletions
|
@ -36,9 +36,12 @@ public:
|
||||||
|
|
||||||
String() {}
|
String() {}
|
||||||
|
|
||||||
String(StringView view)
|
String(const StringView& view)
|
||||||
: m_impl(StringImpl::create(view.characters(), view.length()))
|
|
||||||
{
|
{
|
||||||
|
if (view.m_string)
|
||||||
|
*this = String(*view.m_string);
|
||||||
|
else
|
||||||
|
m_impl = StringImpl::create(view.characters(), view.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
String(const String& other)
|
String(const String& other)
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
namespace AK {
|
namespace AK {
|
||||||
|
|
||||||
StringView::StringView(const AK::String& string)
|
StringView::StringView(const AK::String& string)
|
||||||
: m_characters(string.characters())
|
: m_string(&string)
|
||||||
|
, m_characters(string.characters())
|
||||||
, m_length(string.length())
|
, m_length(string.length())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,8 @@ public:
|
||||||
bool operator==(const String&) const;
|
bool operator==(const String&) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
friend class String;
|
||||||
|
const AK::String* m_string { nullptr };
|
||||||
const char* m_characters { nullptr };
|
const char* m_characters { nullptr };
|
||||||
int m_length { 0 };
|
int m_length { 0 };
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue