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)

Reply via email to