summaryrefslogtreecommitdiff
path: root/i18npool
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-06-15 10:31:59 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-06-15 21:02:59 +0200
commit183e1f9eef4840689e81bbf4d7734df2c7e63c5d (patch)
treea1f095cb1a9cb0a0af00b5dc21f876fbbf1361c8 /i18npool
parent11ac3528f46443cb1f790d0e9ac710cea27fc3a0 (diff)
speed up startup time
by avoid conversion of static locale data from sal_Unicode to OUString data - we can declare the data as OUStringConstExpr arrays and then no conversion is necessary. Change-Id: Ief35b1e3e08ed44c1b9161485a69ef504e1a1c89 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153123 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'i18npool')
-rw-r--r--i18npool/source/localedata/LocaleNode.cxx16
-rw-r--r--i18npool/source/localedata/localedata.cxx15
2 files changed, 15 insertions, 16 deletions
diff --git a/i18npool/source/localedata/LocaleNode.cxx b/i18npool/source/localedata/LocaleNode.cxx
index d797c45c53b6..d89a7515c8da 100644
--- a/i18npool/source/localedata/LocaleNode.cxx
+++ b/i18npool/source/localedata/LocaleNode.cxx
@@ -296,8 +296,8 @@ void LCInfoNode::generateCode (const OFileWriter &of) const
aLanguage = languageNode->getChildAt(0)->getValue();
if (aLanguage.getLength() != 2 && aLanguage.getLength() != 3)
incErrorStr( "Error: langID '%s' not 2-3 characters\n", aLanguage);
- of.writeParameter("langID", aLanguage);
- of.writeParameter("langDefaultName", languageNode->getChildAt(1)->getValue());
+ of.writeOUStringLiteralParameter("langID", aLanguage);
+ of.writeOUStringLiteralParameter("langDefaultName", languageNode->getChildAt(1)->getValue());
}
else
incError( "No Language node.");
@@ -306,8 +306,8 @@ void LCInfoNode::generateCode (const OFileWriter &of) const
OUString aCountry( countryNode->getChildAt(0)->getValue());
if (!(aCountry.isEmpty() || aCountry.getLength() == 2))
incErrorStr( "Error: countryID '%s' not empty or more than 2 characters\n", aCountry);
- of.writeParameter("countryID", aCountry);
- of.writeParameter("countryDefaultName", countryNode->getChildAt(1)->getValue());
+ of.writeOUStringLiteralParameter("countryID", aCountry);
+ of.writeOUStringLiteralParameter("countryDefaultName", countryNode->getChildAt(1)->getValue());
}
else
incError( "No Country node.");
@@ -319,18 +319,18 @@ void LCInfoNode::generateCode (const OFileWriter &of) const
incErrorStr( "Error: invalid Variant '%s'\n", aVariant);
if (!(aVariant.isEmpty() || aLanguage == "qlt"))
incErrorStrStr( "Error: Variant '%s' given but Language '%s' is not 'qlt'\n", aVariant, aLanguage);
- of.writeParameter("Variant", aVariant);
+ of.writeOUStringLiteralParameter("Variant", aVariant);
}
else
- of.writeParameter("Variant", std::u16string_view());
- of.writeAsciiString("\nstatic const sal_Unicode* LCInfoArray[] = {\n");
+ of.writeOUStringLiteralParameter("Variant", std::u16string_view());
+ of.writeAsciiString("\nstatic constexpr rtl::OUStringConstExpr LCInfoArray[] = {\n");
of.writeAsciiString("\tlangID,\n");
of.writeAsciiString("\tlangDefaultName,\n");
of.writeAsciiString("\tcountryID,\n");
of.writeAsciiString("\tcountryDefaultName,\n");
of.writeAsciiString("\tVariant\n");
of.writeAsciiString("};\n\n");
- of.writeFunction("getLCInfo_", "SAL_N_ELEMENTS(LCInfoArray)", "LCInfoArray");
+ of.writeOUStringFunction("getLCInfo_", "SAL_N_ELEMENTS(LCInfoArray)", "LCInfoArray");
}
diff --git a/i18npool/source/localedata/localedata.cxx b/i18npool/source/localedata/localedata.cxx
index 7316b66fce7f..89ee3d5a281d 100644
--- a/i18npool/source/localedata/localedata.cxx
+++ b/i18npool/source/localedata/localedata.cxx
@@ -42,7 +42,6 @@ using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star;
-typedef sal_Unicode** (* MyFunc_Type)( sal_Int16&);
typedef OUString const * (* MyFuncOUString_Type)( sal_Int16&);
typedef sal_Unicode const *** (* MyFunc_Type2)( sal_Int16&, sal_Int16& );
typedef sal_Unicode const **** (* MyFunc_Type3)( sal_Int16&, sal_Int16&, sal_Int16& );
@@ -1123,16 +1122,16 @@ LocaleDataImpl::getTransliterations( const Locale& rLocale )
LanguageCountryInfo SAL_CALL
LocaleDataImpl::getLanguageCountryInfo( const Locale& rLocale )
{
- MyFunc_Type func = reinterpret_cast<MyFunc_Type>(getFunctionSymbol( rLocale, "getLCInfo" ));
+ MyFuncOUString_Type func = reinterpret_cast<MyFuncOUString_Type>(getFunctionSymbol( rLocale, "getLCInfo" ));
if ( func ) {
sal_Int16 LCInfoCount = 0;
- sal_Unicode **LCInfoArray = func(LCInfoCount);
- LanguageCountryInfo info{OUString(LCInfoArray[0]),
- OUString(LCInfoArray[1]),
- OUString(LCInfoArray[2]),
- OUString(LCInfoArray[3]),
- OUString(LCInfoArray[4])};
+ OUString const *LCInfoArray = func(LCInfoCount);
+ LanguageCountryInfo info{LCInfoArray[0],
+ LCInfoArray[1],
+ LCInfoArray[2],
+ LCInfoArray[3],
+ LCInfoArray[4]};
return info;
}
else {