writerfilter/inc/dmapper/DomainMapperFactory.hxx  |    2 -
 writerfilter/qa/cppunittests/misc/misc.cxx        |   38 +++++++++++-----------
 writerfilter/source/dmapper/ConversionHelper.cxx  |    4 +-
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   36 ++++++++++----------
 writerfilter/source/rtftok/rtfdocumentimpl.cxx    |   14 ++++----
 5 files changed, 47 insertions(+), 47 deletions(-)

New commits:
commit 6c2ec9794db85a4ff2de71c7f50587c4fd7ac703
Author:     Noel Grandin <[email protected]>
AuthorDate: Wed Sep 28 16:12:45 2022 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Thu Sep 29 10:08:42 2022 +0200

    use more string_view in writerfilter
    
    Change-Id: Idd4582138e8da9cc60e0a728bdea5542a509a4f8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140711
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/writerfilter/inc/dmapper/DomainMapperFactory.hxx 
b/writerfilter/inc/dmapper/DomainMapperFactory.hxx
index 944ec1aeeccc..ea7ab81e1a1b 100644
--- a/writerfilter/inc/dmapper/DomainMapperFactory.hxx
+++ b/writerfilter/inc/dmapper/DomainMapperFactory.hxx
@@ -41,7 +41,7 @@ public:
 
 // export just for test
 SAL_DLLPUBLIC_EXPORT std::tuple<OUString, std::vector<OUString>, 
std::vector<OUString>>
-splitFieldCommand(const OUString& rCommand);
+splitFieldCommand(std::u16string_view rCommand);
 
 } // namespace writerfilter::dmapper
 
diff --git a/writerfilter/qa/cppunittests/misc/misc.cxx 
b/writerfilter/qa/cppunittests/misc/misc.cxx
index ce9e9ba28c29..027752bd7ad2 100644
--- a/writerfilter/qa/cppunittests/misc/misc.cxx
+++ b/writerfilter/qa/cppunittests/misc/misc.cxx
@@ -60,77 +60,77 @@ void WriterfilterMiscTest::testFieldParameters()
     using writerfilter::dmapper::splitFieldCommand;
     std::tuple<OUString, std::vector<OUString>, std::vector<OUString>> result;
 
-    result = splitFieldCommand("PAGEREF last_page");
+    result = splitFieldCommand(u"PAGEREF last_page");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
     CPPUNIT_ASSERT(std::get<2>(result).empty());
 
-    result = splitFieldCommand(" PAGEREF last_page ");
+    result = splitFieldCommand(u" PAGEREF last_page ");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
 
-    result = splitFieldCommand("pageref last_page");
+    result = splitFieldCommand(u"pageref last_page");
     CPPUNIT_ASSERT(std::get<2>(result).empty());
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
     CPPUNIT_ASSERT(std::get<2>(result).empty());
 
-    result = splitFieldCommand("pageref \"last_page\"");
+    result = splitFieldCommand(u"pageref \"last_page\"");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
     CPPUNIT_ASSERT(std::get<2>(result).empty());
 
-    result = splitFieldCommand("\"PAGEREF\" \"last_page\" \"\" ");
+    result = splitFieldCommand(u"\"PAGEREF\" \"last_page\" \"\" ");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(2), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
     CPPUNIT_ASSERT_EQUAL(OUString(), std::get<1>(result)[1]);
     CPPUNIT_ASSERT(std::get<2>(result).empty());
 
-    result = splitFieldCommand("\"PAGEREF\"\"last_page\"  ");
+    result = splitFieldCommand(u"\"PAGEREF\"\"last_page\"  ");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
     CPPUNIT_ASSERT(std::get<2>(result).empty());
 
-    result = splitFieldCommand("PAGEREF\"last_page\"  ");
+    result = splitFieldCommand(u"PAGEREF\"last_page\"  ");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
     CPPUNIT_ASSERT(std::get<2>(result).empty());
 
-    result = splitFieldCommand("\"PAGEREF\"last_page \"\"");
+    result = splitFieldCommand(u"\"PAGEREF\"last_page \"\"");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(2), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
     CPPUNIT_ASSERT_EQUAL(OUString(), std::get<1>(result)[1]);
     CPPUNIT_ASSERT(std::get<2>(result).empty());
 
-    result = splitFieldCommand("\"PAGEREF\"last_page \"\"");
+    result = splitFieldCommand(u"\"PAGEREF\"last_page \"\"");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(2), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
     CPPUNIT_ASSERT_EQUAL(OUString(), std::get<1>(result)[1]);
     CPPUNIT_ASSERT(std::get<2>(result).empty());
 
-    result = splitFieldCommand("pageref \"last\\\\pa\\\"ge\"");
+    result = splitFieldCommand(u"pageref \"last\\\\pa\\\"ge\"");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last\\pa\"ge"), std::get<1>(result)[0]);
     CPPUNIT_ASSERT(std::get<2>(result).empty());
 
-    result = splitFieldCommand("PAGEREF\"last_page\"\\*");
+    result = splitFieldCommand(u"PAGEREF\"last_page\"\\*");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
     CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<2>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("\\*"), std::get<2>(result)[0]);
 
-    result = splitFieldCommand("PAGEREF  last_page   \\b   foobar ");
+    result = splitFieldCommand(u"PAGEREF  last_page   \\b   foobar ");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size());
     CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]);
@@ -138,7 +138,7 @@ void WriterfilterMiscTest::testFieldParameters()
     CPPUNIT_ASSERT_EQUAL(OUString("\\B"), std::get<2>(result)[0]);
     CPPUNIT_ASSERT_EQUAL(OUString("foobar"), std::get<2>(result)[1]);
 
-    result = splitFieldCommand("PAGEREF\\bfoobar\\A\"\"");
+    result = splitFieldCommand(u"PAGEREF\\bfoobar\\A\"\"");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result));
     CPPUNIT_ASSERT(std::get<1>(result).empty());
     CPPUNIT_ASSERT_EQUAL(size_t(4), std::get<2>(result).size());
@@ -151,19 +151,19 @@ void WriterfilterMiscTest::testFieldParameters()
                          ";", "<", ">", "?", "@", "[", "]", "^", "_", "`", 
"{", "|", "}", "~" })
     {
         OUString test(OUString::createFromAscii(prefix) + "PAGE");
-        result = splitFieldCommand(test + " ");
+        result = splitFieldCommand(OUStringConcatenation(test + " "));
         CPPUNIT_ASSERT_EQUAL(test, std::get<0>(result));
     }
-    result = splitFieldCommand("\\PAGE ");
+    result = splitFieldCommand(u"\\PAGE ");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGE"), std::get<0>(result));
-    result = splitFieldCommand("\\ PAGE ");
+    result = splitFieldCommand(u"\\ PAGE ");
     CPPUNIT_ASSERT_EQUAL(OUString("\\ "), std::get<0>(result));
     CPPUNIT_ASSERT_EQUAL(OUString("PAGE"), std::get<1>(result)[0]);
-    result = splitFieldCommand("\\\\PAGE ");
+    result = splitFieldCommand(u"\\\\PAGE ");
     CPPUNIT_ASSERT_EQUAL(OUString("\\PAGE"), std::get<0>(result));
-    result = splitFieldCommand("\"PAGE\" ");
+    result = splitFieldCommand(u"\"PAGE\" ");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGE"), std::get<0>(result));
-    result = splitFieldCommand("\"PAGE ");
+    result = splitFieldCommand(u"\"PAGE ");
     CPPUNIT_ASSERT_EQUAL(OUString("PAGE "), std::get<0>(result));
 }
 
diff --git a/writerfilter/source/dmapper/ConversionHelper.cxx 
b/writerfilter/source/dmapper/ConversionHelper.cxx
index 5c3b0831ff1f..7f3f11544c85 100644
--- a/writerfilter/source/dmapper/ConversionHelper.cxx
+++ b/writerfilter/source/dmapper/ConversionHelper.cxx
@@ -286,10 +286,10 @@ void lcl_SwapQuotesInField(OUString &rFmt)
     }
     rFmt = aBuffer.makeStringAndClear();
 }
-bool lcl_IsNotAM(OUString const & rFmt, sal_Int32 nPos)
+bool lcl_IsNotAM(std::u16string_view rFmt, sal_Int32 nPos)
 {
     return (
-            (nPos == rFmt.getLength() - 1) ||
+            (nPos == static_cast<sal_Int32>(rFmt.size()) - 1) ||
             (
             (rFmt[nPos+1] != 'M') &&
             (rFmt[nPos+1] != 'm')
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index f1a2583d6809..7b1811974713 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -4384,22 +4384,22 @@ static OUString lcl_ParseFormat( const OUString& 
rCommand )
 /*-------------------------------------------------------------------------
 extract a parameter (with or without quotes) between the command and the 
following backslash
   -----------------------------------------------------------------------*/
-static OUString lcl_ExtractToken(OUString const& rCommand,
-        sal_Int32 & rIndex, bool & rHaveToken, bool & rIsSwitch)
+static OUString lcl_ExtractToken(std::u16string_view rCommand,
+        size_t & rIndex, bool & rHaveToken, bool & rIsSwitch)
 {
     rHaveToken = false;
     rIsSwitch = false;
 
     OUStringBuffer token;
     bool bQuoted(false);
-    for (; rIndex < rCommand.getLength(); ++rIndex)
+    for (; rIndex < rCommand.size(); ++rIndex)
     {
         sal_Unicode const currentChar(rCommand[rIndex]);
         switch (currentChar)
         {
             case '\\':
             {
-                if (rIndex == rCommand.getLength() - 1)
+                if (rIndex == rCommand.size() - 1)
                 {
                     SAL_INFO("writerfilter.dmapper", "field: trailing escape");
                     ++rIndex;
@@ -4418,7 +4418,7 @@ static OUString lcl_ExtractToken(OUString const& rCommand,
                     {
                         rIsSwitch = true;
                         rIndex += 2; // read 2 chars
-                        return rCommand.copy(rIndex - 2, 2).toAsciiUpperCase();
+                        return OUString(rCommand.substr(rIndex - 2, 
2)).toAsciiUpperCase();
                     }
                     else
                     {   // leave rIndex, read it again next time
@@ -4472,7 +4472,7 @@ static OUString lcl_ExtractToken(OUString const& rCommand,
             break;
         }
     }
-    assert(rIndex == rCommand.getLength());
+    assert(rIndex == rCommand.size());
     if (bQuoted)
     {
         // MS Word allows this, so just emit a debug message
@@ -4483,16 +4483,16 @@ static OUString lcl_ExtractToken(OUString const& 
rCommand,
     return token.makeStringAndClear();
 }
 
-std::tuple<OUString, std::vector<OUString>, std::vector<OUString> > 
splitFieldCommand(const OUString& rCommand)
+std::tuple<OUString, std::vector<OUString>, std::vector<OUString> > 
splitFieldCommand(std::u16string_view rCommand)
 {
     OUString sType;
     std::vector<OUString> arguments;
     std::vector<OUString> switches;
-    sal_Int32 nStartIndex(0);
+    size_t nStartIndex(0);
     // tdf#54584: Field may be prepended by a backslash
     // This is not an escapement, but already escaped literal "\"
     // MS Word allows this, so just skip it
-    if ((rCommand.getLength() >= nStartIndex + 2) &&
+    if ((rCommand.size() >= nStartIndex + 2) &&
         (rCommand[nStartIndex] == L'\\') &&
         (rCommand[nStartIndex + 1] != L'\\') &&
         (rCommand[nStartIndex + 1] != L' '))
@@ -4506,7 +4506,7 @@ std::tuple<OUString, std::vector<OUString>, 
std::vector<OUString> > splitFieldCo
         bool bIsSwitch;
         OUString const token =
             lcl_ExtractToken(rCommand, nStartIndex, bHaveToken, bIsSwitch);
-        assert(nStartIndex <= rCommand.getLength());
+        assert(nStartIndex <= rCommand.size());
         if (bHaveToken)
         {
             if (sType.isEmpty())
@@ -4522,7 +4522,7 @@ std::tuple<OUString, std::vector<OUString>, 
std::vector<OUString> > splitFieldCo
                 arguments.push_back(token);
             }
         }
-    } while (nStartIndex < rCommand.getLength());
+    } while (nStartIndex < rCommand.size());
 
     return std::make_tuple(sType, arguments, switches);
 }
@@ -4552,22 +4552,22 @@ static OUString lcl_ExtractVariableAndHint( 
std::u16string_view rCommand, OUStri
 
 
 static bool lcl_FindInCommand(
-    const OUString& rCommand,
+    std::u16string_view rCommand,
     sal_Unicode cSwitch,
     OUString& rValue )
 {
     bool bRet = false;
     OUString sSearch = "\\" + OUStringChar( cSwitch );
-    sal_Int32 nIndex = rCommand.indexOf( sSearch  );
-    if( nIndex >= 0 )
+    size_t nIndex = rCommand.find( sSearch  );
+    if( nIndex != std::u16string_view::npos )
     {
         bRet = true;
         //find next '\' or end of string
-        sal_Int32 nEndIndex = rCommand.indexOf( '\\', nIndex + 1);
-        if( nEndIndex < 0 )
-            nEndIndex = rCommand.getLength() ;
+        size_t nEndIndex = rCommand.find( '\\', nIndex + 1);
+        if( nEndIndex == std::u16string_view::npos )
+            nEndIndex = rCommand.size() ;
         if( nEndIndex - nIndex > 3 )
-            rValue = rCommand.copy( nIndex + 3, nEndIndex - nIndex - 3);
+            rValue = rCommand.substr( nIndex + 3, nEndIndex - nIndex - 3);
     }
     return bRet;
 }
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx 
b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 3df44f0124c9..7fa664ea26b1 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -58,20 +58,20 @@ using namespace com::sun::star;
 namespace
 {
 /// Returns an util::DateTime from a 'YYYY. MM. DD.' string.
-util::DateTime getDateTimeFromUserProp(const OUString& rString)
+util::DateTime getDateTimeFromUserProp(std::u16string_view rString)
 {
     util::DateTime aRet;
-    sal_Int32 nLen = rString.getLength();
+    size_t nLen = rString.size();
     if (nLen >= 4)
     {
-        aRet.Year = o3tl::toInt32(rString.subView(0, 4));
+        aRet.Year = o3tl::toInt32(rString.substr(0, 4));
 
-        if (nLen >= 8 && rString.match(". ", 4))
+        if (nLen >= 8 && o3tl::starts_with(rString.substr(4), u". "))
         {
-            aRet.Month = o3tl::toInt32(rString.subView(6, 2));
+            aRet.Month = o3tl::toInt32(rString.substr(6, 2));
 
-            if (nLen >= 12 && rString.match(". ", 8))
-                aRet.Day = o3tl::toInt32(rString.subView(10, 2));
+            if (nLen >= 12 && o3tl::starts_with(rString.substr(8), u". "))
+                aRet.Day = o3tl::toInt32(rString.substr(10, 2));
         }
     }
     return aRet;

Reply via email to