From d6290c468464d259e2e07fa837e9eda8d23d2118 Mon Sep 17 00:00:00 2001 From: Dan Klishch Date: Sat, 28 Oct 2023 15:47:59 -0400 Subject: [PATCH] AK: Move String::hash() and String::String() to StringBase --- AK/String.cpp | 9 --------- AK/String.h | 7 ------- AK/StringBase.cpp | 9 +++++++++ AK/StringBase.h | 7 +++++++ 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/AK/String.cpp b/AK/String.cpp index a0a9147235b..3258ce2c380 100644 --- a/AK/String.cpp +++ b/AK/String.cpp @@ -323,15 +323,6 @@ bool String::operator==(char const* c_string) const return bytes_as_string_view() == c_string; } -u32 String::hash() const -{ - if (is_short_string()) { - auto bytes = this->bytes(); - return string_hash(reinterpret_cast(bytes.data()), bytes.size()); - } - return m_data->hash(); -} - u32 String::ascii_case_insensitive_hash() const { return case_insensitive_string_hash(reinterpret_cast(bytes().data()), bytes().size()); diff --git a/AK/String.h b/AK/String.h index 0dbd6f46e84..073b47cb4f5 100644 --- a/AK/String.h +++ b/AK/String.h @@ -48,12 +48,6 @@ public: using StringBase::StringBase; - // Creates an empty (zero-length) String. - constexpr String() - : StringBase(ShortString { SHORT_STRING_FLAG, {} }) - { - } - // Creates a new String from a sequence of UTF-8 encoded code points. static ErrorOr from_utf8(StringView); template @@ -153,7 +147,6 @@ public: [[nodiscard]] bool contains(StringView, CaseSensitivity = CaseSensitivity::CaseSensitive) const; [[nodiscard]] bool contains(u32, CaseSensitivity = CaseSensitivity::CaseSensitive) const; - [[nodiscard]] u32 hash() const; [[nodiscard]] u32 ascii_case_insensitive_hash() const; template diff --git a/AK/StringBase.cpp b/AK/StringBase.cpp index 2a289bd8844..62fa5225b37 100644 --- a/AK/StringBase.cpp +++ b/AK/StringBase.cpp @@ -66,6 +66,15 @@ ReadonlyBytes StringBase::bytes() const return m_data->bytes(); } +u32 StringBase::hash() const +{ + if (is_short_string()) { + auto bytes = this->bytes(); + return string_hash(reinterpret_cast(bytes.data()), bytes.size()); + } + return m_data->hash(); +} + bool StringBase::operator==(StringBase const& other) const { if (is_short_string()) diff --git a/AK/StringBase.h b/AK/StringBase.h index 60b80a112f9..5ce3ae77b74 100644 --- a/AK/StringBase.h +++ b/AK/StringBase.h @@ -30,6 +30,12 @@ static_assert(__builtin_offsetof(ShortString, byte_count_and_short_string_flag) class StringBase { public: + // Creates an empty (zero-length) String. + constexpr StringBase() + : StringBase(ShortString { SHORT_STRING_FLAG, {} }) + { + } + StringBase(StringBase const&); constexpr StringBase(StringBase&& other) @@ -54,6 +60,7 @@ public: // Returns the underlying UTF-8 encoded bytes. // NOTE: There is no guarantee about null-termination. [[nodiscard]] ReadonlyBytes bytes() const; + [[nodiscard]] u32 hash() const; [[nodiscard]] bool operator==(StringBase const&) const;