diff options
author | Brian Gianforcaro <b.gianfo@gmail.com> | 2020-05-26 02:58:34 -0700 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-05-26 13:17:19 +0200 |
commit | 8e4b858b3ff61a969fdc5c695a0affb76354ed51 (patch) | |
tree | ec752f5929fb03c8de44919f33a11cd7fb044bd9 | |
parent | d98e7435685dab9de5637a8d09a5cc99be16169a (diff) | |
download | serenity-8e4b858b3ff61a969fdc5c695a0affb76354ed51.zip |
AK: Move String::ends_with implementation to StringUtils
Centralizing so it can be used by other string implementations
-rw-r--r-- | AK/String.cpp | 8 | ||||
-rw-r--r-- | AK/StringUtils.cpp | 12 | ||||
-rw-r--r-- | AK/StringUtils.h | 2 |
3 files changed, 15 insertions, 7 deletions
diff --git a/AK/String.cpp b/AK/String.cpp index 789b18dc8c..14f03c3f38 100644 --- a/AK/String.cpp +++ b/AK/String.cpp @@ -280,13 +280,7 @@ bool String::starts_with(char ch) const bool String::ends_with(const StringView& str) const { - if (str.is_empty()) - return true; - if (is_empty()) - return false; - if (str.length() > length()) - return false; - return !memcmp(characters() + (length() - str.length()), str.characters_without_null_termination(), str.length()); + return StringUtils::ends_with(*this, str); } bool String::ends_with(char ch) const diff --git a/AK/StringUtils.cpp b/AK/StringUtils.cpp index 4bd2b7aada..09e4661710 100644 --- a/AK/StringUtils.cpp +++ b/AK/StringUtils.cpp @@ -25,6 +25,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include <AK/Memory.h> #include <AK/String.h> #include <AK/StringUtils.h> #include <AK/StringView.h> @@ -195,6 +196,17 @@ bool equals_ignoring_case(const StringView& a, const StringView& b) return true; } +bool ends_with(const StringView& str, const StringView& end) +{ + if (end.is_empty()) + return true; + if (str.is_empty()) + return false; + if (end.length() > str.length()) + return false; + return !memcmp(str.characters_without_null_termination() + (str.length() - end.length()), end.characters_without_null_termination(), end.length()); +} + } } diff --git a/AK/StringUtils.h b/AK/StringUtils.h index 7e9007f102..5ba124f9de 100644 --- a/AK/StringUtils.h +++ b/AK/StringUtils.h @@ -43,6 +43,8 @@ int convert_to_int(const StringView&, bool& ok); unsigned convert_to_uint(const StringView&, bool& ok); unsigned convert_to_uint_from_hex(const StringView&, bool& ok); bool equals_ignoring_case(const StringView&, const StringView&); +bool ends_with(const StringView& str, const StringView& end); + } } |