AK: Add String::operator==(StringView)

Comparing a String to a StringView would instantiate a temporary
String just for the comparison. Let's not do that. :^)
This commit is contained in:
Andreas Kling 2019-08-24 22:28:42 +02:00
parent b020a5e7ce
commit cd8278e489
2 changed files with 17 additions and 0 deletions

View file

@ -133,6 +133,9 @@ public:
bool operator==(const String&) const;
bool operator!=(const String& other) const { return !(*this == other); }
bool operator==(const StringView&) const;
bool operator!=(const StringView& other) const { return !(*this == other); }
bool operator<(const String&) const;
bool operator<(const char*) const;
bool operator>=(const String& other) const { return !(*this < other); }

View file

@ -19,6 +19,20 @@ bool String::operator==(const String& other) const
return !memcmp(characters(), other.characters(), length());
}
bool String::operator==(const StringView& other) const
{
if (!m_impl)
return !other.m_characters;
if (!other.m_characters)
return false;
if (length() != other.length())
return false;
return !memcmp(characters(), other.characters_without_null_termination(), length());
}
bool String::operator<(const String& other) const
{
if (!m_impl)