diff options
author | Idan Horowitz <idan.horowitz@gmail.com> | 2022-02-16 00:24:24 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-02-16 22:21:37 +0100 |
commit | 4c6a1f4db2fb899ea8f910c2941f32cea35aecce (patch) | |
tree | a6d8b6ccb9bf37adf37a75b2a37503bf2cb1a19a | |
parent | 8f093e91e068cb2952a456566879bda81401c782 (diff) | |
download | serenity-4c6a1f4db2fb899ea8f910c2941f32cea35aecce.zip |
AK: Exclude StringView String APIs from the Kernel
These APIs are only used by userland, and String is OOM-infallible,
so let's just ifdef it out of the Kernel.
-rw-r--r-- | AK/StringView.cpp | 13 | ||||
-rw-r--r-- | AK/StringView.h | 32 |
2 files changed, 39 insertions, 6 deletions
diff --git a/AK/StringView.cpp b/AK/StringView.cpp index 3879d45295..64aea8f227 100644 --- a/AK/StringView.cpp +++ b/AK/StringView.cpp @@ -7,15 +7,19 @@ #include <AK/AnyOf.h> #include <AK/ByteBuffer.h> #include <AK/Find.h> -#include <AK/FlyString.h> #include <AK/Function.h> #include <AK/Memory.h> -#include <AK/String.h> #include <AK/StringView.h> #include <AK/Vector.h> +#ifndef KERNEL +# include <AK/FlyString.h> +# include <AK/String.h> +#endif + namespace AK { +#ifndef KERNEL StringView::StringView(const String& string) : m_characters(string.characters()) , m_length(string.length()) @@ -27,6 +31,7 @@ StringView::StringView(const FlyString& string) , m_length(string.length()) { } +#endif StringView::StringView(const ByteBuffer& buffer) : m_characters((const char*)buffer.data()) @@ -142,6 +147,7 @@ bool StringView::equals_ignoring_case(StringView other) const return StringUtils::equals_ignoring_case(*this, other); } +#ifndef KERNEL String StringView::to_lowercase_string() const { return StringImpl::create_lowercased(characters_without_null_termination(), length()); @@ -156,6 +162,7 @@ String StringView::to_titlecase_string() const { return StringUtils::to_titlecase(*this); } +#endif StringView StringView::substring_view_starting_from_substring(StringView substring) const { @@ -201,6 +208,7 @@ template Optional<unsigned long long> StringView::to_uint() const; template Optional<long> StringView::to_uint() const; template Optional<long long> StringView::to_uint() const; +#ifndef KERNEL bool StringView::operator==(const String& string) const { return *this == string.view(); @@ -212,6 +220,7 @@ String StringView::replace(StringView needle, StringView replacement, bool all_o { return StringUtils::replace(*this, needle, replacement, all_occurrences); } +#endif Vector<size_t> StringView::find_all(StringView needle) const { diff --git a/AK/StringView.h b/AK/StringView.h index 1b200932c0..783a50ff48 100644 --- a/AK/StringView.h +++ b/AK/StringView.h @@ -45,14 +45,21 @@ public: } StringView(const ByteBuffer&); +#ifndef KERNEL StringView(const String&); StringView(const FlyString&); +#endif explicit StringView(ByteBuffer&&) = delete; +#ifndef KERNEL explicit StringView(String&&) = delete; explicit StringView(FlyString&&) = delete; +#endif - [[nodiscard]] constexpr bool is_null() const { return m_characters == nullptr; } + [[nodiscard]] constexpr bool is_null() const + { + return m_characters == nullptr; + } [[nodiscard]] constexpr bool is_empty() const { return m_length == 0; } [[nodiscard]] constexpr char const* characters_without_null_termination() const { return m_characters; } @@ -87,11 +94,16 @@ public: [[nodiscard]] StringView trim(StringView characters, TrimMode mode = TrimMode::Both) const { return StringUtils::trim(*this, characters, mode); } [[nodiscard]] StringView trim_whitespace(TrimMode mode = TrimMode::Both) const { return StringUtils::trim_whitespace(*this, mode); } +#ifndef KERNEL [[nodiscard]] String to_lowercase_string() const; [[nodiscard]] String to_uppercase_string() const; [[nodiscard]] String to_titlecase_string() const; +#endif - [[nodiscard]] Optional<size_t> find(char needle, size_t start = 0) const { return StringUtils::find(*this, needle, start); } + [[nodiscard]] Optional<size_t> find(char needle, size_t start = 0) const + { + return StringUtils::find(*this, needle, start); + } [[nodiscard]] Optional<size_t> find(StringView needle, size_t start = 0) const { return StringUtils::find(*this, needle, start); } [[nodiscard]] Optional<size_t> find_last(char needle) const { return StringUtils::find_last(*this, needle); } // FIXME: Implement find_last(StringView) for API symmetry. @@ -202,7 +214,9 @@ public: return !(*this == cstring); } +#ifndef KERNEL bool operator==(const String&) const; +#endif [[nodiscard]] constexpr int compare(StringView other) const { @@ -242,12 +256,22 @@ public: constexpr bool operator>=(StringView other) const { return compare(other) >= 0; } +#ifndef KERNEL [[nodiscard]] String to_string() const; +#endif - [[nodiscard]] bool is_whitespace() const { return StringUtils::is_whitespace(*this); } + [[nodiscard]] bool is_whitespace() const + { + return StringUtils::is_whitespace(*this); + } +#ifndef KERNEL [[nodiscard]] String replace(StringView needle, StringView replacement, bool all_occurrences = false) const; - [[nodiscard]] size_t count(StringView needle) const { return StringUtils::count(*this, needle); } +#endif + [[nodiscard]] size_t count(StringView needle) const + { + return StringUtils::count(*this, needle); + } template<typename... Ts> [[nodiscard]] ALWAYS_INLINE constexpr bool is_one_of(Ts&&... strings) const |