summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xAK/AKString.h3
-rw-r--r--AK/String.cpp14
2 files changed, 17 insertions, 0 deletions
diff --git a/AK/AKString.h b/AK/AKString.h
index 8606d2934e..0325f3831d 100755
--- a/AK/AKString.h
+++ b/AK/AKString.h
@@ -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); }
diff --git a/AK/String.cpp b/AK/String.cpp
index 4f8d230259..40513aa6db 100644
--- a/AK/String.cpp
+++ b/AK/String.cpp
@@ -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)