From 129462cca77853828aed1d5c8e6a03d75353b35a Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Tue, 26 May 2020 03:21:34 -0700 Subject: [PATCH] AK: Unify FlyString/StringView::ends_with implementation on StringUtils::ends_with This creates a unified implementation of ends_with with case sensitivity across String/StringView/FlyString. --- AK/FlyString.cpp | 5 +++++ AK/FlyString.h | 1 + AK/StringView.cpp | 10 ++-------- AK/StringView.h | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/AK/FlyString.cpp b/AK/FlyString.cpp index e320b95c2d..54f25cc2d9 100644 --- a/AK/FlyString.cpp +++ b/AK/FlyString.cpp @@ -98,6 +98,11 @@ bool FlyString::equals_ignoring_case(const StringView& other) const return StringUtils::equals_ignoring_case(view(), other); } +bool FlyString::ends_with(const StringView& str, CaseSensitivity case_sensitivity) const +{ + return StringUtils::ends_with(view(), str, case_sensitivity); +} + FlyString FlyString::to_lowercase() const { return String(*m_impl).to_lowercase(); diff --git a/AK/FlyString.h b/AK/FlyString.h index d3423522c5..ea6411c26b 100644 --- a/AK/FlyString.h +++ b/AK/FlyString.h @@ -85,6 +85,7 @@ public: int to_int(bool& ok) const; bool equals_ignoring_case(const StringView&) const; + bool ends_with(const StringView&, CaseSensitivity = CaseSensitivity::CaseSensitive) const; static void did_destroy_impl(Badge, StringImpl&); diff --git a/AK/StringView.cpp b/AK/StringView.cpp index 11ff3d6600..a895842683 100644 --- a/AK/StringView.cpp +++ b/AK/StringView.cpp @@ -141,15 +141,9 @@ bool StringView::ends_with(char ch) const return ch == characters_without_null_termination()[length() - 1]; } -bool StringView::ends_with(const StringView& str) const +bool StringView::ends_with(const StringView& str, CaseSensitivity case_sensitivity) const { - if (str.is_empty()) - return true; - if (is_empty()) - return false; - if (str.length() > length()) - return false; - return !memcmp(characters_without_null_termination() + length() - str.length(), str.characters_without_null_termination(), str.length()); + return StringUtils::ends_with(*this, str, case_sensitivity); } bool StringView::matches(const StringView& mask, CaseSensitivity case_sensitivity) const diff --git a/AK/StringView.h b/AK/StringView.h index 6a4b419633..9ba07735b2 100644 --- a/AK/StringView.h +++ b/AK/StringView.h @@ -73,7 +73,7 @@ public: unsigned hash() const; bool starts_with(const StringView&) const; - bool ends_with(const StringView&) const; + bool ends_with(const StringView&, CaseSensitivity = CaseSensitivity::CaseSensitive) const; bool starts_with(char) const; bool ends_with(char) const; bool matches(const StringView& mask, CaseSensitivity = CaseSensitivity::CaseInsensitive) const;