mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 03:22:43 +00:00 
			
		
		
		
	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.
This commit is contained in:
		
							parent
							
								
									8f093e91e0
								
							
						
					
					
						commit
						4c6a1f4db2
					
				
					 2 changed files with 39 additions and 6 deletions
				
			
		|  | @ -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 | ||||
| { | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Idan Horowitz
						Idan Horowitz