i18npool/inc/localedata.hxx               |   12 
 i18npool/source/localedata/localedata.cxx |  607 +++++++++++++++---------------
 2 files changed, 322 insertions(+), 297 deletions(-)

New commits:
commit 91d67c32f67f1fccf30cbb7980aeab83a9af1008
Author:     Arnaud VERSINI <arnaud.vers...@pm.me>
AuthorDate: Sun Apr 14 14:21:19 2024 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sun Apr 21 17:42:11 2024 +0200

    i18npool : limit string comparison using an enum class
    
    Change-Id: Iec5327b6f0125b22a2a4ee8ccb789b5403a7fdb4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166070
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/i18npool/inc/localedata.hxx b/i18npool/inc/localedata.hxx
index f4cd15a30254..06cf68fa7fdf 100644
--- a/i18npool/inc/localedata.hxx
+++ b/i18npool/inc/localedata.hxx
@@ -48,14 +48,22 @@ struct LocaleDataLookupTableItem;
 
 namespace i18npool {
 
+enum class DataLocaleLibrary {
+    EN,
+    ES,
+    EURO,
+    OTHERS
+};
+
+
 struct LocaleDataLookupTableItem
 {
-    const char* dllName;
+    DataLocaleLibrary dllName;
     osl::Module *module;
     const char* localeName;
     css::lang::Locale aLocale;
 
-    LocaleDataLookupTableItem(const char *name, osl::Module* m, const char* 
lname) : dllName(name), module(m), localeName(lname)
+    LocaleDataLookupTableItem(DataLocaleLibrary name, osl::Module* m, const 
char* lname) : dllName(std::move(name)), module(m), localeName(lname)
     {
     }
     bool equals(const css::lang::Locale& rLocale) const
diff --git a/i18npool/source/localedata/localedata.cxx 
b/i18npool/source/localedata/localedata.cxx
index 64350b9532d3..7f59dabda5fb 100644
--- a/i18npool/source/localedata/localedata.cxx
+++ b/i18npool/source/localedata/localedata.cxx
@@ -41,6 +41,7 @@ using namespace com::sun::star::i18n;
 using namespace com::sun::star::uno;
 using namespace com::sun::star::lang;
 using namespace com::sun::star;
+using i18npool::DataLocaleLibrary;
 
 typedef OUString const * (* MyFuncOUString_Type)( sal_Int16&);
 typedef OUString const ** (* MyFunc_Type2)( sal_Int16&, sal_Int16& );
@@ -49,296 +50,319 @@ typedef OUString const * (* MyFunc_FormatCode)( 
sal_Int16&, sal_Unicode const *&
 
 #ifndef DISABLE_DYNLOADING
 
-static const char *lcl_DATA_EN = "localedata_en";
-static const char *lcl_DATA_ES = "localedata_es";
-static const char *lcl_DATA_EURO = "localedata_euro";
-static const char *lcl_DATA_OTHERS = "localedata_others";
+#ifdef SAL_DLLPREFIX
+// mostly "lib*.so"
+constexpr const char* lcl_DATA_EN = SAL_DLLPREFIX "localedata_en" 
SAL_DLLEXTENSION;
+constexpr const char* lcl_DATA_ES = SAL_DLLPREFIX "localedata_es" 
SAL_DLLEXTENSION;
+constexpr const char* lcl_DATA_EURO = SAL_DLLPREFIX "localedata_euro" 
SAL_DLLEXTENSION;
+constexpr const char* lcl_DATA_OTHERS = SAL_DLLPREFIX "localedata_others" 
SAL_DLLEXTENSION;
+#else
+// mostly "*.dll"
+constexpr const char* lcl_DATA_EN = "localedata_en" SAL_DLLEXTENSION;
+constexpr const char* lcl_DATA_ES = "localedata_es" SAL_DLLEXTENSION;
+constexpr const char* lcl_DATA_EURO = "localedata_euro" SAL_DLLEXTENSION;
+constexpr const char* lcl_DATA_OTHERS = "localedata_others" SAL_DLLEXTENSION;
+#endif
+
+static const char* getLibraryName(DataLocaleLibrary aLib) {
+    switch(aLib) {
+        case DataLocaleLibrary::EN:
+            return lcl_DATA_EN;
+        case DataLocaleLibrary::ES:
+            return lcl_DATA_ES;
+        case DataLocaleLibrary::EURO:
+            return lcl_DATA_EURO;
+        case DataLocaleLibrary::OTHERS:
+            return lcl_DATA_OTHERS;
+    }
+    return nullptr;
+}
 
-const struct {
+constexpr struct {
     const char* pLocale;
-    const char* pLib;
+    i18npool::DataLocaleLibrary pLib;
 } aLibTable[] = {
-    { "en_US",  lcl_DATA_EN },
-    { "en_AU",  lcl_DATA_EN },
-    { "en_BZ",  lcl_DATA_EN },
-    { "en_CA",  lcl_DATA_EN },
-    { "en_GB",  lcl_DATA_EN },
-    { "en_IE",  lcl_DATA_EN },
-    { "en_JM",  lcl_DATA_EN },
-    { "en_NZ",  lcl_DATA_EN },
-    { "en_PH",  lcl_DATA_EN },
-    { "en_TT",  lcl_DATA_EN },
-    { "en_ZA",  lcl_DATA_EN },
-    { "en_ZW",  lcl_DATA_EN },
-    { "en_NA",  lcl_DATA_EN },
-    { "en_GH",  lcl_DATA_EN },
-    { "en_MW",  lcl_DATA_EN },
-    { "en_GM",  lcl_DATA_EN },
-    { "en_BW",  lcl_DATA_EN },
-    { "en_ZM",  lcl_DATA_EN },
-    { "en_LK",  lcl_DATA_EN },
-    { "en_NG",  lcl_DATA_EN },
-    { "en_KE",  lcl_DATA_EN },
-    { "en_DK",  lcl_DATA_EN },
-    { "en_MU",  lcl_DATA_EN },
-
-    { "es_ES",  lcl_DATA_ES },
-    { "es_AR",  lcl_DATA_ES },
-    { "es_BO",  lcl_DATA_ES },
-    { "es_CL",  lcl_DATA_ES },
-    { "es_CO",  lcl_DATA_ES },
-    { "es_CR",  lcl_DATA_ES },
-    { "es_DO",  lcl_DATA_ES },
-    { "es_EC",  lcl_DATA_ES },
-    { "es_GT",  lcl_DATA_ES },
-    { "es_HN",  lcl_DATA_ES },
-    { "es_MX",  lcl_DATA_ES },
-    { "es_NI",  lcl_DATA_ES },
-    { "es_PA",  lcl_DATA_ES },
-    { "es_PE",  lcl_DATA_ES },
-    { "es_PR",  lcl_DATA_ES },
-    { "es_PY",  lcl_DATA_ES },
-    { "es_SV",  lcl_DATA_ES },
-    { "es_UY",  lcl_DATA_ES },
-    { "es_VE",  lcl_DATA_ES },
-    { "gl_ES",  lcl_DATA_ES },
-    { "oc_ES_aranes",  lcl_DATA_ES },
-
-    { "de_DE",  lcl_DATA_EURO },
-    { "de_AT",  lcl_DATA_EURO },
-    { "de_CH",  lcl_DATA_EURO },
-    { "de_LI",  lcl_DATA_EURO },
-    { "de_LU",  lcl_DATA_EURO },
-    { "fr_FR",  lcl_DATA_EURO },
-    { "fr_BE",  lcl_DATA_EURO },
-    { "fr_CA",  lcl_DATA_EURO },
-    { "fr_CH",  lcl_DATA_EURO },
-    { "fr_LU",  lcl_DATA_EURO },
-    { "fr_MC",  lcl_DATA_EURO },
-    { "fr_BF",  lcl_DATA_EURO },
-    { "fr_CI",  lcl_DATA_EURO },
-    { "fr_ML",  lcl_DATA_EURO },
-    { "fr_SN",  lcl_DATA_EURO },
-    { "fr_BJ",  lcl_DATA_EURO },
-    { "fr_NE",  lcl_DATA_EURO },
-    { "fr_TG",  lcl_DATA_EURO },
-    { "it_IT",  lcl_DATA_EURO },
-    { "it_CH",  lcl_DATA_EURO },
-    { "sl_SI",  lcl_DATA_EURO },
-    { "sv_SE",  lcl_DATA_EURO },
-    { "sv_FI",  lcl_DATA_EURO },
-    { "ca_ES",  lcl_DATA_EURO },
-    { "ca_ES_valencia",  lcl_DATA_EURO },
-    { "cs_CZ",  lcl_DATA_EURO },
-    { "sk_SK",  lcl_DATA_EURO },
-    { "da_DK",  lcl_DATA_EURO },
-    { "el_GR",  lcl_DATA_EURO },
-    { "fi_FI",  lcl_DATA_EURO },
-    { "is_IS",  lcl_DATA_EURO },
-    { "nl_BE",  lcl_DATA_EURO },
-    { "nl_NL",  lcl_DATA_EURO },
-    { "no_NO",  lcl_DATA_EURO },
-    { "nn_NO",  lcl_DATA_EURO },
-    { "nb_NO",  lcl_DATA_EURO },
-    { "nds_DE", lcl_DATA_EURO },
-    { "pl_PL",  lcl_DATA_EURO },
-    { "pt_PT",  lcl_DATA_EURO },
-    { "pt_BR",  lcl_DATA_EURO },  // needs to be in EURO because inherits from 
pt_PT
-    { "pt_MZ",  lcl_DATA_EURO },  // needs to be in EURO because inherits from 
pt_PT
-    { "ru_RU",  lcl_DATA_EURO },
-    { "tr_TR",  lcl_DATA_EURO },
-    { "tt_RU",  lcl_DATA_EURO },
-    { "et_EE",  lcl_DATA_EURO },
-    { "vro_EE", lcl_DATA_EURO },
-    { "lb_LU",  lcl_DATA_EURO },
-    { "lt_LT",  lcl_DATA_EURO },
-    { "lv_LV",  lcl_DATA_EURO },
-    { "uk_UA",  lcl_DATA_EURO },
-    { "ro_RO",  lcl_DATA_EURO },
-    { "cy_GB",  lcl_DATA_EURO },
-    { "bg_BG",  lcl_DATA_EURO },
-    { "sr_Latn_ME",  lcl_DATA_EURO },
-    { "sr_Latn_RS",  lcl_DATA_EURO },
-    { "sr_Latn_CS",  lcl_DATA_EURO },
-    { "sr_ME",  lcl_DATA_EURO },
-    { "sr_RS",  lcl_DATA_EURO },
-    { "sr_CS",  lcl_DATA_EURO },
-    { "hr_HR",  lcl_DATA_EURO },
-    { "bs_BA",  lcl_DATA_EURO },
-    { "eu_ES",  lcl_DATA_EURO },
-    { "fo_FO",  lcl_DATA_EURO },
-    { "ga_IE",  lcl_DATA_EURO },
-    { "gd_GB",  lcl_DATA_EURO },
-    { "ka_GE",  lcl_DATA_EURO },
-    { "be_BY",  lcl_DATA_EURO },
-    { "kl_GL",  lcl_DATA_EURO },
-    { "mk_MK",  lcl_DATA_EURO },
-    { "br_FR",  lcl_DATA_EURO },
-    { "la_VA",  lcl_DATA_EURO },
-    { "cv_RU",  lcl_DATA_EURO },
-    { "wa_BE",  lcl_DATA_EURO },
-    { "fur_IT", lcl_DATA_EURO },
-    { "gsc_FR", lcl_DATA_EURO },
-    { "fy_NL",  lcl_DATA_EURO },
-    { "oc_FR_lengadoc",  lcl_DATA_EURO },
-    { "mt_MT",  lcl_DATA_EURO },
-    { "sc_IT",  lcl_DATA_EURO },
-    { "ast_ES", lcl_DATA_EURO },
-    { "ltg_LV", lcl_DATA_EURO },
-    { "hsb_DE", lcl_DATA_EURO },
-    { "dsb_DE", lcl_DATA_EURO },
-    { "rue_SK", lcl_DATA_EURO },
-    { "an_ES",  lcl_DATA_EURO },
-    { "myv_RU", lcl_DATA_EURO },
-    { "lld_IT", lcl_DATA_EURO },
-    { "cu_RU",  lcl_DATA_EURO },
-    { "vec_IT", lcl_DATA_EURO },
-    { "szl_PL", lcl_DATA_EURO },
-    { "lij_IT", lcl_DATA_EURO },
-
-    { "ja_JP",  lcl_DATA_OTHERS },
-    { "ko_KR",  lcl_DATA_OTHERS },
-    { "zh_CN",  lcl_DATA_OTHERS },
-    { "zh_HK",  lcl_DATA_OTHERS },
-    { "zh_SG",  lcl_DATA_OTHERS },
-    { "zh_TW",  lcl_DATA_OTHERS },
-    { "zh_MO",  lcl_DATA_OTHERS },
-    { "en_HK",  lcl_DATA_OTHERS },  // needs to be in OTHERS instead of EN 
because currency inherited from zh_HK
-
-    { "ar_EG",  lcl_DATA_OTHERS },
-    { "ar_DZ",  lcl_DATA_OTHERS },
-    { "ar_LB",  lcl_DATA_OTHERS },
-    { "ar_SA",  lcl_DATA_OTHERS },
-    { "ar_TN",  lcl_DATA_OTHERS },
-    { "he_IL",  lcl_DATA_OTHERS },
-    { "hi_IN",  lcl_DATA_OTHERS },
-    { "kn_IN",  lcl_DATA_OTHERS },
-    { "ta_IN",  lcl_DATA_OTHERS },
-    { "te_IN",  lcl_DATA_OTHERS },
-    { "gu_IN",  lcl_DATA_OTHERS },
-    { "mr_IN",  lcl_DATA_OTHERS },
-    { "pa_IN",  lcl_DATA_OTHERS },
-    { "bn_IN",  lcl_DATA_OTHERS },
-    { "or_IN",  lcl_DATA_OTHERS },
-    { "en_IN",  lcl_DATA_OTHERS },  // keep in OTHERS for IN
-    { "ml_IN",  lcl_DATA_OTHERS },
-    { "bn_BD",  lcl_DATA_OTHERS },
-    { "th_TH",  lcl_DATA_OTHERS },
-
-    { "af_ZA",  lcl_DATA_OTHERS },
-    { "hu_HU",  lcl_DATA_OTHERS },
-    { "id_ID",  lcl_DATA_OTHERS },
-    { "ms_MY",  lcl_DATA_OTHERS },
-    { "en_MY",  lcl_DATA_OTHERS },  // needs to be in OTHERS instead of EN 
because currency inherited from ms_MY
-    { "ia",     lcl_DATA_OTHERS },
-    { "mn_Cyrl_MN",  lcl_DATA_OTHERS },
-    { "az_AZ",  lcl_DATA_OTHERS },
-    { "sw_TZ",  lcl_DATA_OTHERS },
-    { "km_KH",  lcl_DATA_OTHERS },
-    { "lo_LA",  lcl_DATA_OTHERS },
-    { "rw_RW",  lcl_DATA_OTHERS },
-    { "eo",     lcl_DATA_OTHERS },
-    { "dz_BT",  lcl_DATA_OTHERS },
-    { "ne_NP",  lcl_DATA_OTHERS },
-    { "zu_ZA",  lcl_DATA_OTHERS },
-    { "nso_ZA", lcl_DATA_OTHERS },
-    { "vi_VN",  lcl_DATA_OTHERS },
-    { "tn_ZA",  lcl_DATA_OTHERS },
-    { "xh_ZA",  lcl_DATA_OTHERS },
-    { "st_ZA",  lcl_DATA_OTHERS },
-    { "ss_ZA",  lcl_DATA_OTHERS },
-    { "ve_ZA",  lcl_DATA_OTHERS },
-    { "nr_ZA",  lcl_DATA_OTHERS },
-    { "ts_ZA",  lcl_DATA_OTHERS },
-    { "kmr_Latn_TR",  lcl_DATA_OTHERS },
-    { "ak_GH",  lcl_DATA_OTHERS },
-    { "af_NA",  lcl_DATA_OTHERS },
-    { "am_ET",  lcl_DATA_OTHERS },
-    { "ti_ER",  lcl_DATA_OTHERS },
-    { "tg_TJ",  lcl_DATA_OTHERS },
-    { "ky_KG",  lcl_DATA_OTHERS },
-    { "kk_KZ",  lcl_DATA_OTHERS },
-    { "fa_IR",  lcl_DATA_OTHERS },
-    { "ha_Latn_GH",  lcl_DATA_OTHERS },
-    { "ee_GH",  lcl_DATA_OTHERS },
-    { "sg_CF",  lcl_DATA_OTHERS },
-    { "lg_UG",  lcl_DATA_OTHERS },
-    { "uz_UZ",  lcl_DATA_OTHERS },
-    { "ln_CD",  lcl_DATA_OTHERS },
-    { "hy_AM",  lcl_DATA_OTHERS },
-    { "hil_PH", lcl_DATA_OTHERS },
-    { "so_SO",  lcl_DATA_OTHERS },
-    { "gug_PY", lcl_DATA_OTHERS },
-    { "tk_TM",  lcl_DATA_OTHERS },
-    { "my_MM",  lcl_DATA_OTHERS },
-    { "shs_CA", lcl_DATA_OTHERS },
-    { "tpi_PG", lcl_DATA_OTHERS },
-    { "ar_OM",  lcl_DATA_OTHERS },
-    { "ug_CN",  lcl_DATA_OTHERS },
-    { "om_ET",  lcl_DATA_OTHERS },
-    { "plt_MG", lcl_DATA_OTHERS },
-    { "mai_IN", lcl_DATA_OTHERS },
-    { "yi_US",  lcl_DATA_OTHERS },
-    { "haw_US", lcl_DATA_OTHERS },
-    { "lif_NP", lcl_DATA_OTHERS },
-    { "ur_PK",  lcl_DATA_OTHERS },
-    { "ht_HT",  lcl_DATA_OTHERS },
-    { "jbo",    lcl_DATA_OTHERS },
-    { "kab_DZ", lcl_DATA_OTHERS },
-    { "pt_AO",  lcl_DATA_OTHERS },
-    { "pjt_AU", lcl_DATA_OTHERS },
-    { "pap_BQ", lcl_DATA_OTHERS },
-    { "pap_CW", lcl_DATA_OTHERS },
-    { "ebo_CG", lcl_DATA_OTHERS },
-    { "tyx_CG", lcl_DATA_OTHERS },
-    { "axk_CG", lcl_DATA_OTHERS },
-    { "beq_CG", lcl_DATA_OTHERS },
-    { "bkw_CG", lcl_DATA_OTHERS },
-    { "bvx_CG", lcl_DATA_OTHERS },
-    { "dde_CG", lcl_DATA_OTHERS },
-    { "iyx_CG", lcl_DATA_OTHERS },
-    { "kkw_CG", lcl_DATA_OTHERS },
-    { "kng_CG", lcl_DATA_OTHERS },
-    { "ldi_CG", lcl_DATA_OTHERS },
-    { "mdw_CG", lcl_DATA_OTHERS },
-    { "mkw_CG", lcl_DATA_OTHERS },
-    { "njx_CG", lcl_DATA_OTHERS },
-    { "ngz_CG", lcl_DATA_OTHERS },
-    { "njy_CG", lcl_DATA_OTHERS },
-    { "puu_CG", lcl_DATA_OTHERS },
-    { "sdj_CG", lcl_DATA_OTHERS },
-    { "tek_CG", lcl_DATA_OTHERS },
-    { "tsa_CG", lcl_DATA_OTHERS },
-    { "vif_CG", lcl_DATA_OTHERS },
-    { "xku_CG", lcl_DATA_OTHERS },
-    { "yom_CG", lcl_DATA_OTHERS },
-    { "sid_ET", lcl_DATA_OTHERS },
-    { "bo_CN",  lcl_DATA_OTHERS },
-    { "bo_IN",  lcl_DATA_OTHERS },
-    { "ar_AE",  lcl_DATA_OTHERS },
-    { "ar_KW",  lcl_DATA_OTHERS },
-    { "bm_ML",  lcl_DATA_OTHERS },
-    { "pui_CO", lcl_DATA_OTHERS },
-    { "lgr_SB", lcl_DATA_OTHERS },
-    { "mos_BF", lcl_DATA_OTHERS },
-    { "ny_MW",  lcl_DATA_OTHERS },
-    { "ar_BH",  lcl_DATA_OTHERS },
-    { "ar_IQ",  lcl_DATA_OTHERS },
-    { "ar_JO",  lcl_DATA_OTHERS },
-    { "ar_LY",  lcl_DATA_OTHERS },
-    { "ar_MA",  lcl_DATA_OTHERS },
-    { "ar_QA",  lcl_DATA_OTHERS },
-    { "ar_SY",  lcl_DATA_OTHERS },
-    { "ar_YE",  lcl_DATA_OTHERS },
-    { "ilo_PH", lcl_DATA_OTHERS },
-    { "ha_Latn_NG",  lcl_DATA_OTHERS },
-    { "min_ID", lcl_DATA_OTHERS },
-    { "sun_ID", lcl_DATA_OTHERS },
-    { "en_IL",  lcl_DATA_OTHERS },  // needs to be in OTHERS instead of EN 
because inherits from he_IL
-    { "pdc_US", lcl_DATA_OTHERS },
-    { "dv_MV",  lcl_DATA_OTHERS },
-    { "mfe_MU", lcl_DATA_OTHERS },
-    { "sat_IN", lcl_DATA_OTHERS }
+    { "en_US",  DataLocaleLibrary::EN },
+    { "en_AU",  DataLocaleLibrary::EN },
+    { "en_BZ",  DataLocaleLibrary::EN },
+    { "en_CA",  DataLocaleLibrary::EN },
+    { "en_GB",  DataLocaleLibrary::EN },
+    { "en_IE",  DataLocaleLibrary::EN },
+    { "en_JM",  DataLocaleLibrary::EN },
+    { "en_NZ",  DataLocaleLibrary::EN },
+    { "en_PH",  DataLocaleLibrary::EN },
+    { "en_TT",  DataLocaleLibrary::EN },
+    { "en_ZA",  DataLocaleLibrary::EN },
+    { "en_ZW",  DataLocaleLibrary::EN },
+    { "en_NA",  DataLocaleLibrary::EN },
+    { "en_GH",  DataLocaleLibrary::EN },
+    { "en_MW",  DataLocaleLibrary::EN },
+    { "en_GM",  DataLocaleLibrary::EN },
+    { "en_BW",  DataLocaleLibrary::EN },
+    { "en_ZM",  DataLocaleLibrary::EN },
+    { "en_LK",  DataLocaleLibrary::EN },
+    { "en_NG",  DataLocaleLibrary::EN },
+    { "en_KE",  DataLocaleLibrary::EN },
+    { "en_DK",  DataLocaleLibrary::EN },
+    { "en_MU",  DataLocaleLibrary::EN },
+
+    { "es_ES",  DataLocaleLibrary::ES },
+    { "es_AR",  DataLocaleLibrary::ES },
+    { "es_BO",  DataLocaleLibrary::ES },
+    { "es_CL",  DataLocaleLibrary::ES },
+    { "es_CO",  DataLocaleLibrary::ES },
+    { "es_CR",  DataLocaleLibrary::ES },
+    { "es_DO",  DataLocaleLibrary::ES },
+    { "es_EC",  DataLocaleLibrary::ES },
+    { "es_GT",  DataLocaleLibrary::ES },
+    { "es_HN",  DataLocaleLibrary::ES },
+    { "es_MX",  DataLocaleLibrary::ES },
+    { "es_NI",  DataLocaleLibrary::ES },
+    { "es_PA",  DataLocaleLibrary::ES },
+    { "es_PE",  DataLocaleLibrary::ES },
+    { "es_PR",  DataLocaleLibrary::ES },
+    { "es_PY",  DataLocaleLibrary::ES },
+    { "es_SV",  DataLocaleLibrary::ES },
+    { "es_UY",  DataLocaleLibrary::ES },
+    { "es_VE",  DataLocaleLibrary::ES },
+    { "gl_ES",  DataLocaleLibrary::ES },
+    { "oc_ES_aranes",  DataLocaleLibrary::ES },
+
+    { "de_DE",  DataLocaleLibrary::EURO },
+    { "de_AT",  DataLocaleLibrary::EURO },
+    { "de_CH",  DataLocaleLibrary::EURO },
+    { "de_LI",  DataLocaleLibrary::EURO },
+    { "de_LU",  DataLocaleLibrary::EURO },
+    { "fr_FR",  DataLocaleLibrary::EURO },
+    { "fr_BE",  DataLocaleLibrary::EURO },
+    { "fr_CA",  DataLocaleLibrary::EURO },
+    { "fr_CH",  DataLocaleLibrary::EURO },
+    { "fr_LU",  DataLocaleLibrary::EURO },
+    { "fr_MC",  DataLocaleLibrary::EURO },
+    { "fr_BF",  DataLocaleLibrary::EURO },
+    { "fr_CI",  DataLocaleLibrary::EURO },
+    { "fr_ML",  DataLocaleLibrary::EURO },
+    { "fr_SN",  DataLocaleLibrary::EURO },
+    { "fr_BJ",  DataLocaleLibrary::EURO },
+    { "fr_NE",  DataLocaleLibrary::EURO },
+    { "fr_TG",  DataLocaleLibrary::EURO },
+    { "it_IT",  DataLocaleLibrary::EURO },
+    { "it_CH",  DataLocaleLibrary::EURO },
+    { "sl_SI",  DataLocaleLibrary::EURO },
+    { "sv_SE",  DataLocaleLibrary::EURO },
+    { "sv_FI",  DataLocaleLibrary::EURO },
+    { "ca_ES",  DataLocaleLibrary::EURO },
+    { "ca_ES_valencia",  DataLocaleLibrary::EURO },
+    { "cs_CZ",  DataLocaleLibrary::EURO },
+    { "sk_SK",  DataLocaleLibrary::EURO },
+    { "da_DK",  DataLocaleLibrary::EURO },
+    { "el_GR",  DataLocaleLibrary::EURO },
+    { "fi_FI",  DataLocaleLibrary::EURO },
+    { "is_IS",  DataLocaleLibrary::EURO },
+    { "nl_BE",  DataLocaleLibrary::EURO },
+    { "nl_NL",  DataLocaleLibrary::EURO },
+    { "no_NO",  DataLocaleLibrary::EURO },
+    { "nn_NO",  DataLocaleLibrary::EURO },
+    { "nb_NO",  DataLocaleLibrary::EURO },
+    { "nds_DE", DataLocaleLibrary::EURO },
+    { "pl_PL",  DataLocaleLibrary::EURO },
+    { "pt_PT",  DataLocaleLibrary::EURO },
+    { "pt_BR",  DataLocaleLibrary::EURO },  // needs to be in EURO because 
inherits from pt_PT
+    { "pt_MZ",  DataLocaleLibrary::EURO },  // needs to be in EURO because 
inherits from pt_PT
+    { "ru_RU",  DataLocaleLibrary::EURO },
+    { "tr_TR",  DataLocaleLibrary::EURO },
+    { "tt_RU",  DataLocaleLibrary::EURO },
+    { "et_EE",  DataLocaleLibrary::EURO },
+    { "vro_EE", DataLocaleLibrary::EURO },
+    { "lb_LU",  DataLocaleLibrary::EURO },
+    { "lt_LT",  DataLocaleLibrary::EURO },
+    { "lv_LV",  DataLocaleLibrary::EURO },
+    { "uk_UA",  DataLocaleLibrary::EURO },
+    { "ro_RO",  DataLocaleLibrary::EURO },
+    { "cy_GB",  DataLocaleLibrary::EURO },
+    { "bg_BG",  DataLocaleLibrary::EURO },
+    { "sr_Latn_ME",  DataLocaleLibrary::EURO },
+    { "sr_Latn_RS",  DataLocaleLibrary::EURO },
+    { "sr_Latn_CS",  DataLocaleLibrary::EURO },
+    { "sr_ME",  DataLocaleLibrary::EURO },
+    { "sr_RS",  DataLocaleLibrary::EURO },
+    { "sr_CS",  DataLocaleLibrary::EURO },
+    { "hr_HR",  DataLocaleLibrary::EURO },
+    { "bs_BA",  DataLocaleLibrary::EURO },
+    { "eu_ES",  DataLocaleLibrary::EURO },
+    { "fo_FO",  DataLocaleLibrary::EURO },
+    { "ga_IE",  DataLocaleLibrary::EURO },
+    { "gd_GB",  DataLocaleLibrary::EURO },
+    { "ka_GE",  DataLocaleLibrary::EURO },
+    { "be_BY",  DataLocaleLibrary::EURO },
+    { "kl_GL",  DataLocaleLibrary::EURO },
+    { "mk_MK",  DataLocaleLibrary::EURO },
+    { "br_FR",  DataLocaleLibrary::EURO },
+    { "la_VA",  DataLocaleLibrary::EURO },
+    { "cv_RU",  DataLocaleLibrary::EURO },
+    { "wa_BE",  DataLocaleLibrary::EURO },
+    { "fur_IT", DataLocaleLibrary::EURO },
+    { "gsc_FR", DataLocaleLibrary::EURO },
+    { "fy_NL",  DataLocaleLibrary::EURO },
+    { "oc_FR_lengadoc",  DataLocaleLibrary::EURO },
+    { "mt_MT",  DataLocaleLibrary::EURO },
+    { "sc_IT",  DataLocaleLibrary::EURO },
+    { "ast_ES", DataLocaleLibrary::EURO },
+    { "ltg_LV", DataLocaleLibrary::EURO },
+    { "hsb_DE", DataLocaleLibrary::EURO },
+    { "dsb_DE", DataLocaleLibrary::EURO },
+    { "rue_SK", DataLocaleLibrary::EURO },
+    { "an_ES",  DataLocaleLibrary::EURO },
+    { "myv_RU", DataLocaleLibrary::EURO },
+    { "lld_IT", DataLocaleLibrary::EURO },
+    { "cu_RU",  DataLocaleLibrary::EURO },
+    { "vec_IT", DataLocaleLibrary::EURO },
+    { "szl_PL", DataLocaleLibrary::EURO },
+    { "lij_IT", DataLocaleLibrary::EURO },
+
+    { "ja_JP",  DataLocaleLibrary::OTHERS },
+    { "ko_KR",  DataLocaleLibrary::OTHERS },
+    { "zh_CN",  DataLocaleLibrary::OTHERS },
+    { "zh_HK",  DataLocaleLibrary::OTHERS },
+    { "zh_SG",  DataLocaleLibrary::OTHERS },
+    { "zh_TW",  DataLocaleLibrary::OTHERS },
+    { "zh_MO",  DataLocaleLibrary::OTHERS },
+    { "en_HK",  DataLocaleLibrary::OTHERS },  // needs to be in OTHERS instead 
of EN because currency inherited from zh_HK
+
+    { "ar_EG",  DataLocaleLibrary::OTHERS },
+    { "ar_DZ",  DataLocaleLibrary::OTHERS },
+    { "ar_LB",  DataLocaleLibrary::OTHERS },
+    { "ar_SA",  DataLocaleLibrary::OTHERS },
+    { "ar_TN",  DataLocaleLibrary::OTHERS },
+    { "he_IL",  DataLocaleLibrary::OTHERS },
+    { "hi_IN",  DataLocaleLibrary::OTHERS },
+    { "kn_IN",  DataLocaleLibrary::OTHERS },
+    { "ta_IN",  DataLocaleLibrary::OTHERS },
+    { "te_IN",  DataLocaleLibrary::OTHERS },
+    { "gu_IN",  DataLocaleLibrary::OTHERS },
+    { "mr_IN",  DataLocaleLibrary::OTHERS },
+    { "pa_IN",  DataLocaleLibrary::OTHERS },
+    { "bn_IN",  DataLocaleLibrary::OTHERS },
+    { "or_IN",  DataLocaleLibrary::OTHERS },
+    { "en_IN",  DataLocaleLibrary::OTHERS },  // keep in OTHERS for IN
+    { "ml_IN",  DataLocaleLibrary::OTHERS },
+    { "bn_BD",  DataLocaleLibrary::OTHERS },
+    { "th_TH",  DataLocaleLibrary::OTHERS },
+
+    { "af_ZA",  DataLocaleLibrary::OTHERS },
+    { "hu_HU",  DataLocaleLibrary::OTHERS },
+    { "id_ID",  DataLocaleLibrary::OTHERS },
+    { "ms_MY",  DataLocaleLibrary::OTHERS },
+    { "en_MY",  DataLocaleLibrary::OTHERS },  // needs to be in OTHERS instead 
of EN because currency inherited from ms_MY
+    { "ia",     DataLocaleLibrary::OTHERS },
+    { "mn_Cyrl_MN",  DataLocaleLibrary::OTHERS },
+    { "az_AZ",  DataLocaleLibrary::OTHERS },
+    { "sw_TZ",  DataLocaleLibrary::OTHERS },
+    { "km_KH",  DataLocaleLibrary::OTHERS },
+    { "lo_LA",  DataLocaleLibrary::OTHERS },
+    { "rw_RW",  DataLocaleLibrary::OTHERS },
+    { "eo",     DataLocaleLibrary::OTHERS },
+    { "dz_BT",  DataLocaleLibrary::OTHERS },
+    { "ne_NP",  DataLocaleLibrary::OTHERS },
+    { "zu_ZA",  DataLocaleLibrary::OTHERS },
+    { "nso_ZA", DataLocaleLibrary::OTHERS },
+    { "vi_VN",  DataLocaleLibrary::OTHERS },
+    { "tn_ZA",  DataLocaleLibrary::OTHERS },
+    { "xh_ZA",  DataLocaleLibrary::OTHERS },
+    { "st_ZA",  DataLocaleLibrary::OTHERS },
+    { "ss_ZA",  DataLocaleLibrary::OTHERS },
+    { "ve_ZA",  DataLocaleLibrary::OTHERS },
+    { "nr_ZA",  DataLocaleLibrary::OTHERS },
+    { "ts_ZA",  DataLocaleLibrary::OTHERS },
+    { "kmr_Latn_TR",  DataLocaleLibrary::OTHERS },
+    { "ak_GH",  DataLocaleLibrary::OTHERS },
+    { "af_NA",  DataLocaleLibrary::OTHERS },
+    { "am_ET",  DataLocaleLibrary::OTHERS },
+    { "ti_ER",  DataLocaleLibrary::OTHERS },
+    { "tg_TJ",  DataLocaleLibrary::OTHERS },
+    { "ky_KG",  DataLocaleLibrary::OTHERS },
+    { "kk_KZ",  DataLocaleLibrary::OTHERS },
+    { "fa_IR",  DataLocaleLibrary::OTHERS },
+    { "ha_Latn_GH",  DataLocaleLibrary::OTHERS },
+    { "ee_GH",  DataLocaleLibrary::OTHERS },
+    { "sg_CF",  DataLocaleLibrary::OTHERS },
+    { "lg_UG",  DataLocaleLibrary::OTHERS },
+    { "uz_UZ",  DataLocaleLibrary::OTHERS },
+    { "ln_CD",  DataLocaleLibrary::OTHERS },
+    { "hy_AM",  DataLocaleLibrary::OTHERS },
+    { "hil_PH", DataLocaleLibrary::OTHERS },
+    { "so_SO",  DataLocaleLibrary::OTHERS },
+    { "gug_PY", DataLocaleLibrary::OTHERS },
+    { "tk_TM",  DataLocaleLibrary::OTHERS },
+    { "my_MM",  DataLocaleLibrary::OTHERS },
+    { "shs_CA", DataLocaleLibrary::OTHERS },
+    { "tpi_PG", DataLocaleLibrary::OTHERS },
+    { "ar_OM",  DataLocaleLibrary::OTHERS },
+    { "ug_CN",  DataLocaleLibrary::OTHERS },
+    { "om_ET",  DataLocaleLibrary::OTHERS },
+    { "plt_MG", DataLocaleLibrary::OTHERS },
+    { "mai_IN", DataLocaleLibrary::OTHERS },
+    { "yi_US",  DataLocaleLibrary::OTHERS },
+    { "haw_US", DataLocaleLibrary::OTHERS },
+    { "lif_NP", DataLocaleLibrary::OTHERS },
+    { "ur_PK",  DataLocaleLibrary::OTHERS },
+    { "ht_HT",  DataLocaleLibrary::OTHERS },
+    { "jbo",    DataLocaleLibrary::OTHERS },
+    { "kab_DZ", DataLocaleLibrary::OTHERS },
+    { "pt_AO",  DataLocaleLibrary::OTHERS },
+    { "pjt_AU", DataLocaleLibrary::OTHERS },
+    { "pap_BQ", DataLocaleLibrary::OTHERS },
+    { "pap_CW", DataLocaleLibrary::OTHERS },
+    { "ebo_CG", DataLocaleLibrary::OTHERS },
+    { "tyx_CG", DataLocaleLibrary::OTHERS },
+    { "axk_CG", DataLocaleLibrary::OTHERS },
+    { "beq_CG", DataLocaleLibrary::OTHERS },
+    { "bkw_CG", DataLocaleLibrary::OTHERS },
+    { "bvx_CG", DataLocaleLibrary::OTHERS },
+    { "dde_CG", DataLocaleLibrary::OTHERS },
+    { "iyx_CG", DataLocaleLibrary::OTHERS },
+    { "kkw_CG", DataLocaleLibrary::OTHERS },
+    { "kng_CG", DataLocaleLibrary::OTHERS },
+    { "ldi_CG", DataLocaleLibrary::OTHERS },
+    { "mdw_CG", DataLocaleLibrary::OTHERS },
+    { "mkw_CG", DataLocaleLibrary::OTHERS },
+    { "njx_CG", DataLocaleLibrary::OTHERS },
+    { "ngz_CG", DataLocaleLibrary::OTHERS },
+    { "njy_CG", DataLocaleLibrary::OTHERS },
+    { "puu_CG", DataLocaleLibrary::OTHERS },
+    { "sdj_CG", DataLocaleLibrary::OTHERS },
+    { "tek_CG", DataLocaleLibrary::OTHERS },
+    { "tsa_CG", DataLocaleLibrary::OTHERS },
+    { "vif_CG", DataLocaleLibrary::OTHERS },
+    { "xku_CG", DataLocaleLibrary::OTHERS },
+    { "yom_CG", DataLocaleLibrary::OTHERS },
+    { "sid_ET", DataLocaleLibrary::OTHERS },
+    { "bo_CN",  DataLocaleLibrary::OTHERS },
+    { "bo_IN",  DataLocaleLibrary::OTHERS },
+    { "ar_AE",  DataLocaleLibrary::OTHERS },
+    { "ar_KW",  DataLocaleLibrary::OTHERS },
+    { "bm_ML",  DataLocaleLibrary::OTHERS },
+    { "pui_CO", DataLocaleLibrary::OTHERS },
+    { "lgr_SB", DataLocaleLibrary::OTHERS },
+    { "mos_BF", DataLocaleLibrary::OTHERS },
+    { "ny_MW",  DataLocaleLibrary::OTHERS },
+    { "ar_BH",  DataLocaleLibrary::OTHERS },
+    { "ar_IQ",  DataLocaleLibrary::OTHERS },
+    { "ar_JO",  DataLocaleLibrary::OTHERS },
+    { "ar_LY",  DataLocaleLibrary::OTHERS },
+    { "ar_MA",  DataLocaleLibrary::OTHERS },
+    { "ar_QA",  DataLocaleLibrary::OTHERS },
+    { "ar_SY",  DataLocaleLibrary::OTHERS },
+    { "ar_YE",  DataLocaleLibrary::OTHERS },
+    { "ilo_PH", DataLocaleLibrary::OTHERS },
+    { "ha_Latn_NG",  DataLocaleLibrary::OTHERS },
+    { "min_ID", DataLocaleLibrary::OTHERS },
+    { "sun_ID", DataLocaleLibrary::OTHERS },
+    { "en_IL",  DataLocaleLibrary::OTHERS },  // needs to be in OTHERS instead 
of EN because inherits from he_IL
+    { "pdc_US", DataLocaleLibrary::OTHERS },
+    { "dv_MV",  DataLocaleLibrary::OTHERS },
+    { "mfe_MU", DataLocaleLibrary::OTHERS },
+    { "sat_IN", DataLocaleLibrary::OTHERS }
 };
 
 #else
@@ -549,15 +573,8 @@ oslGenericFunction 
lcl_LookupTableHelper::getFunctionSymbolByName(
                 }
             }
             // Library not loaded, load it and add it to the list.
-#ifdef SAL_DLLPREFIX
-            OString sModuleName =    // mostly "lib*.so"
-                OString::Concat(SAL_DLLPREFIX) + i.pLib + SAL_DLLEXTENSION;
-#else
-            OString sModuleName =    // mostly "*.dll"
-                OString::Concat(i.pLib) + SAL_DLLEXTENSION;
-#endif
             std::unique_ptr<osl::Module> module(new osl::Module());
-            if ( module->loadRelative(&thisModule, sModuleName.getStr()) )
+            if ( module->loadRelative(&thisModule, getLibraryName(i.pLib)) )
             {
                 std::unique_lock aGuard( maMutex );
                 auto pTmpModule = module.get();

Reply via email to