include/rtl/ustring.hxx | 20 ++++++++++++++++++++ sal/qa/rtl/oustring/rtl_OUString2.cxx | 19 +++++++++++++++++++ 2 files changed, 39 insertions(+)
New commits: commit 06ecfbe3d236e06f597e5422bfc24a9a76c3f90c Author: Tor Lillqvist <t...@collabora.com> AuthorDate: Thu Jan 14 10:59:34 2021 +0200 Commit: Tor Lillqvist <t...@collabora.com> CommitDate: Thu Jan 14 18:06:58 2021 +0100 Introduce startsWithAsciiL() to match endsWithAsciiL() Will be used in an upcoming change. Unit test included. Change-Id: I777a755cab543ea277b84fb5ad021d0b91725764 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109264 Tested-by: Jenkins Reviewed-by: Tor Lillqvist <t...@collabora.com> diff --git a/include/rtl/ustring.hxx b/include/rtl/ustring.hxx index ee3cfe170555..3a7f8bd5654f 100644 --- a/include/rtl/ustring.hxx +++ b/include/rtl/ustring.hxx @@ -1419,6 +1419,26 @@ public: return b; } + /** + Check whether this string starts with a given ASCII string. + + @param asciiStr a sequence of at least asciiStrLength ASCII characters + (bytes in the range 0x00--0x7F) + @param asciiStrLength the length of asciiStr; must be non-negative + @return true if this string starts with asciiStr; otherwise, false is + returned + + @since LibreOffice 7.2 + */ + bool startsWithAsciiL(char const * asciiStr, sal_Int32 asciiStrLength) + const + { + return asciiStrLength <= pData->length + && rtl_ustr_asciil_reverseEquals_WithLength( + pData->buffer, asciiStr, + asciiStrLength); + } + /** Check whether this string starts with a given string, ignoring the case of ASCII letters. diff --git a/sal/qa/rtl/oustring/rtl_OUString2.cxx b/sal/qa/rtl/oustring/rtl_OUString2.cxx index 516378dc14a7..d2223511f92a 100644 --- a/sal/qa/rtl/oustring/rtl_OUString2.cxx +++ b/sal/qa/rtl/oustring/rtl_OUString2.cxx @@ -881,6 +881,24 @@ void indexOfAscii::test() { sal_Int32(3), OUString("foofoobar").indexOf("foo", 1)); } +class startsWithAsciiL: public CppUnit::TestFixture { +public: + void test(); + + CPPUNIT_TEST_SUITE(startsWithAsciiL); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); +}; + +void startsWithAsciiL::test() { + CPPUNIT_ASSERT_EQUAL(true, OUString().startsWithAsciiL("", 0)); + CPPUNIT_ASSERT_EQUAL(false, OUString().startsWithAsciiL("x", 1)); + CPPUNIT_ASSERT_EQUAL(true, OUString("bar").startsWithAsciiL("bar", 3)); + CPPUNIT_ASSERT_EQUAL(false, OUString("bar").startsWithAsciiL("foobar", 6)); + CPPUNIT_ASSERT_EQUAL(true, OUString("foobar").startsWithAsciiL("foo", 3)); + CPPUNIT_ASSERT_EQUAL(false, OUString("FOOBAR").startsWithAsciiL("foo", 3)); +} + class endsWith: public CppUnit::TestFixture { public: void test(); @@ -1033,6 +1051,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::getToken); CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::convertToString); CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::construction); CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::indexOfAscii); +CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::startsWithAsciiL); CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::endsWith); CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::isEmpty); CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::createFromCodePoints); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits