AK: Add String::operator==(const char*).

Without this function, comparing a String to a const char* will instantiate
a temporary String which is obviously not great.

Also add some missing null checks to StringView::operator==(const char*).
This commit is contained in:
Andreas Kling 2019-06-08 18:30:40 +02:00
parent 8b1154f5f2
commit 6a51093ab1
2 changed files with 19 additions and 0 deletions

View file

@ -133,6 +133,20 @@ public:
bool operator!=(const String& other) const { return !(*this == other); }
bool operator<(const String&) const;
bool operator==(const char* cstring) const
{
if (is_null())
return !cstring;
if (!cstring)
return false;
return !strcmp(characters(), cstring);
}
bool operator!=(const char* cstring) const
{
return !(*this == cstring);
}
String isolated_copy() const;
static String empty();

View file

@ -29,6 +29,7 @@ public:
}
StringView(const AK::String& string);
bool is_null() const { return !m_characters; }
bool is_empty() const { return m_length == 0; }
const char* characters() const { return m_characters; }
int length() const { return m_length; }
@ -40,6 +41,10 @@ public:
bool operator==(const char* cstring) const
{
if (is_null())
return !cstring;
if (!cstring)
return false;
int other_length = strlen(cstring);
if (m_length != other_length)
return false;