diff options
Diffstat (limited to 'i18npool/source/transliteration')
24 files changed, 89 insertions, 139 deletions
diff --git a/i18npool/source/transliteration/chartonum.cxx b/i18npool/source/transliteration/chartonum.cxx index 41a6549b67ef..899ba9212ab7 100644 --- a/i18npool/source/transliteration/chartonum.cxx +++ b/i18npool/source/transliteration/chartonum.cxx @@ -19,8 +19,6 @@ #include <chartonum.hxx> -using namespace com::sun::star::uno; - namespace i18npool { #define TRANSLITERATION_CHARTONUM( name ) \ diff --git a/i18npool/source/transliteration/fullwidthToHalfwidth.cxx b/i18npool/source/transliteration/fullwidthToHalfwidth.cxx index 6a90a957f038..558177128618 100644 --- a/i18npool/source/transliteration/fullwidthToHalfwidth.cxx +++ b/i18npool/source/transliteration/fullwidthToHalfwidth.cxx @@ -26,7 +26,6 @@ using namespace com::sun::star::uno; using namespace com::sun::star::i18n; -using namespace com::sun::star::lang; namespace i18npool { @@ -50,7 +49,7 @@ fullwidthToHalfwidth::transliterateImpl( const OUString& inStr, sal_Int32 startP const OUString& newStr = i18nutil::widthfolding::decompose_ja_voiced_sound_marks (inStr, startPos, nCount, pOffset); // One to One mapping - return transliteration_OneToOne::transliterateImpl( newStr, 0, newStr.getLength(), pOffset); + return transliteration_OneToOne::transliterateImpl( newStr, 0, newStr.getLength(), nullptr); } sal_Unicode SAL_CALL diff --git a/i18npool/source/transliteration/halfwidthToFullwidth.cxx b/i18npool/source/transliteration/halfwidthToFullwidth.cxx index 8351291031f7..528aa0d87523 100644 --- a/i18npool/source/transliteration/halfwidthToFullwidth.cxx +++ b/i18npool/source/transliteration/halfwidthToFullwidth.cxx @@ -22,7 +22,6 @@ #include <transliteration_OneToOne.hxx> using namespace com::sun::star::uno; -using namespace com::sun::star::lang; namespace i18npool { diff --git a/i18npool/source/transliteration/hiraganaToKatakana.cxx b/i18npool/source/transliteration/hiraganaToKatakana.cxx index 80b6f14d82f8..4cefa0d79e61 100644 --- a/i18npool/source/transliteration/hiraganaToKatakana.cxx +++ b/i18npool/source/transliteration/hiraganaToKatakana.cxx @@ -19,9 +19,6 @@ #include <transliteration_OneToOne.hxx> -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; - namespace i18npool { // see http://charts.unicode.org/Web/U3040.html Hiragana (U+3040..U+309F) diff --git a/i18npool/source/transliteration/ignoreBaFa_ja_JP.cxx b/i18npool/source/transliteration/ignoreBaFa_ja_JP.cxx index 042e09c1df9f..34b4a465e40c 100644 --- a/i18npool/source/transliteration/ignoreBaFa_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreBaFa_ja_JP.cxx @@ -19,8 +19,6 @@ #include <transliteration_Ignore.hxx> -using namespace com::sun::star::uno; - namespace i18npool { const transliteration_Ignore::Mapping BaFa[] = { diff --git a/i18npool/source/transliteration/ignoreHyuByu_ja_JP.cxx b/i18npool/source/transliteration/ignoreHyuByu_ja_JP.cxx index be66ddfc9381..b564ab0930af 100644 --- a/i18npool/source/transliteration/ignoreHyuByu_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreHyuByu_ja_JP.cxx @@ -19,9 +19,6 @@ #include <transliteration_Ignore.hxx> -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; - namespace i18npool { const transliteration_Ignore::Mapping HyuByu[] = { diff --git a/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx b/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx index 5e8659027992..84fffc560358 100644 --- a/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx @@ -24,7 +24,6 @@ #include <numeric> using namespace com::sun::star::uno; -using namespace com::sun::star::lang; namespace i18npool { diff --git a/i18npool/source/transliteration/ignoreIterationMark_ja_JP.cxx b/i18npool/source/transliteration/ignoreIterationMark_ja_JP.cxx index c5a3cb04565c..a1f64d163bd6 100644 --- a/i18npool/source/transliteration/ignoreIterationMark_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreIterationMark_ja_JP.cxx @@ -24,7 +24,6 @@ #include <numeric> using namespace com::sun::star::uno; -using namespace com::sun::star::lang; namespace i18npool { diff --git a/i18npool/source/transliteration/ignoreKana.cxx b/i18npool/source/transliteration/ignoreKana.cxx index 86a484e1a67b..36c1b528c4aa 100644 --- a/i18npool/source/transliteration/ignoreKana.cxx +++ b/i18npool/source/transliteration/ignoreKana.cxx @@ -25,7 +25,6 @@ namespace com::sun::star::uno { class XComponentContext; } using namespace com::sun::star::uno; -using namespace com::sun::star::lang; namespace i18npool { diff --git a/i18npool/source/transliteration/ignoreKiKuFollowedBySa_ja_JP.cxx b/i18npool/source/transliteration/ignoreKiKuFollowedBySa_ja_JP.cxx index 113c80f9aeeb..293ff03b2bb8 100644 --- a/i18npool/source/transliteration/ignoreKiKuFollowedBySa_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreKiKuFollowedBySa_ja_JP.cxx @@ -22,7 +22,6 @@ #include <numeric> using namespace com::sun::star::uno; -using namespace com::sun::star::lang; namespace i18npool { diff --git a/i18npool/source/transliteration/ignoreProlongedSoundMark_ja_JP.cxx b/i18npool/source/transliteration/ignoreProlongedSoundMark_ja_JP.cxx index 3291afa9ba7d..dba1165d5162 100644 --- a/i18npool/source/transliteration/ignoreProlongedSoundMark_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreProlongedSoundMark_ja_JP.cxx @@ -22,7 +22,6 @@ #include <numeric> using namespace com::sun::star::uno; -using namespace com::sun::star::lang; namespace i18npool { diff --git a/i18npool/source/transliteration/ignoreSeZe_ja_JP.cxx b/i18npool/source/transliteration/ignoreSeZe_ja_JP.cxx index 1851a2791bb2..83ef32dad35f 100644 --- a/i18npool/source/transliteration/ignoreSeZe_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreSeZe_ja_JP.cxx @@ -19,9 +19,6 @@ #include <transliteration_Ignore.hxx> -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; - namespace i18npool { const transliteration_Ignore::Mapping SeZe[] = { diff --git a/i18npool/source/transliteration/ignoreSize_ja_JP.cxx b/i18npool/source/transliteration/ignoreSize_ja_JP.cxx index 01f3f20da43f..24279439ca97 100644 --- a/i18npool/source/transliteration/ignoreSize_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreSize_ja_JP.cxx @@ -22,7 +22,6 @@ #include <rtl/ref.hxx> using namespace com::sun::star::uno; -using namespace com::sun::star::lang; namespace i18npool { diff --git a/i18npool/source/transliteration/ignoreTiJi_ja_JP.cxx b/i18npool/source/transliteration/ignoreTiJi_ja_JP.cxx index a3e6116a9b62..40b216a00007 100644 --- a/i18npool/source/transliteration/ignoreTiJi_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreTiJi_ja_JP.cxx @@ -19,9 +19,6 @@ #include <transliteration_Ignore.hxx> -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; - namespace i18npool { const transliteration_Ignore::Mapping TiJi[] = { diff --git a/i18npool/source/transliteration/ignoreWidth.cxx b/i18npool/source/transliteration/ignoreWidth.cxx index 1b9f15fde159..80d285ccfed8 100644 --- a/i18npool/source/transliteration/ignoreWidth.cxx +++ b/i18npool/source/transliteration/ignoreWidth.cxx @@ -25,7 +25,6 @@ namespace com::sun::star::uno { class XComponentContext; } using namespace com::sun::star::uno; -using namespace com::sun::star::lang; namespace i18npool { diff --git a/i18npool/source/transliteration/largeToSmall_ja_JP.cxx b/i18npool/source/transliteration/largeToSmall_ja_JP.cxx index f6771fb6d4ac..089cd6e53e7a 100644 --- a/i18npool/source/transliteration/largeToSmall_ja_JP.cxx +++ b/i18npool/source/transliteration/largeToSmall_ja_JP.cxx @@ -21,9 +21,6 @@ #include <transliteration_OneToOne.hxx> -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; - namespace i18npool { // ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt diff --git a/i18npool/source/transliteration/smallToLarge_ja_JP.cxx b/i18npool/source/transliteration/smallToLarge_ja_JP.cxx index 47ddba1a96d3..c71706bfbffb 100644 --- a/i18npool/source/transliteration/smallToLarge_ja_JP.cxx +++ b/i18npool/source/transliteration/smallToLarge_ja_JP.cxx @@ -21,9 +21,6 @@ #include <transliteration_OneToOne.hxx> -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; - namespace i18npool { // ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt diff --git a/i18npool/source/transliteration/textToPronounce_zh.cxx b/i18npool/source/transliteration/textToPronounce_zh.cxx index ad33bdf31dca..2057f8c43e28 100644 --- a/i18npool/source/transliteration/textToPronounce_zh.cxx +++ b/i18npool/source/transliteration/textToPronounce_zh.cxx @@ -21,10 +21,12 @@ #include <com/sun/star/i18n/MultipleCharsOutputException.hpp> #include <com/sun/star/i18n/TransliterationType.hpp> +#include <o3tl/temporary.hxx> #include <rtl/ustring.hxx> #include <rtl/ustrbuf.hxx> #include <textToPronounce_zh.hxx> +#include <indexentrysupplier_asian.hxx> using namespace com::sun::star::i18n; using namespace com::sun::star::uno; @@ -43,7 +45,7 @@ TextToPronounce_zh::getPronounce(const sal_Unicode ch) if (idx) { sal_uInt16 address = idx[0][ch>>8]; if (address != 0xFFFF) - return reinterpret_cast<sal_Unicode *>( + return reinterpret_cast<sal_Unicode const *>( &idx[2][idx[1][address + (ch & 0xFF)]]); } return emptyString; @@ -122,74 +124,27 @@ TextToPronounce_zh::equals( const OUString & str1, sal_Int32 pos1, sal_Int32 nCo return (nCount1 == nCount2); } -#ifdef DISABLE_DYNLOADING - -extern "C" { - -sal_uInt16** get_zh_zhuyin(); -sal_uInt16** get_zh_pinyin(); - -} - -#endif - TextToPinyin_zh_CN::TextToPinyin_zh_CN() : -#ifndef DISABLE_DYNLOADING - TextToPronounce_zh("get_zh_pinyin") -#else TextToPronounce_zh(get_zh_pinyin) -#endif { transliterationName = "ChineseCharacterToPinyin"; implementationName = "com.sun.star.i18n.Transliteration.TextToPinyin_zh_CN"; } TextToChuyin_zh_TW::TextToChuyin_zh_TW() : -#ifndef DISABLE_DYNLOADING - TextToPronounce_zh("get_zh_zhuyin") -#else TextToPronounce_zh(get_zh_zhuyin) -#endif { transliterationName = "ChineseCharacterToChuyin"; implementationName = "com.sun.star.i18n.Transliteration.TextToChuyin_zh_TW"; } -#ifndef DISABLE_DYNLOADING - -extern "C" { static void thisModule() {} } - -TextToPronounce_zh::TextToPronounce_zh(const char* func_name) -{ -#ifdef SAL_DLLPREFIX - OUString lib(SAL_DLLPREFIX"index_data" SAL_DLLEXTENSION); -#else - OUString lib("index_data" SAL_DLLEXTENSION); -#endif - hModule = osl_loadModuleRelative( - &thisModule, lib.pData, SAL_LOADMODULE_DEFAULT ); - idx=nullptr; - if (hModule) { - sal_uInt16** (*function)() = reinterpret_cast<sal_uInt16** (*)()>(osl_getFunctionSymbol(hModule, OUString::createFromAscii(func_name).pData)); - if (function) - idx=function(); - } -} - -#else - -TextToPronounce_zh::TextToPronounce_zh(sal_uInt16 ** (*function)()) +TextToPronounce_zh::TextToPronounce_zh(sal_uInt16 const ** (*function)(sal_Int16 &)) { - idx = function(); + idx = function(o3tl::temporary(sal_Int16())); } -#endif - TextToPronounce_zh::~TextToPronounce_zh() { -#ifndef DISABLE_DYNLOADING - if (hModule) osl_unloadModule(hModule); -#endif } } diff --git a/i18npool/source/transliteration/texttonum.cxx b/i18npool/source/transliteration/texttonum.cxx index 5fd0e898de96..4517471d3a68 100644 --- a/i18npool/source/transliteration/texttonum.cxx +++ b/i18npool/source/transliteration/texttonum.cxx @@ -19,8 +19,6 @@ #include <texttonum.hxx> -using namespace com::sun::star::uno; - namespace i18npool { #define TRANSLITERATION_TEXTTONUM( name ) \ diff --git a/i18npool/source/transliteration/transliterationImpl.cxx b/i18npool/source/transliteration/transliterationImpl.cxx index c85d16442341..c5b6d9cf5cce 100644 --- a/i18npool/source/transliteration/transliterationImpl.cxx +++ b/i18npool/source/transliteration/transliterationImpl.cxx @@ -27,6 +27,7 @@ #include <comphelper/sequence.hxx> #include <cppuhelper/supportsservice.hxx> +#include <o3tl/string_view.hxx> #include <rtl/ustring.hxx> #include <algorithm> @@ -64,22 +65,44 @@ TMList const TMlist[] = { // Modules ModulesNew // No enum define for this trans. application has to use impl name to load it // TmItem1 (IGNORE_CASE_SIMPLE), // (1<<11 1024) (66) - TmItem1 (IgnoreTraditionalKanji_ja_JP), // 3. (1<<12 4096) (10) - TmItem1 (IgnoreTraditionalKana_ja_JP), // 4. (1<<13 8192) (11) - TmItem1 (IgnoreMinusSign_ja_JP), // 5. (1<<13 16384) (12) - TmItem1 (IgnoreIterationMark_ja_JP), // 6. (1<<14 32768) (13) - TmItem1 (IgnoreSeparator_ja_JP), // 7. (1<<15 65536) (14) - TmItem1 (IgnoreSize_ja_JP), // 15. (1<<23 16777216) (22) - TmItem1 (IgnoreMiddleDot_ja_JP), // 17. (1<<25 67108864) (24) - TmItem1 (IgnoreSpace_ja_JP), // 18. (1<<26 134217728) (25) - TmItem1 (IgnoreZiZu_ja_JP), // 8. (1<<16 131072) (15) - TmItem1 (IgnoreBaFa_ja_JP), // 9. (1<<17 262144) (16) - TmItem1 (IgnoreTiJi_ja_JP), // 10. (1<<18 524288) (17) - TmItem1 (IgnoreHyuByu_ja_JP), // 11. (1<<19 1048576) (18) - TmItem1 (IgnoreSeZe_ja_JP), // 12. (1<<20 2097152) (19) - TmItem1 (IgnoreIandEfollowedByYa_ja_JP), // 13. (1<<21 4194304) (20) - TmItem1 (IgnoreKiKuFollowedBySa_ja_JP), // 14. (1<<22 8388608) (21) - TmItem1 (IgnoreProlongedSoundMark_ja_JP), // 16. (1<<24 33554432) (23) + {TransliterationModules_IgnoreTraditionalKanji_ja_JP, + TransliterationModulesNew_IgnoreTraditionalKanji_ja_JP, "ignoreTraditionalKanji_ja_JP"}, + // 3. (1<<12 4096) (10) + {TransliterationModules_IgnoreTraditionalKana_ja_JP, + TransliterationModulesNew_IgnoreTraditionalKana_ja_JP, "ignoreTraditionalKana_ja_JP"}, + // 4. (1<<13 8192) (11) + {TransliterationModules_IgnoreMinusSign_ja_JP, TransliterationModulesNew_IgnoreMinusSign_ja_JP, + "ignoreMinusSign_ja_JP"}, // 5. (1<<13 16384) (12) + {TransliterationModules_IgnoreIterationMark_ja_JP, + TransliterationModulesNew_IgnoreIterationMark_ja_JP, "ignoreIterationMark_ja_JP"}, + // 6. (1<<14 32768) (13) + {TransliterationModules_IgnoreSeparator_ja_JP, TransliterationModulesNew_IgnoreSeparator_ja_JP, + "ignoreSeparator_ja_JP"}, // 7. (1<<15 65536) (14) + {TransliterationModules_IgnoreSize_ja_JP, TransliterationModulesNew_IgnoreSize_ja_JP, + "ignoreSize_ja_JP"}, // 15. (1<<23 16777216) (22) + {TransliterationModules_IgnoreMiddleDot_ja_JP, TransliterationModulesNew_IgnoreMiddleDot_ja_JP, + "ignoreMiddleDot_ja_JP"}, // 17. (1<<25 67108864) (24) + {TransliterationModules_IgnoreSpace_ja_JP, TransliterationModulesNew_IgnoreSpace_ja_JP, + "ignoreSpace_ja_JP"}, // 18. (1<<26 134217728) (25) + {TransliterationModules_IgnoreZiZu_ja_JP, TransliterationModulesNew_IgnoreZiZu_ja_JP, + "ignoreZiZu_ja_JP"}, // 8. (1<<16 131072) (15) + {TransliterationModules_IgnoreBaFa_ja_JP, TransliterationModulesNew_IgnoreBaFa_ja_JP, + "ignoreBaFa_ja_JP"}, // 9. (1<<17 262144) (16) + {TransliterationModules_IgnoreTiJi_ja_JP, TransliterationModulesNew_IgnoreTiJi_ja_JP, + "ignoreTiJi_ja_JP"}, // 10. (1<<18 524288) (17) + {TransliterationModules_IgnoreHyuByu_ja_JP, TransliterationModulesNew_IgnoreHyuByu_ja_JP, + "ignoreHyuByu_ja_JP"}, // 11. (1<<19 1048576) (18) + {TransliterationModules_IgnoreSeZe_ja_JP, TransliterationModulesNew_IgnoreSeZe_ja_JP, + "ignoreSeZe_ja_JP"}, // 12. (1<<20 2097152) (19) + {TransliterationModules_IgnoreIandEfollowedByYa_ja_JP, + TransliterationModulesNew_IgnoreIandEfollowedByYa_ja_JP, "ignoreIandEfollowedByYa_ja_JP"}, + // 13. (1<<21 4194304) (20) + {TransliterationModules_IgnoreKiKuFollowedBySa_ja_JP, + TransliterationModulesNew_IgnoreKiKuFollowedBySa_ja_JP, "ignoreKiKuFollowedBySa_ja_JP"}, + // 14. (1<<22 8388608) (21) + {TransliterationModules_IgnoreProlongedSoundMark_ja_JP, + TransliterationModulesNew_IgnoreProlongedSoundMark_ja_JP, "ignoreProlongedSoundMark_ja_JP"}, + // 16. (1<<24 33554432) (23) TmItem1 (UPPERCASE_LOWERCASE), // 19. (1) (1) TmItem1 (LOWERCASE_UPPERCASE), // 20. (2) (2) @@ -88,8 +111,10 @@ TMList const TMlist[] = { // Modules ModulesNew TmItem1 (KATAKANA_HIRAGANA), // 23. (5) (5) TmItem1 (HIRAGANA_KATAKANA), // 24. (6) (6) - TmItem1 (SmallToLarge_ja_JP), // 25. (1<<27 268435456) (26) - TmItem1 (LargeToSmall_ja_JP), // 26. (1<<28 536870912) (27) + {TransliterationModules_SmallToLarge_ja_JP, TransliterationModulesNew_SmallToLarge_ja_JP, + "smallToLarge_ja_JP"}, // 25. (1<<27 268435456) (26) + {TransliterationModules_LargeToSmall_ja_JP, TransliterationModulesNew_LargeToSmall_ja_JP, + "largeToSmall_ja_JP"}, // 26. (1<<28 536870912) (27) TmItem2 (NumToTextLower_zh_CN), // 27. () (28) TmItem2 (NumToTextUpper_zh_CN), // 28. () (29) TmItem2 (NumToTextLower_zh_TW), // 29. () (30) @@ -203,11 +228,11 @@ TransliterationImpl::loadModule( TransliterationModules modType, const Locale& r // additional transliterations from TransliterationModulesExtra (we cannot extend TransliterationModules) if (bool(modType & TransliterationModules(TransliterationModulesExtra::IGNORE_DIACRITICS_CTL))) { - if (loadModuleByName("ignoreDiacritics_CTL", bodyCascade[numCascade], rLocale)) + if (loadModuleByName(u"ignoreDiacritics_CTL", bodyCascade[numCascade], rLocale)) numCascade++; } if (bool(modType & TransliterationModules(TransliterationModulesExtra::IGNORE_KASHIDA_CTL))) - if (loadModuleByName("ignoreKashida_CTL", bodyCascade[numCascade], rLocale)) + if (loadModuleByName(u"ignoreKashida_CTL", bodyCascade[numCascade], rLocale)) numCascade++; } else if (bool(modType & TransliterationModules_NON_IGNORE_MASK)) { @@ -294,8 +319,6 @@ TransliterationImpl::transliterate( const OUString& inStr, sal_Int32 startPos, s if (numCascade == 0) return inStr; - if (offset.getLength() != nCount) - offset.realloc(nCount); if (numCascade == 1) { if ( startPos == 0 && nCount == inStr.getLength() ) @@ -600,17 +623,17 @@ void TransliterationImpl::loadBody( OUString const &implName, Reference<XExtende } bool -TransliterationImpl::loadModuleByName( const OUString& implName, +TransliterationImpl::loadModuleByName( std::u16string_view implName, Reference<XExtendedTransliteration>& body, const Locale& rLocale) { - OUString cname = TRLT_IMPLNAME_PREFIX + implName; + OUString cname = OUString::Concat(TRLT_IMPLNAME_PREFIX) + implName; loadBody(cname, body); if (body.is()) { body->loadModule(TransliterationModules(0), rLocale); // toUpper/toLoad need rLocale // if the module is ignore case/kana/width, load caseignore for equals/compareString mothed for (sal_Int16 i = 0; i < 3; i++) { - if (implName.equalsAscii(TMlist[i].implName)) { + if (o3tl::equalsAscii(implName, TMlist[i].implName)) { if (i == 0) // current module is caseignore body->loadModule(TMlist[0].tm, rLocale); // caseignore need to setup module name if (! caseignore.is()) { @@ -631,7 +654,7 @@ TransliterationImpl::loadModuleByName( const OUString& implName, OUString SAL_CALL TransliterationImpl::getImplementationName() { - return "com.sun.star.i18n.Transliteration"; + return u"com.sun.star.i18n.Transliteration"_ustr; } sal_Bool SAL_CALL @@ -643,7 +666,7 @@ TransliterationImpl::supportsService(const OUString& rServiceName) Sequence< OUString > SAL_CALL TransliterationImpl::getSupportedServiceNames() { - return { "com.sun.star.i18n.Transliteration" }; + return { u"com.sun.star.i18n.Transliteration"_ustr }; } } diff --git a/i18npool/source/transliteration/transliteration_Numeric.cxx b/i18npool/source/transliteration/transliteration_Numeric.cxx index 57c5b7e9942b..e0717379ed4c 100644 --- a/i18npool/source/transliteration/transliteration_Numeric.cxx +++ b/i18npool/source/transliteration/transliteration_Numeric.cxx @@ -58,13 +58,13 @@ Sequence< OUString > SAL_CALL #define NUMBER_ZERO 0x30 OUString -transliteration_Numeric::transliterateBullet( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, +transliteration_Numeric::transliterateBullet( std::u16string_view inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >* pOffset ) const { sal_Int32 number = -1, j = 0, endPos = startPos + nCount; - if (endPos > inStr.getLength()) - endPos = inStr.getLength(); + if (endPos > static_cast<sal_Int32>(inStr.size())) + endPos = inStr.size(); rtl_uString* pStr = rtl_uString_alloc(nCount); sal_Unicode* out = pStr->buffer; diff --git a/i18npool/source/transliteration/transliteration_body.cxx b/i18npool/source/transliteration/transliteration_body.cxx index e1fc11a8d70a..36c5ccc72f46 100644 --- a/i18npool/source/transliteration/transliteration_body.cxx +++ b/i18npool/source/transliteration/transliteration_body.cxx @@ -121,8 +121,17 @@ Transliteration_body::transliterateImpl( // Yes, on massive use even such small things do count. if ( pOffset ) { - std::vector<sal_Int32> aVec; - aVec.reserve(std::max<sal_Int32>(nLocalBuf, nCount) * NMAPPINGMAX); + sal_Int32* offsetData; + std::unique_ptr<sal_Int32[]> pOffsetHeapBuf; + sal_Int32 nOffsetCount = std::max<sal_Int32>(nLocalBuf, nCount); + if (nOffsetCount <= nLocalBuf) + offsetData = static_cast<sal_Int32*>(alloca(nOffsetCount * NMAPPINGMAX * sizeof(sal_Int32))); + else + { + pOffsetHeapBuf.reset(new sal_Int32[ nOffsetCount * NMAPPINGMAX ]); + offsetData = pOffsetHeapBuf.get(); + } + sal_Int32* offsetDataEnd = offsetData; for (sal_Int32 i = 0; i < nCount; i++) { @@ -130,12 +139,13 @@ Transliteration_body::transliterateImpl( MappingType nTmpMappingType = lcl_getMappingTypeForToggleCase( nMappingType, in[i] ); const i18nutil::Mapping &map = i18nutil::casefolding::getValue( in, i, nCount, aLocale, nTmpMappingType ); - std::fill_n(std::back_inserter(aVec), map.nmap, i + startPos); + std::fill_n(offsetDataEnd, map.nmap, i + startPos); + offsetDataEnd += map.nmap; std::copy_n(map.map, map.nmap, out + j); j += map.nmap; } - *pOffset = comphelper::containerToSequence(aVec); + *pOffset = css::uno::Sequence< sal_Int32 >(offsetData, offsetDataEnd - offsetData); } else { @@ -191,26 +201,18 @@ Transliteration_casemapping::Transliteration_casemapping() implementationName = "com.sun.star.i18n.Transliteration.Transliteration_casemapping"; } -void -Transliteration_casemapping::setMappingType( const MappingType rMappingType, const Locale& rLocale ) -{ - nMappingType = rMappingType; - if (aLocale != rLocale) - aLocale = rLocale; -} - Transliteration_u2l::Transliteration_u2l() { nMappingType = MappingType::UpperToLower; transliterationName = "upper_to_lower(generic)"; - implementationName = "com.sun.star.i18n.Transliteration.Transliteration_u2l"; + implementationName = "com.sun.star.i18n.Transliteration.UPPERCASE_LOWERCASE"; } Transliteration_l2u::Transliteration_l2u() { nMappingType = MappingType::LowerToUpper; transliterationName = "lower_to_upper(generic)"; - implementationName = "com.sun.star.i18n.Transliteration.Transliteration_l2u"; + implementationName = "com.sun.star.i18n.Transliteration.LOWERCASE_UPPERCASE"; } Transliteration_togglecase::Transliteration_togglecase() @@ -221,23 +223,23 @@ Transliteration_togglecase::Transliteration_togglecase() // a per character basis. nMappingType = MappingType::LowerToUpper | MappingType::UpperToLower; transliterationName = "toggle(generic)"; - implementationName = "com.sun.star.i18n.Transliteration.Transliteration_togglecase"; + implementationName = "com.sun.star.i18n.Transliteration.TOGGLE_CASE"; } Transliteration_titlecase::Transliteration_titlecase() { nMappingType = MappingType::ToTitle; transliterationName = "title(generic)"; - implementationName = "com.sun.star.i18n.Transliteration.Transliteration_titlecase"; + implementationName = "com.sun.star.i18n.Transliteration.TITLE_CASE"; } /// @throws RuntimeException static OUString transliterate_titlecase_Impl( - const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, + std::u16string_view inStr, sal_Int32 startPos, sal_Int32 nCount, const Locale &rLocale, Sequence< sal_Int32 >* pOffset ) { - const OUString aText( inStr.copy( startPos, nCount ) ); + const OUString aText( inStr.substr( startPos, nCount ) ); OUString aRes; if (!aText.isEmpty()) @@ -262,11 +264,14 @@ static OUString transliterate_titlecase_Impl( // The rest of the text should just become lowercase. aRes = xCharClassImpl->toTitle( aResolvedLigature, 0, nResolvedLen, rLocale ) + xCharClassImpl->toLower( aText, 1, aText.getLength() - 1, rLocale ); - pOffset->realloc( aRes.getLength() ); + if (pOffset) + { + pOffset->realloc( aRes.getLength() ); - auto [begin, end] = asNonConstRange(*pOffset); - sal_Int32* pOffsetInt = std::fill_n(begin, nResolvedLen, 0); - std::iota(pOffsetInt, end, 1); + auto [begin, end] = asNonConstRange(*pOffset); + sal_Int32* pOffsetInt = std::fill_n(begin, nResolvedLen, 0); + std::iota(pOffsetInt, end, 1); + } } return aRes; } @@ -284,7 +289,7 @@ Transliteration_sentencecase::Transliteration_sentencecase() { nMappingType = MappingType::ToTitle; // though only to be applied to the first word... transliterationName = "sentence(generic)"; - implementationName = "com.sun.star.i18n.Transliteration.Transliteration_sentencecase"; + implementationName = "com.sun.star.i18n.Transliteration.SENTENCE_CASE"; } // this function expects to be called on a sentence-by-sentence basis, diff --git a/i18npool/source/transliteration/transliteration_caseignore.cxx b/i18npool/source/transliteration/transliteration_caseignore.cxx index dcd7b3b94be7..b5c8c24d10c8 100644 --- a/i18npool/source/transliteration/transliteration_caseignore.cxx +++ b/i18npool/source/transliteration/transliteration_caseignore.cxx @@ -38,7 +38,7 @@ Transliteration_caseignore::Transliteration_caseignore() nMappingType = MappingType::FullFolding; moduleLoaded = TransliterationFlags::NONE; transliterationName = "case ignore (generic)"; - implementationName = "com.sun.star.i18n.Transliteration.Transliteration_caseignore"; + implementationName = "com.sun.star.i18n.Transliteration.IGNORE_CASE"; } void SAL_CALL diff --git a/i18npool/source/transliteration/transliteration_commonclass.cxx b/i18npool/source/transliteration/transliteration_commonclass.cxx index 054ae60e220c..625a8a9177ab 100644 --- a/i18npool/source/transliteration/transliteration_commonclass.cxx +++ b/i18npool/source/transliteration/transliteration_commonclass.cxx @@ -127,7 +127,7 @@ sal_Bool SAL_CALL transliteration_commonclass::supportsService(const OUString& r Sequence< OUString > SAL_CALL transliteration_commonclass::getSupportedServiceNames() { - return { "com.sun.star.i18n.Transliteration.l10n" }; + return { u"com.sun.star.i18n.Transliteration.l10n"_ustr }; } } |