summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIdan Horowitz <idan.horowitz@gmail.com>2022-02-16 00:24:24 +0200
committerAndreas Kling <kling@serenityos.org>2022-02-16 22:21:37 +0100
commit4c6a1f4db2fb899ea8f910c2941f32cea35aecce (patch)
treea6d8b6ccb9bf37adf37a75b2a37503bf2cb1a19a
parent8f093e91e068cb2952a456566879bda81401c782 (diff)
downloadserenity-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.cpp13
-rw-r--r--AK/StringView.h32
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