diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-09-28 16:12:45 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-09-29 10:08:42 +0200 |
commit | 6c2ec9794db85a4ff2de71c7f50587c4fd7ac703 (patch) | |
tree | e5a6b1e3ca747811f9b89724d0caddcaa4ab716d /writerfilter | |
parent | 4b95451f859bac8e05956ce12df17f1ee410032d (diff) |
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 <noel.grandin@collabora.co.uk>
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/inc/dmapper/DomainMapperFactory.hxx | 2 | ||||
-rw-r--r-- | writerfilter/qa/cppunittests/misc/misc.cxx | 38 | ||||
-rw-r--r-- | writerfilter/source/dmapper/ConversionHelper.cxx | 4 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 36 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 14 |
5 files changed, 47 insertions, 47 deletions
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; |