include/o3tl/string_view.hxx | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-)
New commits: commit 9470fca71139f9e439ce61b4c93dd33022c2cc6d Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Thu Apr 13 08:51:34 2023 +0200 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Thu Apr 13 13:21:37 2023 +0200 deduplicate o3tl::trim Change-Id: I5d4b3555b59b5abf622c389662e83cbd0f7d142d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150213 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/include/o3tl/string_view.hxx b/include/o3tl/string_view.hxx index c3a76433339a..91088aaae745 100644 --- a/include/o3tl/string_view.hxx +++ b/include/o3tl/string_view.hxx @@ -380,8 +380,9 @@ inline bool implIsWhitespace(sal_Unicode c) } } // namespace internal -// Like OUString::trim, but for std::u16string_view: -inline std::u16string_view trim(std::u16string_view str) +// Like OUString::trim, but for std::[u16]string_view: +template <typename charT, typename traits = std::char_traits<charT>> +std::basic_string_view<charT, traits> trim(std::basic_string_view<charT, traits> str) { size_t nFirst = 0; size_t nLast = str.size(); @@ -399,24 +400,10 @@ inline std::u16string_view trim(std::u16string_view str) return { str.data() + nFirst, nLast - nFirst + 1 }; } -// Like OString::trim, but for std::string_view: -inline std::string_view trim(std::string_view str) -{ - size_t nFirst = 0; - size_t nLast = str.size(); - - while ((nFirst < nLast) && internal::implIsWhitespace(str.data()[nFirst])) - ++nFirst; - - if (nFirst == nLast) - return {}; - - do - --nLast; - while (internal::implIsWhitespace(str.data()[nLast])); +// "deduction guides" - return { str.data() + nFirst, nLast - nFirst + 1 }; -} +inline auto trim(std::string_view str) { return trim<>(str); } +inline auto trim(std::u16string_view str) { return trim<>(str); } // Like OString::toInt32, but for std::string_view: inline sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix = 10)