mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 16:18:12 +00:00
AK: Move String::hash() and String::String() to StringBase
This commit is contained in:
parent
1b09a1851e
commit
d6290c4684
4 changed files with 16 additions and 16 deletions
|
@ -323,15 +323,6 @@ bool String::operator==(char const* c_string) const
|
||||||
return bytes_as_string_view() == c_string;
|
return bytes_as_string_view() == c_string;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 String::hash() const
|
|
||||||
{
|
|
||||||
if (is_short_string()) {
|
|
||||||
auto bytes = this->bytes();
|
|
||||||
return string_hash(reinterpret_cast<char const*>(bytes.data()), bytes.size());
|
|
||||||
}
|
|
||||||
return m_data->hash();
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 String::ascii_case_insensitive_hash() const
|
u32 String::ascii_case_insensitive_hash() const
|
||||||
{
|
{
|
||||||
return case_insensitive_string_hash(reinterpret_cast<char const*>(bytes().data()), bytes().size());
|
return case_insensitive_string_hash(reinterpret_cast<char const*>(bytes().data()), bytes().size());
|
||||||
|
|
|
@ -48,12 +48,6 @@ public:
|
||||||
|
|
||||||
using StringBase::StringBase;
|
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.
|
// Creates a new String from a sequence of UTF-8 encoded code points.
|
||||||
static ErrorOr<String> from_utf8(StringView);
|
static ErrorOr<String> from_utf8(StringView);
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
@ -153,7 +147,6 @@ public:
|
||||||
[[nodiscard]] bool contains(StringView, CaseSensitivity = CaseSensitivity::CaseSensitive) const;
|
[[nodiscard]] bool contains(StringView, CaseSensitivity = CaseSensitivity::CaseSensitive) const;
|
||||||
[[nodiscard]] bool contains(u32, CaseSensitivity = CaseSensitivity::CaseSensitive) const;
|
[[nodiscard]] bool contains(u32, CaseSensitivity = CaseSensitivity::CaseSensitive) const;
|
||||||
|
|
||||||
[[nodiscard]] u32 hash() const;
|
|
||||||
[[nodiscard]] u32 ascii_case_insensitive_hash() const;
|
[[nodiscard]] u32 ascii_case_insensitive_hash() const;
|
||||||
|
|
||||||
template<Arithmetic T>
|
template<Arithmetic T>
|
||||||
|
|
|
@ -66,6 +66,15 @@ ReadonlyBytes StringBase::bytes() const
|
||||||
return m_data->bytes();
|
return m_data->bytes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 StringBase::hash() const
|
||||||
|
{
|
||||||
|
if (is_short_string()) {
|
||||||
|
auto bytes = this->bytes();
|
||||||
|
return string_hash(reinterpret_cast<char const*>(bytes.data()), bytes.size());
|
||||||
|
}
|
||||||
|
return m_data->hash();
|
||||||
|
}
|
||||||
|
|
||||||
bool StringBase::operator==(StringBase const& other) const
|
bool StringBase::operator==(StringBase const& other) const
|
||||||
{
|
{
|
||||||
if (is_short_string())
|
if (is_short_string())
|
||||||
|
|
|
@ -30,6 +30,12 @@ static_assert(__builtin_offsetof(ShortString, byte_count_and_short_string_flag)
|
||||||
|
|
||||||
class StringBase {
|
class StringBase {
|
||||||
public:
|
public:
|
||||||
|
// Creates an empty (zero-length) String.
|
||||||
|
constexpr StringBase()
|
||||||
|
: StringBase(ShortString { SHORT_STRING_FLAG, {} })
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
StringBase(StringBase const&);
|
StringBase(StringBase const&);
|
||||||
|
|
||||||
constexpr StringBase(StringBase&& other)
|
constexpr StringBase(StringBase&& other)
|
||||||
|
@ -54,6 +60,7 @@ public:
|
||||||
// Returns the underlying UTF-8 encoded bytes.
|
// Returns the underlying UTF-8 encoded bytes.
|
||||||
// NOTE: There is no guarantee about null-termination.
|
// NOTE: There is no guarantee about null-termination.
|
||||||
[[nodiscard]] ReadonlyBytes bytes() const;
|
[[nodiscard]] ReadonlyBytes bytes() const;
|
||||||
|
[[nodiscard]] u32 hash() const;
|
||||||
|
|
||||||
[[nodiscard]] bool operator==(StringBase const&) const;
|
[[nodiscard]] bool operator==(StringBase const&) const;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue