Skip to content

Commit

Permalink
AK: Unify FlyString/StringView::ends_with implementation on StringUti…
Browse files Browse the repository at this point in the history
…ls::ends_with

This creates a unified implementation of ends_with with case sensitivity
across String/StringView/FlyString.
  • Loading branch information
bgianfo authored and awesomekling committed May 26, 2020
1 parent 332f96e commit 129462c
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 9 deletions.
5 changes: 5 additions & 0 deletions AK/FlyString.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
1 change: 1 addition & 0 deletions AK/FlyString.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class FlyString {
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>, StringImpl&);

Expand Down
10 changes: 2 additions & 8 deletions AK/StringView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion AK/StringView.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ class StringView {
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;
Expand Down

0 comments on commit 129462c

Please sign in to comment.