sc/source/filter/excel/xlstyle.cxx | 911 ++++++++++++--------------- sc/source/filter/inc/numberformatsbuffer.hxx | 4 sc/source/filter/oox/numberformatsbuffer.cxx | 600 +++++++---------- 3 files changed, 667 insertions(+), 848 deletions(-)
New commits: commit dc77d318ca0610a41b5c64bf5e9b85a2ffd48265 Author: Mike Kaganski <[email protected]> AuthorDate: Mon Nov 3 22:18:45 2025 +0500 Commit: Mike Kaganski <[email protected]> CommitDate: Sat Nov 8 11:34:23 2025 +0100 Simplify XclNumFmtBuffer::InsertBuiltinFormats and its structures Change-Id: Ia91ce164f03141611e5cb3658ad65dedd20beb38 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193613 Reviewed-by: Mike Kaganski <[email protected]> Tested-by: Jenkins diff --git a/sc/source/filter/excel/xlstyle.cxx b/sc/source/filter/excel/xlstyle.cxx index 1a89878d65b3..65764f753a08 100644 --- a/sc/source/filter/excel/xlstyle.cxx +++ b/sc/source/filter/excel/xlstyle.cxx @@ -775,145 +775,121 @@ constexpr LanguageType PRV_LANGUAGE_ASIAN_PRIM = primary(LANGUAGE_CHINESE); /** Stores the number format used in Calc for an Excel built-in number format. */ struct XclBuiltInFormat { - sal_uInt16 mnXclNumFmt; /// Excel built-in index. - const char* mpFormat; /// Format string, may be 0 (meOffset used then). - NfIndexTableOffset meOffset; /// SvNumberFormatter format index, if mpFormat==0. - sal_uInt16 mnXclReuseFmt; /// Use this Excel format, if meOffset==PRV_NF_INDEX_REUSE. -}; + sal_uInt16 mnXclNumFmt = EXC_FORMAT_NOTFOUND; /// Excel built-in index. + OUString maFormat; /// Format string, may be 0 (meOffset used then). + NfIndexTableOffset meOffset = NF_NUMBER_STANDARD; /// SvNumberFormatter format index, if maFormat=="". + sal_uInt16 mnXclReuseFmt = 0; /// Use this Excel format, if meOffset==PRV_NF_INDEX_REUSE. + + /** Defines a literal Excel built-in number format. */ + XclBuiltInFormat(sal_uInt16 nXclNumFmt, const OUString& rFormat) + : mnXclNumFmt(nXclNumFmt) + , maFormat(rFormat) + { + } + + /** Defines an Excel built-in number format that maps to an own built-in format. */ + XclBuiltInFormat(sal_uInt16 nXclNumFmt, NfIndexTableOffset eOffset) + : mnXclNumFmt(nXclNumFmt) + , meOffset(eOffset) + { + } -/** Defines a literal Excel built-in number format. */ -#define EXC_NUMFMT_STRING( nXclNumFmt, pcUtf8 ) \ - { nXclNumFmt, pcUtf8, NF_NUMBER_STANDARD, 0 } - -/** Defines an Excel built-in number format that maps to an own built-in format. */ -#define EXC_NUMFMT_OFFSET( nXclNumFmt, eOffset ) \ - { nXclNumFmt, nullptr, eOffset, 0 } - -/** Defines an Excel built-in number format that is the same as the specified. */ -#define EXC_NUMFMT_REUSE( nXclNumFmt, nXclReuse ) \ - { nXclNumFmt, nullptr, PRV_NF_INDEX_REUSE, nXclReuse } - -/** Terminates an Excel built-in number format table. */ -#define EXC_NUMFMT_ENDTABLE() \ - { EXC_FORMAT_NOTFOUND, nullptr, NF_NUMBER_STANDARD, 0 } - -// Currency unit characters -#define UTF8_BAHT "฿" -#define UTF8_EURO "€" -#define UTF8_POUND_UK "£" -#define UTF8_SHEQEL "₪" -#define UTF8_WON "₩" -#define UTF8_YEN_CS "¥" -#define UTF8_YEN_JP "¥" - -// Japanese/Chinese date/time characters -#define UTF8_CJ_YEAR "年" -#define UTF8_CJ_MON "月" -#define UTF8_CJ_DAY "日" -#define UTF8_CJ_HOUR "時" -#define UTF8_CJ_MIN "分" -#define UTF8_CJ_SEC "秒" - -// Chinese Simplified date/time characters -#define UTF8_CS_HOUR "时" - -// Korean date/time characters -#define UTF8_KO_YEAR "년" -#define UTF8_KO_MON "월" -#define UTF8_KO_DAY "일" -#define UTF8_KO_HOUR "시" -#define UTF8_KO_MIN "분" -#define UTF8_KO_SEC "초" + /** Defines an Excel built-in number format that is the same as the specified. */ + XclBuiltInFormat(sal_uInt16 nXclNumFmt, sal_uInt16 nXclReuse) + : mnXclNumFmt(nXclNumFmt) + , meOffset(PRV_NF_INDEX_REUSE) + , mnXclReuseFmt(nXclReuse) + { + } +}; /** Default number format table. Last parent of all other tables, used for unknown languages. */ const XclBuiltInFormat spBuiltInFormats_DONTKNOW[] = { - EXC_NUMFMT_OFFSET( 0, NF_NUMBER_STANDARD ), // General - EXC_NUMFMT_OFFSET( 1, NF_NUMBER_INT ), // 0 - EXC_NUMFMT_OFFSET( 2, NF_NUMBER_DEC2 ), // 0.00 - EXC_NUMFMT_OFFSET( 3, NF_NUMBER_1000INT ), // #,##0 - EXC_NUMFMT_OFFSET( 4, NF_NUMBER_1000DEC2 ), // #,##0.00 + { 0, NF_NUMBER_STANDARD }, // General + { 1, NF_NUMBER_INT }, // 0 + { 2, NF_NUMBER_DEC2 }, // 0.00 + { 3, NF_NUMBER_1000INT }, // #,##0 + { 4, NF_NUMBER_1000DEC2 }, // #,##0.00 // 5...8 contained in file - EXC_NUMFMT_OFFSET( 9, NF_PERCENT_INT ), // 0% - EXC_NUMFMT_OFFSET( 10, NF_PERCENT_DEC2 ), // 0.00% - EXC_NUMFMT_OFFSET( 11, NF_SCIENTIFIC_000E00 ), // 0.00E+00 - EXC_NUMFMT_OFFSET( 12, NF_FRACTION_1D ), // # ?/? - EXC_NUMFMT_OFFSET( 13, NF_FRACTION_2D ), // # ??/?? + { 9, NF_PERCENT_INT }, // 0% + { 10, NF_PERCENT_DEC2 }, // 0.00% + { 11, NF_SCIENTIFIC_000E00 }, // 0.00E+00 + { 12, NF_FRACTION_1D }, // # ?/? + { 13, NF_FRACTION_2D }, // # ??/?? // 14...22 date and time formats - EXC_NUMFMT_OFFSET( 14, NF_DATE_SYS_DDMMYYYY ), - EXC_NUMFMT_OFFSET( 15, NF_DATE_SYS_DMMMYY ), - EXC_NUMFMT_OFFSET( 16, NF_DATE_SYS_DDMMM ), - EXC_NUMFMT_OFFSET( 17, NF_DATE_SYS_MMYY ), - EXC_NUMFMT_OFFSET( 18, NF_TIME_HHMMAMPM ), - EXC_NUMFMT_OFFSET( 19, NF_TIME_HHMMSSAMPM ), - EXC_NUMFMT_OFFSET( 20, NF_TIME_HHMM ), - EXC_NUMFMT_OFFSET( 21, NF_TIME_HHMMSS ), - EXC_NUMFMT_OFFSET( 22, NF_DATETIME_SYSTEM_SHORT_HHMM ), + { 14, NF_DATE_SYS_DDMMYYYY }, + { 15, NF_DATE_SYS_DMMMYY }, + { 16, NF_DATE_SYS_DDMMM }, + { 17, NF_DATE_SYS_MMYY }, + { 18, NF_TIME_HHMMAMPM }, + { 19, NF_TIME_HHMMSSAMPM }, + { 20, NF_TIME_HHMM }, + { 21, NF_TIME_HHMMSS }, + { 22, NF_DATETIME_SYSTEM_SHORT_HHMM }, // 23...36 international formats - EXC_NUMFMT_REUSE( 23, 0 ), - EXC_NUMFMT_REUSE( 24, 0 ), - EXC_NUMFMT_REUSE( 25, 0 ), - EXC_NUMFMT_REUSE( 26, 0 ), - EXC_NUMFMT_REUSE( 27, 14 ), - EXC_NUMFMT_REUSE( 28, 14 ), - EXC_NUMFMT_REUSE( 29, 14 ), - EXC_NUMFMT_REUSE( 30, 14 ), - EXC_NUMFMT_REUSE( 31, 14 ), - EXC_NUMFMT_REUSE( 32, 21 ), - EXC_NUMFMT_REUSE( 33, 21 ), - EXC_NUMFMT_REUSE( 34, 21 ), - EXC_NUMFMT_REUSE( 35, 21 ), - EXC_NUMFMT_REUSE( 36, 14 ), + { 23, 0 }, + { 24, 0 }, + { 25, 0 }, + { 26, 0 }, + { 27, 14 }, + { 28, 14 }, + { 29, 14 }, + { 30, 14 }, + { 31, 14 }, + { 32, 21 }, + { 33, 21 }, + { 34, 21 }, + { 35, 21 }, + { 36, 14 }, // 37...44 accounting formats // 41...44 contained in file - EXC_NUMFMT_STRING( 37, "#,##0;-#,##0" ), - EXC_NUMFMT_STRING( 38, "#,##0;[RED]-#,##0" ), - EXC_NUMFMT_STRING( 39, "#,##0.00;-#,##0.00" ), - EXC_NUMFMT_STRING( 40, "#,##0.00;[RED]-#,##0.00" ), + { 37, u"#,##0;-#,##0"_ustr }, + { 38, u"#,##0;[RED]-#,##0"_ustr }, + { 39, u"#,##0.00;-#,##0.00"_ustr }, + { 40, u"#,##0.00;[RED]-#,##0.00"_ustr }, // 45...49 more special formats - EXC_NUMFMT_STRING( 45, "mm:ss" ), - EXC_NUMFMT_STRING( 46, "[h]:mm:ss" ), - EXC_NUMFMT_STRING( 47, "mm:ss.0" ), - EXC_NUMFMT_STRING( 48, "##0.0E+0" ), - EXC_NUMFMT_OFFSET( 49, NF_TEXT ), + { 45, u"mm:ss"_ustr }, + { 46, u"[h]:mm:ss"_ustr }, + { 47, u"mm:ss.0"_ustr }, + { 48, u"##0.0E+0"_ustr }, + { 49, NF_TEXT }, // 50...81 international formats - EXC_NUMFMT_REUSE( 50, 14 ), - EXC_NUMFMT_REUSE( 51, 14 ), - EXC_NUMFMT_REUSE( 52, 14 ), - EXC_NUMFMT_REUSE( 53, 14 ), - EXC_NUMFMT_REUSE( 54, 14 ), - EXC_NUMFMT_REUSE( 55, 14 ), - EXC_NUMFMT_REUSE( 56, 14 ), - EXC_NUMFMT_REUSE( 57, 14 ), - EXC_NUMFMT_REUSE( 58, 14 ), - EXC_NUMFMT_REUSE( 59, 1 ), - EXC_NUMFMT_REUSE( 60, 2 ), - EXC_NUMFMT_REUSE( 61, 3 ), - EXC_NUMFMT_REUSE( 62, 4 ), - EXC_NUMFMT_REUSE( 67, 9 ), - EXC_NUMFMT_REUSE( 68, 10 ), - EXC_NUMFMT_REUSE( 69, 12 ), - EXC_NUMFMT_REUSE( 70, 13 ), - EXC_NUMFMT_REUSE( 71, 14 ), - EXC_NUMFMT_REUSE( 72, 14 ), - EXC_NUMFMT_REUSE( 73, 15 ), - EXC_NUMFMT_REUSE( 74, 16 ), - EXC_NUMFMT_REUSE( 75, 17 ), - EXC_NUMFMT_REUSE( 76, 20 ), - EXC_NUMFMT_REUSE( 77, 21 ), - EXC_NUMFMT_REUSE( 78, 22 ), - EXC_NUMFMT_REUSE( 79, 45 ), - EXC_NUMFMT_REUSE( 80, 46 ), - EXC_NUMFMT_REUSE( 81, 47 ), + { 50, 14 }, + { 51, 14 }, + { 52, 14 }, + { 53, 14 }, + { 54, 14 }, + { 55, 14 }, + { 56, 14 }, + { 57, 14 }, + { 58, 14 }, + { 59, 1 }, + { 60, 2 }, + { 61, 3 }, + { 62, 4 }, + { 67, 9 }, + { 68, 10 }, + { 69, 12 }, + { 70, 13 }, + { 71, 14 }, + { 72, 14 }, + { 73, 15 }, + { 74, 16 }, + { 75, 17 }, + { 76, 20 }, + { 77, 21 }, + { 78, 22 }, + { 79, 45 }, + { 80, 46 }, + { 81, 47 }, // 82...163 not used, must not occur in a file (Excel may crash) - - EXC_NUMFMT_ENDTABLE() }; // ENGLISH -------------------------------------------------------------------- @@ -921,90 +897,83 @@ const XclBuiltInFormat spBuiltInFormats_DONTKNOW[] = /** Base table for English locales. */ const XclBuiltInFormat spBuiltInFormats_ENGLISH[] = { - EXC_NUMFMT_STRING( 15, "DD-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "DD-MMM" ), - EXC_NUMFMT_STRING( 17, "MMM-YY" ), - EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ), - EXC_NUMFMT_STRING( 22, "DD/MM/YYYY hh:mm" ), - EXC_NUMFMT_ENDTABLE() + { 15, u"DD-MMM-YY"_ustr }, + { 16, u"DD-MMM"_ustr }, + { 17, u"MMM-YY"_ustr }, + { 18, u"h:mm AM/PM"_ustr }, + { 19, u"h:mm:ss AM/PM"_ustr }, + { 22, u"DD/MM/YYYY hh:mm"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_ENGLISH_UK[] = { - EXC_NUMFMT_STRING( 63, UTF8_POUND_UK "#,##0;-" UTF8_POUND_UK "#,##0" ), - EXC_NUMFMT_STRING( 64, UTF8_POUND_UK "#,##0;[RED]-" UTF8_POUND_UK "#,##0" ), - EXC_NUMFMT_STRING( 65, UTF8_POUND_UK "#,##0.00;-" UTF8_POUND_UK "#,##0.00" ), - EXC_NUMFMT_STRING( 66, UTF8_POUND_UK "#,##0.00;[RED]-" UTF8_POUND_UK "#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 63, u"£#,##0;-£#,##0"_ustr }, + { 64, u"£#,##0;[RED]-£#,##0"_ustr }, + { 65, u"£#,##0.00;-£#,##0.00"_ustr }, + { 66, u"£#,##0.00;[RED]-£#,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_ENGLISH_EIRE[] = { - EXC_NUMFMT_STRING( 63, UTF8_EURO "#,##0;-" UTF8_EURO "#,##0" ), - EXC_NUMFMT_STRING( 64, UTF8_EURO "#,##0;[RED]-" UTF8_EURO "#,##0" ), - EXC_NUMFMT_STRING( 65, UTF8_EURO "#,##0.00;-" UTF8_EURO "#,##0.00" ), - EXC_NUMFMT_STRING( 66, UTF8_EURO "#,##0.00;[RED]-" UTF8_EURO "#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 63, u"€#,##0;-€#,##0"_ustr }, + { 64, u"€#,##0;[RED]-€#,##0"_ustr }, + { 65, u"€#,##0.00;-€#,##0.00"_ustr }, + { 66, u"€#,##0.00;[RED]-€#,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_ENGLISH_US[] = { - EXC_NUMFMT_STRING( 14, "M/D/YYYY" ), - EXC_NUMFMT_STRING( 15, "D-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "D-MMM" ), - EXC_NUMFMT_STRING( 20, "h:mm" ), - EXC_NUMFMT_STRING( 21, "h:mm:ss" ), - EXC_NUMFMT_STRING( 22, "M/D/YYYY h:mm" ), - EXC_NUMFMT_STRING( 37, "#,##0_);(#,##0)" ), - EXC_NUMFMT_STRING( 38, "#,##0_);[RED](#,##0)" ), - EXC_NUMFMT_STRING( 39, "#,##0.00_);(#,##0.00)" ), - EXC_NUMFMT_STRING( 40, "#,##0.00_);[RED](#,##0.00)" ), - EXC_NUMFMT_STRING( 63, "$#,##0_);($#,##0)" ), - EXC_NUMFMT_STRING( 64, "$#,##0_);[RED]($#,##0)" ), - EXC_NUMFMT_STRING( 65, "$#,##0.00_);($#,##0.00)" ), - EXC_NUMFMT_STRING( 66, "$#,##0.00_);[RED]($#,##0.00)" ), - EXC_NUMFMT_ENDTABLE() + { 14, u"M/D/YYYY"_ustr }, + { 15, u"D-MMM-YY"_ustr }, + { 16, u"D-MMM"_ustr }, + { 20, u"h:mm"_ustr }, + { 21, u"h:mm:ss"_ustr }, + { 22, u"M/D/YYYY h:mm"_ustr }, + { 37, u"#,##0_);(#,##0)"_ustr }, + { 38, u"#,##0_);[RED](#,##0)"_ustr }, + { 39, u"#,##0.00_);(#,##0.00)"_ustr }, + { 40, u"#,##0.00_);[RED](#,##0.00)"_ustr }, + { 63, u"$#,##0_);($#,##0)"_ustr }, + { 64, u"$#,##0_);[RED]($#,##0)"_ustr }, + { 65, u"$#,##0.00_);($#,##0.00)"_ustr }, + { 66, u"$#,##0.00_);[RED]($#,##0.00)"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_ENGLISH_CAN[] = { - EXC_NUMFMT_STRING( 20, "h:mm" ), - EXC_NUMFMT_STRING( 21, "h:mm:ss" ), - EXC_NUMFMT_STRING( 22, "DD/MM/YYYY h:mm" ), - EXC_NUMFMT_STRING( 63, "$#,##0;-$#,##0" ), - EXC_NUMFMT_STRING( 64, "$#,##0;[RED]-$#,##0" ), - EXC_NUMFMT_STRING( 65, "$#,##0.00;-$#,##0.00" ), - EXC_NUMFMT_STRING( 66, "$#,##0.00;[RED]-$#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 20, u"h:mm"_ustr }, + { 21, u"h:mm:ss"_ustr }, + { 22, u"DD/MM/YYYY h:mm"_ustr }, + { 63, u"$#,##0;-$#,##0"_ustr }, + { 64, u"$#,##0;[RED]-$#,##0"_ustr }, + { 65, u"$#,##0.00;-$#,##0.00"_ustr }, + { 66, u"$#,##0.00;[RED]-$#,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_ENGLISH_AUS[] = { - EXC_NUMFMT_STRING( 14, "D/MM/YYYY" ), - EXC_NUMFMT_STRING( 15, "D-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "D-MMM" ), - EXC_NUMFMT_STRING( 20, "h:mm" ), - EXC_NUMFMT_STRING( 21, "h:mm:ss" ), - EXC_NUMFMT_STRING( 22, "D/MM/YYYY h:mm" ), - EXC_NUMFMT_STRING( 63, "$#,##0;-$#,##0" ), - EXC_NUMFMT_STRING( 64, "$#,##0;[RED]-$#,##0" ), - EXC_NUMFMT_STRING( 65, "$#,##0.00;-$#,##0.00" ), - EXC_NUMFMT_STRING( 66, "$#,##0.00;[RED]-$#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 14, u"D/MM/YYYY"_ustr }, + { 15, u"D-MMM-YY"_ustr }, + { 16, u"D-MMM"_ustr }, + { 20, u"h:mm"_ustr }, + { 21, u"h:mm:ss"_ustr }, + { 22, u"D/MM/YYYY h:mm"_ustr }, + { 63, u"$#,##0;-$#,##0"_ustr }, + { 64, u"$#,##0;[RED]-$#,##0"_ustr }, + { 65, u"$#,##0.00;-$#,##0.00"_ustr }, + { 66, u"$#,##0.00;[RED]-$#,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_ENGLISH_SAFRICA[] = { - EXC_NUMFMT_STRING( 14, "YYYY/MM/DD" ), - EXC_NUMFMT_OFFSET( 18, NF_TIME_HHMMAMPM ), - EXC_NUMFMT_OFFSET( 19, NF_TIME_HHMMSSAMPM ), - EXC_NUMFMT_STRING( 22, "YYYY/MM/DD hh:mm" ), - EXC_NUMFMT_STRING( 63, "\R #,##0;\R -#,##0" ), - EXC_NUMFMT_STRING( 64, "\R #,##0;[RED]\R -#,##0" ), - EXC_NUMFMT_STRING( 65, "\R #,##0.00;\R -#,##0.00" ), - EXC_NUMFMT_STRING( 66, "\R #,##0.00;[RED]\R -#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 14, u"YYYY/MM/DD"_ustr }, + { 18, NF_TIME_HHMMAMPM }, + { 19, NF_TIME_HHMMSSAMPM }, + { 22, u"YYYY/MM/DD hh:mm"_ustr }, + { 63, u"\R #,##0;\R -#,##0"_ustr }, + { 64, u"\R #,##0;[RED]\R -#,##0"_ustr }, + { 65, u"\R #,##0.00;\R -#,##0.00"_ustr }, + { 66, u"\R #,##0.00;[RED]\R -#,##0.00"_ustr }, }; // FRENCH --------------------------------------------------------------------- @@ -1012,64 +981,59 @@ const XclBuiltInFormat spBuiltInFormats_ENGLISH_SAFRICA[] = /** Base table for French locales. */ const XclBuiltInFormat spBuiltInFormats_FRENCH[] = { - EXC_NUMFMT_STRING( 15, "DD-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "DD-MMM" ), - EXC_NUMFMT_STRING( 17, "MMM-YY" ), - EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ), - EXC_NUMFMT_ENDTABLE() + { 15, u"DD-MMM-YY"_ustr }, + { 16, u"DD-MMM"_ustr }, + { 17, u"MMM-YY"_ustr }, + { 18, u"h:mm AM/PM"_ustr }, + { 19, u"h:mm:ss AM/PM"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_FRENCH_FRANCE[] = { - EXC_NUMFMT_STRING( 22, "DD/MM/YYYY hh:mm" ), - EXC_NUMFMT_STRING( 37, "#,##0\ _" UTF8_EURO ";-#,##0\ _" UTF8_EURO ), - EXC_NUMFMT_STRING( 38, "#,##0\ _" UTF8_EURO ";[RED]-#,##0\ _" UTF8_EURO ), - EXC_NUMFMT_STRING( 39, "#,##0.00\ _" UTF8_EURO ";-#,##0.00\ _" UTF8_EURO ), - EXC_NUMFMT_STRING( 40, "#,##0.00\ _" UTF8_EURO ";[RED]-#,##0.00\ _" UTF8_EURO ), - EXC_NUMFMT_STRING( 63, "#,##0\ " UTF8_EURO ";-#,##0\ " UTF8_EURO ), - EXC_NUMFMT_STRING( 64, "#,##0\ " UTF8_EURO ";[RED]-#,##0\ " UTF8_EURO ), - EXC_NUMFMT_STRING( 65, "#,##0.00\ " UTF8_EURO ";-#,##0.00\ " UTF8_EURO ), - EXC_NUMFMT_STRING( 66, "#,##0.00\ " UTF8_EURO ";[RED]-#,##0.00\ " UTF8_EURO ), - EXC_NUMFMT_ENDTABLE() + { 22, u"DD/MM/YYYY hh:mm"_ustr }, + { 37, u"#,##0\ _€;-#,##0\ _€"_ustr }, + { 38, u"#,##0\ _€;[RED]-#,##0\ _€"_ustr }, + { 39, u"#,##0.00\ _€;-#,##0.00\ _€"_ustr }, + { 40, u"#,##0.00\ _€;[RED]-#,##0.00\ _€"_ustr }, + { 63, u"#,##0\ €;-#,##0\ €"_ustr }, + { 64, u"#,##0\ €;[RED]-#,##0\ €"_ustr }, + { 65, u"#,##0.00\ €;-#,##0.00\ €"_ustr }, + { 66, u"#,##0.00\ €;[RED]-#,##0.00\ €"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_FRENCH_CANADIAN[] = { - EXC_NUMFMT_STRING( 22, "YYYY-MM-DD hh:mm" ), - EXC_NUMFMT_STRING( 37, "#,##0\ _$_-;#,##0\ _$-" ), - EXC_NUMFMT_STRING( 38, "#,##0\ _$_-;[RED]#,##0\ _$-" ), - EXC_NUMFMT_STRING( 39, "#,##0.00\ _$_-;#,##0.00\ _$-" ), - EXC_NUMFMT_STRING( 40, "#,##0.00\ _$_-;[RED]#,##0.00\ _$-" ), - EXC_NUMFMT_STRING( 63, "#,##0\ $_-;#,##0\ $-" ), - EXC_NUMFMT_STRING( 64, "#,##0\ $_-;[RED]#,##0\ $-" ), - EXC_NUMFMT_STRING( 65, "#,##0.00\ $_-;#,##0.00\ $-" ), - EXC_NUMFMT_STRING( 66, "#,##0.00\ $_-;[RED]#,##0.00\ $-" ), - EXC_NUMFMT_ENDTABLE() + { 22, u"YYYY-MM-DD hh:mm"_ustr }, + { 37, u"#,##0\ _$_-;#,##0\ _$-"_ustr }, + { 38, u"#,##0\ _$_-;[RED]#,##0\ _$-"_ustr }, + { 39, u"#,##0.00\ _$_-;#,##0.00\ _$-"_ustr }, + { 40, u"#,##0.00\ _$_-;[RED]#,##0.00\ _$-"_ustr }, + { 63, u"#,##0\ $_-;#,##0\ $-"_ustr }, + { 64, u"#,##0\ $_-;[RED]#,##0\ $-"_ustr }, + { 65, u"#,##0.00\ $_-;#,##0.00\ $-"_ustr }, + { 66, u"#,##0.00\ $_-;[RED]#,##0.00\ $-"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_FRENCH_SWISS[] = { - EXC_NUMFMT_STRING( 15, "DD.MMM.YY" ), - EXC_NUMFMT_STRING( 16, "DD.MMM" ), - EXC_NUMFMT_STRING( 17, "MMM.YY" ), - EXC_NUMFMT_STRING( 22, "DD.MM.YYYY hh:mm" ), - EXC_NUMFMT_STRING( 63, "\"SFr. \"#,##0;\"SFr. \"-#,##0" ), - EXC_NUMFMT_STRING( 64, "\"SFr. \"#,##0;[RED]\"SFr. \"-#,##0" ), - EXC_NUMFMT_STRING( 65, "\"SFr. \"#,##0.00;\"SFr. \"-#,##0.00" ), - EXC_NUMFMT_STRING( 66, "\"SFr. \"#,##0.00;[RED]\"SFr. \"-#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 15, u"DD.MMM.YY"_ustr }, + { 16, u"DD.MMM"_ustr }, + { 17, u"MMM.YY"_ustr }, + { 22, u"DD.MM.YYYY hh:mm"_ustr }, + { 63, u"\"SFr. \"#,##0;\"SFr. \"-#,##0"_ustr }, + { 64, u"\"SFr. \"#,##0;[RED]\"SFr. \"-#,##0"_ustr }, + { 65, u"\"SFr. \"#,##0.00;\"SFr. \"-#,##0.00"_ustr }, + { 66, u"\"SFr. \"#,##0.00;[RED]\"SFr. \"-#,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_FRENCH_BELGIAN[] = { - EXC_NUMFMT_STRING( 14, "D/MM/YYYY" ), - EXC_NUMFMT_STRING( 15, "D-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "D-MMM" ), - EXC_NUMFMT_STRING( 20, "h:mm" ), - EXC_NUMFMT_STRING( 21, "h:mm:ss" ), - EXC_NUMFMT_STRING( 22, "D/MM/YYYY h:mm" ), - EXC_NUMFMT_ENDTABLE() + { 14, u"D/MM/YYYY"_ustr }, + { 15, u"D-MMM-YY"_ustr }, + { 16, u"D-MMM"_ustr }, + { 20, u"h:mm"_ustr }, + { 21, u"h:mm:ss"_ustr }, + { 22, u"D/MM/YYYY h:mm"_ustr }, }; // GERMAN --------------------------------------------------------------------- @@ -1077,148 +1041,138 @@ const XclBuiltInFormat spBuiltInFormats_FRENCH_BELGIAN[] = /** Base table for German locales. */ const XclBuiltInFormat spBuiltInFormats_GERMAN[] = { - EXC_NUMFMT_STRING( 15, "DD. MMM YY" ), - EXC_NUMFMT_STRING( 16, "DD. MMM" ), - EXC_NUMFMT_STRING( 17, "MMM YY" ), - EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ), - EXC_NUMFMT_STRING( 22, "DD.MM.YYYY hh:mm" ), - EXC_NUMFMT_ENDTABLE() + { 15, u"DD. MMM YY"_ustr }, + { 16, u"DD. MMM"_ustr }, + { 17, u"MMM YY"_ustr }, + { 18, u"h:mm AM/PM"_ustr }, + { 19, u"h:mm:ss AM/PM"_ustr }, + { 22, u"DD.MM.YYYY hh:mm"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_GERMAN_GERMANY[] = { - EXC_NUMFMT_STRING( 37, "#,##0 _" UTF8_EURO ";-#,##0 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 38, "#,##0 _" UTF8_EURO ";[RED]-#,##0 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 39, "#,##0.00 _" UTF8_EURO ";-#,##0.00 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 40, "#,##0.00 _" UTF8_EURO ";[RED]-#,##0.00 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 63, "#,##0 " UTF8_EURO ";-#,##0 " UTF8_EURO ), - EXC_NUMFMT_STRING( 64, "#,##0 " UTF8_EURO ";[RED]-#,##0 " UTF8_EURO ), - EXC_NUMFMT_STRING( 65, "#,##0.00 " UTF8_EURO ";-#,##0.00 " UTF8_EURO ), - EXC_NUMFMT_STRING( 66, "#,##0.00 " UTF8_EURO ";[RED]-#,##0.00 " UTF8_EURO ), - EXC_NUMFMT_ENDTABLE() + { 37, u"#,##0 _€;-#,##0 _€"_ustr }, + { 38, u"#,##0 _€;[RED]-#,##0 _€"_ustr }, + { 39, u"#,##0.00 _€;-#,##0.00 _€"_ustr }, + { 40, u"#,##0.00 _€;[RED]-#,##0.00 _€"_ustr }, + { 63, u"#,##0 €;-#,##0 €"_ustr }, + { 64, u"#,##0 €;[RED]-#,##0 €"_ustr }, + { 65, u"#,##0.00 €;-#,##0.00 €"_ustr }, + { 66, u"#,##0.00 €;[RED]-#,##0.00 €"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_GERMAN_AUSTRIAN[] = { - EXC_NUMFMT_STRING( 15, "DD.MMM.YY" ), - EXC_NUMFMT_STRING( 16, "DD.MMM" ), - EXC_NUMFMT_STRING( 17, "MMM.YY" ), - EXC_NUMFMT_STRING( 63, UTF8_EURO " #,##0;-" UTF8_EURO " #,##0" ), - EXC_NUMFMT_STRING( 64, UTF8_EURO " #,##0;[RED]-" UTF8_EURO " #,##0" ), - EXC_NUMFMT_STRING( 65, UTF8_EURO " #,##0.00;-" UTF8_EURO " #,##0.00" ), - EXC_NUMFMT_STRING( 66, UTF8_EURO " #,##0.00;[RED]-" UTF8_EURO " #,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 15, u"DD.MMM.YY"_ustr }, + { 16, u"DD.MMM"_ustr }, + { 17, u"MMM.YY"_ustr }, + { 63, u"€ #,##0;-€ #,##0"_ustr }, + { 64, u"€ #,##0;[RED]-€ #,##0"_ustr }, + { 65, u"€ #,##0.00;-€ #,##0.00"_ustr }, + { 66, u"€ #,##0.00;[RED]-€ #,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_GERMAN_SWISS[] = { - EXC_NUMFMT_STRING( 63, "\"SFr. \"#,##0;\"SFr. \"-#,##0" ), - EXC_NUMFMT_STRING( 64, "\"SFr. \"#,##0;[RED]\"SFr. \"-#,##0" ), - EXC_NUMFMT_STRING( 65, "\"SFr. \"#,##0.00;\"SFr. \"-#,##0.00" ), - EXC_NUMFMT_STRING( 66, "\"SFr. \"#,##0.00;[RED]\"SFr. \"-#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 63, u"\"SFr. \"#,##0;\"SFr. \"-#,##0"_ustr }, + { 64, u"\"SFr. \"#,##0;[RED]\"SFr. \"-#,##0"_ustr }, + { 65, u"\"SFr. \"#,##0.00;\"SFr. \"-#,##0.00"_ustr }, + { 66, u"\"SFr. \"#,##0.00;[RED]\"SFr. \"-#,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_GERMAN_LUXEMBOURG[] = { - EXC_NUMFMT_STRING( 15, "DD.MMM.YY" ), - EXC_NUMFMT_STRING( 16, "DD.MMM" ), - EXC_NUMFMT_STRING( 17, "MMM.YY" ), - EXC_NUMFMT_STRING( 37, "#,##0 _" UTF8_EURO ";-#,##0 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 38, "#,##0 _" UTF8_EURO ";[RED]-#,##0 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 39, "#,##0.00 _" UTF8_EURO ";-#,##0.00 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 40, "#,##0.00 _" UTF8_EURO ";[RED]-#,##0.00 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 63, "#,##0 " UTF8_EURO ";-#,##0 " UTF8_EURO ), - EXC_NUMFMT_STRING( 64, "#,##0 " UTF8_EURO ";[RED]-#,##0 " UTF8_EURO ), - EXC_NUMFMT_STRING( 65, "#,##0.00 " UTF8_EURO ";-#,##0.00 " UTF8_EURO ), - EXC_NUMFMT_STRING( 66, "#,##0.00 " UTF8_EURO ";[RED]-#,##0.00 " UTF8_EURO ), - EXC_NUMFMT_ENDTABLE() + { 15, u"DD.MMM.YY"_ustr }, + { 16, u"DD.MMM"_ustr }, + { 17, u"MMM.YY"_ustr }, + { 37, u"#,##0 _€;-#,##0 _€"_ustr }, + { 38, u"#,##0 _€;[RED]-#,##0 _€"_ustr }, + { 39, u"#,##0.00 _€;-#,##0.00 _€"_ustr }, + { 40, u"#,##0.00 _€;[RED]-#,##0.00 _€"_ustr }, + { 63, u"#,##0 €;-#,##0 €"_ustr }, + { 64, u"#,##0 €;[RED]-#,##0 €"_ustr }, + { 65, u"#,##0.00 €;-#,##0.00 €"_ustr }, + { 66, u"#,##0.00 €;[RED]-#,##0.00 €"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_GERMAN_LIECHTENSTEIN[] = { - EXC_NUMFMT_STRING( 63, "\"CHF \"#,##0;\"CHF \"-#,##0" ), - EXC_NUMFMT_STRING( 64, "\"CHF \"#,##0;[RED]\"CHF \"-#,##0" ), - EXC_NUMFMT_STRING( 65, "\"CHF \"#,##0.00;\"CHF \"-#,##0.00" ), - EXC_NUMFMT_STRING( 66, "\"CHF \"#,##0.00;[RED]\"CHF \"-#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 63, u"\"CHF \"#,##0;\"CHF \"-#,##0"_ustr }, + { 64, u"\"CHF \"#,##0;[RED]\"CHF \"-#,##0"_ustr }, + { 65, u"\"CHF \"#,##0.00;\"CHF \"-#,##0.00"_ustr }, + { 66, u"\"CHF \"#,##0.00;[RED]\"CHF \"-#,##0.00"_ustr }, }; // ITALIAN -------------------------------------------------------------------- const XclBuiltInFormat spBuiltInFormats_ITALIAN_ITALY[] = { - EXC_NUMFMT_STRING( 15, "DD-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "DD-MMM" ), - EXC_NUMFMT_STRING( 17, "MMM-YY" ), - EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ), - EXC_NUMFMT_STRING( 20, "h:mm" ), - EXC_NUMFMT_STRING( 21, "h:mm:ss" ), - EXC_NUMFMT_STRING( 22, "DD/MM/YYYY h:mm" ), - EXC_NUMFMT_STRING( 63, UTF8_EURO " #,##0;-" UTF8_EURO " #,##0" ), - EXC_NUMFMT_STRING( 64, UTF8_EURO " #,##0;[RED]-" UTF8_EURO " #,##0" ), - EXC_NUMFMT_STRING( 65, UTF8_EURO " #,##0.00;-" UTF8_EURO " #,##0.00" ), - EXC_NUMFMT_STRING( 66, UTF8_EURO " #,##0.00;[RED]-" UTF8_EURO " #,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 15, u"DD-MMM-YY"_ustr }, + { 16, u"DD-MMM"_ustr }, + { 17, u"MMM-YY"_ustr }, + { 18, u"h:mm AM/PM"_ustr }, + { 19, u"h:mm:ss AM/PM"_ustr }, + { 20, u"h:mm"_ustr }, + { 21, u"h:mm:ss"_ustr }, + { 22, u"DD/MM/YYYY h:mm"_ustr }, + { 63, u"€ #,##0;-€ #,##0"_ustr }, + { 64, u"€ #,##0;[RED]-€ #,##0"_ustr }, + { 65, u"€ #,##0.00;-€ #,##0.00"_ustr }, + { 66, u"€ #,##0.00;[RED]-€ #,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_ITALIAN_SWISS[] = { - EXC_NUMFMT_STRING( 15, "DD.MMM.YY" ), - EXC_NUMFMT_STRING( 16, "DD.MMM" ), - EXC_NUMFMT_STRING( 17, "MMM.YY" ), - EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ), - EXC_NUMFMT_STRING( 22, "DD.MM.YYYY hh:mm" ), - EXC_NUMFMT_STRING( 63, "\"SFr. \"#,##0;\"SFr. \"-#,##0" ), - EXC_NUMFMT_STRING( 64, "\"SFr. \"#,##0;[RED]\"SFr. \"-#,##0" ), - EXC_NUMFMT_STRING( 65, "\"SFr. \"#,##0.00;\"SFr. \"-#,##0.00" ), - EXC_NUMFMT_STRING( 66, "\"SFr. \"#,##0.00;[RED]\"SFr. \"-#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 15, u"DD.MMM.YY"_ustr }, + { 16, u"DD.MMM"_ustr }, + { 17, u"MMM.YY"_ustr }, + { 18, u"h:mm AM/PM"_ustr }, + { 19, u"h:mm:ss AM/PM"_ustr }, + { 22, u"DD.MM.YYYY hh:mm"_ustr }, + { 63, u"\"SFr. \"#,##0;\"SFr. \"-#,##0"_ustr }, + { 64, u"\"SFr. \"#,##0;[RED]\"SFr. \"-#,##0"_ustr }, + { 65, u"\"SFr. \"#,##0.00;\"SFr. \"-#,##0.00"_ustr }, + { 66, u"\"SFr. \"#,##0.00;[RED]\"SFr. \"-#,##0.00"_ustr }, }; // SWEDISH -------------------------------------------------------------------- const XclBuiltInFormat spBuiltInFormats_SWEDISH_SWEDEN[] = { - EXC_NUMFMT_STRING( 15, "DD-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "DD-MMM" ), - EXC_NUMFMT_STRING( 17, "MMM-YY" ), - EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ), - EXC_NUMFMT_STRING( 22, "YYYY-MM-DD hh:mm" ), - EXC_NUMFMT_STRING( 37, "#,##0 _k_r;-#,##0 _k_r" ), - EXC_NUMFMT_STRING( 38, "#,##0 _k_r;[RED]-#,##0 _k_r" ), - EXC_NUMFMT_STRING( 39, "#,##0.00 _k_r;-#,##0.00 _k_r" ), - EXC_NUMFMT_STRING( 40, "#,##0.00 _k_r;[RED]-#,##0.00 _k_r" ), - EXC_NUMFMT_STRING( 63, "#,##0 \"kr\";-#,##0 \"kr\"" ), - EXC_NUMFMT_STRING( 64, "#,##0 \"kr\";[RED]-#,##0 \"kr\"" ), - EXC_NUMFMT_STRING( 65, "#,##0.00 \"kr\";-#,##0.00 \"kr\"" ), - EXC_NUMFMT_STRING( 66, "#,##0.00 \"kr\";[RED]-#,##0.00 \"kr\"" ), - EXC_NUMFMT_ENDTABLE() + { 15, u"DD-MMM-YY"_ustr }, + { 16, u"DD-MMM"_ustr }, + { 17, u"MMM-YY"_ustr }, + { 18, u"h:mm AM/PM"_ustr }, + { 19, u"h:mm:ss AM/PM"_ustr }, + { 22, u"YYYY-MM-DD hh:mm"_ustr }, + { 37, u"#,##0 _k_r;-#,##0 _k_r"_ustr }, + { 38, u"#,##0 _k_r;[RED]-#,##0 _k_r"_ustr }, + { 39, u"#,##0.00 _k_r;-#,##0.00 _k_r"_ustr }, + { 40, u"#,##0.00 _k_r;[RED]-#,##0.00 _k_r"_ustr }, + { 63, u"#,##0 \"kr\";-#,##0 \"kr\""_ustr }, + { 64, u"#,##0 \"kr\";[RED]-#,##0 \"kr\""_ustr }, + { 65, u"#,##0.00 \"kr\";-#,##0.00 \"kr\""_ustr }, + { 66, u"#,##0.00 \"kr\";[RED]-#,##0.00 \"kr\""_ustr }, }; const XclBuiltInFormat spBuiltInFormats_SWEDISH_FINLAND[] = { - EXC_NUMFMT_STRING( 9, "0 %" ), - EXC_NUMFMT_STRING( 10, "0.00 %" ), - EXC_NUMFMT_STRING( 15, "DD.MMM.YY" ), - EXC_NUMFMT_STRING( 16, "DD.MMM" ), - EXC_NUMFMT_STRING( 17, "MMM.YY" ), - EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ), - EXC_NUMFMT_STRING( 22, "D.M.YYYY hh:mm" ), - EXC_NUMFMT_STRING( 37, "#,##0 _" UTF8_EURO ";-#,##0 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 38, "#,##0 _" UTF8_EURO ";[RED]-#,##0 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 39, "#,##0.00 _" UTF8_EURO ";-#,##0.00 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 40, "#,##0.00 _" UTF8_EURO ";[RED]-#,##0.00 _" UTF8_EURO ), - EXC_NUMFMT_STRING( 63, "#,##0 " UTF8_EURO ";-#,##0 " UTF8_EURO ), - EXC_NUMFMT_STRING( 64, "#,##0 " UTF8_EURO ";[RED]-#,##0 " UTF8_EURO ), - EXC_NUMFMT_STRING( 65, "#,##0.00 " UTF8_EURO ";-#,##0.00 " UTF8_EURO ), - EXC_NUMFMT_STRING( 66, "#,##0.00 " UTF8_EURO ";[RED]-#,##0.00 " UTF8_EURO ), - EXC_NUMFMT_ENDTABLE() + { 9, u"0 %"_ustr }, + { 10, u"0.00 %"_ustr }, + { 15, u"DD.MMM.YY"_ustr }, + { 16, u"DD.MMM"_ustr }, + { 17, u"MMM.YY"_ustr }, + { 18, u"h:mm AM/PM"_ustr }, + { 19, u"h:mm:ss AM/PM"_ustr }, + { 22, u"D.M.YYYY hh:mm"_ustr }, + { 37, u"#,##0 _€;-#,##0 _€"_ustr }, + { 38, u"#,##0 _€;[RED]-#,##0 _€"_ustr }, + { 39, u"#,##0.00 _€;-#,##0.00 _€"_ustr }, + { 40, u"#,##0.00 _€;[RED]-#,##0.00 _€"_ustr }, + { 63, u"#,##0 €;-#,##0 €"_ustr }, + { 64, u"#,##0 €;[RED]-#,##0 €"_ustr }, + { 65, u"#,##0.00 €;-#,##0.00 €"_ustr }, + { 66, u"#,##0.00 €;[RED]-#,##0.00 €"_ustr }, }; // ASIAN ---------------------------------------------------------------------- @@ -1226,190 +1180,178 @@ const XclBuiltInFormat spBuiltInFormats_SWEDISH_FINLAND[] = /** Base table for Asian locales. */ const XclBuiltInFormat spBuiltInFormats_ASIAN[] = { - EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ), - EXC_NUMFMT_STRING( 20, "h:mm" ), - EXC_NUMFMT_STRING( 21, "h:mm:ss" ), - EXC_NUMFMT_STRING( 23, "$#,##0_);($#,##0)" ), - EXC_NUMFMT_STRING( 24, "$#,##0_);[RED]($#,##0)" ), - EXC_NUMFMT_STRING( 25, "$#,##0.00_);($#,##0.00)" ), - EXC_NUMFMT_STRING( 26, "$#,##0.00_);[RED]($#,##0.00)" ), - EXC_NUMFMT_REUSE( 29, 28 ), - EXC_NUMFMT_REUSE( 36, 27 ), - EXC_NUMFMT_REUSE( 50, 27 ), - EXC_NUMFMT_REUSE( 51, 28 ), - EXC_NUMFMT_REUSE( 52, 34 ), - EXC_NUMFMT_REUSE( 53, 35 ), - EXC_NUMFMT_REUSE( 54, 28 ), - EXC_NUMFMT_REUSE( 55, 34 ), - EXC_NUMFMT_REUSE( 56, 35 ), - EXC_NUMFMT_REUSE( 57, 27 ), - EXC_NUMFMT_REUSE( 58, 28 ), - EXC_NUMFMT_ENDTABLE() + { 18, u"h:mm AM/PM"_ustr }, + { 19, u"h:mm:ss AM/PM"_ustr }, + { 20, u"h:mm"_ustr }, + { 21, u"h:mm:ss"_ustr }, + { 23, u"$#,##0_);($#,##0)"_ustr }, + { 24, u"$#,##0_);[RED]($#,##0)"_ustr }, + { 25, u"$#,##0.00_);($#,##0.00)"_ustr }, + { 26, u"$#,##0.00_);[RED]($#,##0.00)"_ustr }, + { 29, 28 }, + { 36, 27 }, + { 50, 27 }, + { 51, 28 }, + { 52, 34 }, + { 53, 35 }, + { 54, 28 }, + { 55, 34 }, + { 56, 35 }, + { 57, 27 }, + { 58, 28 }, }; const XclBuiltInFormat spBuiltInFormats_JAPANESE[] = { - EXC_NUMFMT_STRING( 14, "YYYY/M/D" ), - EXC_NUMFMT_STRING( 15, "D-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "D-MMM" ), - EXC_NUMFMT_STRING( 17, "MMM-YY" ), - EXC_NUMFMT_STRING( 22, "YYYY/M/D h:mm" ), - EXC_NUMFMT_STRING( 27, "[$-0411]GE.M.D" ), - EXC_NUMFMT_STRING( 28, "[$-0411]GGGE" UTF8_CJ_YEAR "M" UTF8_CJ_MON "D" UTF8_CJ_DAY ), - EXC_NUMFMT_STRING( 30, "[$-0411]M/D/YY" ), - EXC_NUMFMT_STRING( 31, "[$-0411]YYYY" UTF8_CJ_YEAR "M" UTF8_CJ_MON "D" UTF8_CJ_DAY ), - EXC_NUMFMT_STRING( 32, "[$-0411]h" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN ), - EXC_NUMFMT_STRING( 33, "[$-0411]h" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN "ss" UTF8_CJ_SEC ), - EXC_NUMFMT_STRING( 34, "[$-0411]YYYY" UTF8_CJ_YEAR "M" UTF8_CJ_MON ), - EXC_NUMFMT_STRING( 35, "[$-0411]M" UTF8_CJ_MON "D" UTF8_CJ_DAY ), - EXC_NUMFMT_STRING( 63, UTF8_YEN_JP "#,##0;-" UTF8_YEN_JP "#,##0" ), - EXC_NUMFMT_STRING( 64, UTF8_YEN_JP "#,##0;[RED]-" UTF8_YEN_JP "#,##0" ), - EXC_NUMFMT_STRING( 65, UTF8_YEN_JP "#,##0.00;-" UTF8_YEN_JP "#,##0.00" ), - EXC_NUMFMT_STRING( 66, UTF8_YEN_JP "#,##0.00;[RED]-" UTF8_YEN_JP "#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 14, u"YYYY/M/D"_ustr }, + { 15, u"D-MMM-YY"_ustr }, + { 16, u"D-MMM"_ustr }, + { 17, u"MMM-YY"_ustr }, + { 22, u"YYYY/M/D h:mm"_ustr }, + { 27, u"[$-0411]GE.M.D"_ustr }, + { 28, u"[$-0411]GGGE年M月D日"_ustr }, + { 30, u"[$-0411]M/D/YY"_ustr }, + { 31, u"[$-0411]YYYY年M月D日"_ustr }, + { 32, u"[$-0411]h時mm分"_ustr }, + { 33, u"[$-0411]h時mm分ss秒"_ustr }, + { 34, u"[$-0411]YYYY年M月"_ustr }, + { 35, u"[$-0411]M月D日"_ustr }, + { 63, u"¥#,##0;-¥#,##0"_ustr }, + { 64, u"¥#,##0;[RED]-¥#,##0"_ustr }, + { 65, u"¥#,##0.00;-¥#,##0.00"_ustr }, + { 66, u"¥#,##0.00;[RED]-¥#,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_KOREAN[] = { - EXC_NUMFMT_STRING( 14, "YYYY-MM-DD" ), - EXC_NUMFMT_STRING( 15, "DD-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "DD-MMM" ), - EXC_NUMFMT_STRING( 17, "MMM-YY" ), - EXC_NUMFMT_STRING( 22, "YYYY-MM-DD h:mm" ), - EXC_NUMFMT_STRING( 27, "[$-0412]YYYY" UTF8_CJ_YEAR " MM" UTF8_CJ_MON " DD" UTF8_CJ_DAY ), - EXC_NUMFMT_STRING( 28, "[$-0412]MM-DD" ), - EXC_NUMFMT_STRING( 30, "[$-0412]MM-DD-YY" ), - EXC_NUMFMT_STRING( 31, "[$-0412]YYYY" UTF8_KO_YEAR " MM" UTF8_KO_MON " DD" UTF8_KO_DAY ), - EXC_NUMFMT_STRING( 32, "[$-0412]h" UTF8_KO_HOUR " mm" UTF8_KO_MIN ), - EXC_NUMFMT_STRING( 33, "[$-0412]h" UTF8_KO_HOUR " mm" UTF8_KO_MIN " ss" UTF8_KO_SEC ), - EXC_NUMFMT_STRING( 34, "[$-0412]YYYY\"/\"MM\"/\"DD" ), - EXC_NUMFMT_STRING( 35, "[$-0412]YYYY-MM-DD" ), - EXC_NUMFMT_STRING( 63, UTF8_WON "#,##0;-" UTF8_WON "#,##0" ), - EXC_NUMFMT_STRING( 64, UTF8_WON "#,##0;[RED]-" UTF8_WON "#,##0" ), - EXC_NUMFMT_STRING( 65, UTF8_WON "#,##0.00;-" UTF8_WON "#,##0.00" ), - EXC_NUMFMT_STRING( 66, UTF8_WON "#,##0.00;[RED]-" UTF8_WON "#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 14, u"YYYY-MM-DD"_ustr }, + { 15, u"DD-MMM-YY"_ustr }, + { 16, u"DD-MMM"_ustr }, + { 17, u"MMM-YY"_ustr }, + { 22, u"YYYY-MM-DD h:mm"_ustr }, + { 27, u"[$-0412]YYYY年 MM月 DD日"_ustr }, + { 28, u"[$-0412]MM-DD"_ustr }, + { 30, u"[$-0412]MM-DD-YY"_ustr }, + { 31, u"[$-0412]YYYY년 MM월 DD일"_ustr }, + { 32, u"[$-0412]h시 mm분"_ustr }, + { 33, u"[$-0412]h시 mm분 ss초"_ustr }, + { 34, u"[$-0412]YYYY\"/\"MM\"/\"DD"_ustr }, + { 35, u"[$-0412]YYYY-MM-DD"_ustr }, + { 63, u"₩#,##0;-₩#,##0"_ustr }, + { 64, u"₩#,##0;[RED]-₩#,##0"_ustr }, + { 65, u"₩#,##0.00;-₩#,##0.00"_ustr }, + { 66, u"₩#,##0.00;[RED]-₩#,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_CHINESE_SIMPLIFIED[] = { - EXC_NUMFMT_STRING( 14, "YYYY-M-D" ), - EXC_NUMFMT_STRING( 15, "D-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "D-MMM" ), - EXC_NUMFMT_STRING( 17, "MMM-YY" ), - EXC_NUMFMT_STRING( 22, "YYYY-M-D h:mm" ), - EXC_NUMFMT_STRING( 27, "[$-0804]YYYY" UTF8_CJ_YEAR "M" UTF8_CJ_MON ), - EXC_NUMFMT_STRING( 28, "[$-0804]M" UTF8_CJ_MON "D" UTF8_CJ_DAY ), - EXC_NUMFMT_STRING( 30, "[$-0804]M-D-YY" ), - EXC_NUMFMT_STRING( 31, "[$-0804]YYYY" UTF8_CJ_YEAR "M" UTF8_CJ_MON "D" UTF8_CJ_DAY ), - EXC_NUMFMT_STRING( 32, "[$-0804]h" UTF8_CS_HOUR "mm" UTF8_CJ_MIN ), - EXC_NUMFMT_STRING( 33, "[$-0804]h" UTF8_CS_HOUR "mm" UTF8_CJ_MIN "ss" UTF8_CJ_SEC ), - EXC_NUMFMT_STRING( 34, "[$-0804]AM/PMh" UTF8_CS_HOUR "mm" UTF8_CJ_MIN ), - EXC_NUMFMT_STRING( 35, "[$-0804]AM/PMh" UTF8_CS_HOUR "mm" UTF8_CJ_MIN "ss" UTF8_CJ_SEC ), - EXC_NUMFMT_REUSE( 52, 27 ), - EXC_NUMFMT_REUSE( 53, 28 ), - EXC_NUMFMT_STRING( 63, UTF8_YEN_CS "#,##0;-" UTF8_YEN_CS "#,##0" ), - EXC_NUMFMT_STRING( 64, UTF8_YEN_CS "#,##0;[RED]-" UTF8_YEN_CS "#,##0" ), - EXC_NUMFMT_STRING( 65, UTF8_YEN_CS "#,##0.00;-" UTF8_YEN_CS "#,##0.00" ), - EXC_NUMFMT_STRING( 66, UTF8_YEN_CS "#,##0.00;[RED]-" UTF8_YEN_CS "#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 14, u"YYYY-M-D"_ustr }, + { 15, u"D-MMM-YY"_ustr }, + { 16, u"D-MMM"_ustr }, + { 17, u"MMM-YY"_ustr }, + { 22, u"YYYY-M-D h:mm"_ustr }, + { 27, u"[$-0804]YYYY年M月"_ustr }, + { 28, u"[$-0804]M月D日"_ustr }, + { 30, u"[$-0804]M-D-YY"_ustr }, + { 31, u"[$-0804]YYYY年M月D日"_ustr }, + { 32, u"[$-0804]h时mm分"_ustr }, + { 33, u"[$-0804]h时mm分ss秒"_ustr }, + { 34, u"[$-0804]AM/PMh时mm分"_ustr }, + { 35, u"[$-0804]AM/PMh时mm分ss秒"_ustr }, + { 52, 27 }, + { 53, 28 }, + { 63, u"¥#,##0;-¥#,##0"_ustr }, + { 64, u"¥#,##0;[RED]-¥#,##0"_ustr }, + { 65, u"¥#,##0.00;-¥#,##0.00"_ustr }, + { 66, u"¥#,##0.00;[RED]-¥#,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_CHINESE_TRADITIONAL[] = { - EXC_NUMFMT_STRING( 15, "D-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "D-MMM" ), - EXC_NUMFMT_STRING( 17, "MMM-YY" ), - EXC_NUMFMT_STRING( 18, "hh:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "hh:mm:ss AM/PM" ), - EXC_NUMFMT_OFFSET( 20, NF_TIME_HHMM ), - EXC_NUMFMT_OFFSET( 21, NF_TIME_HHMMSS ), - EXC_NUMFMT_STRING( 22, "YYYY/M/D hh:mm" ), - EXC_NUMFMT_STRING( 23, "US$#,##0_);(US$#,##0)" ), - EXC_NUMFMT_STRING( 24, "US$#,##0_);[RED](US$#,##0)" ), - EXC_NUMFMT_STRING( 25, "US$#,##0.00_);(US$#,##0.00)" ), - EXC_NUMFMT_STRING( 26, "US$#,##0.00_);[RED](US$#,##0.00)" ), - EXC_NUMFMT_STRING( 27, "[$-0404]E/M/D" ), - EXC_NUMFMT_STRING( 28, "[$-0404]E" UTF8_CJ_YEAR "M" UTF8_CJ_MON "D" UTF8_CJ_DAY ), - EXC_NUMFMT_STRING( 30, "[$-0404]M/D/YY" ), - EXC_NUMFMT_STRING( 31, "[$-0404]YYYY" UTF8_CJ_YEAR "M" UTF8_CJ_MON "D" UTF8_CJ_DAY ), - EXC_NUMFMT_STRING( 32, "[$-0404]hh" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN ), - EXC_NUMFMT_STRING( 33, "[$-0404]hh" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN "ss" UTF8_CJ_SEC ), - EXC_NUMFMT_STRING( 34, "[$-0404]AM/PMhh" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN ), - EXC_NUMFMT_STRING( 35, "[$-0404]AM/PMhh" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN "ss" UTF8_CJ_SEC ), - EXC_NUMFMT_STRING( 63, "$#,##0;-$#,##0" ), - EXC_NUMFMT_STRING( 64, "$#,##0;[RED]-$#,##0" ), - EXC_NUMFMT_STRING( 65, "$#,##0.00;-$#,##0.00" ), - EXC_NUMFMT_STRING( 66, "$#,##0.00;[RED]-$#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 15, u"D-MMM-YY"_ustr }, + { 16, u"D-MMM"_ustr }, + { 17, u"MMM-YY"_ustr }, + { 18, u"hh:mm AM/PM"_ustr }, + { 19, u"hh:mm:ss AM/PM"_ustr }, + { 20, NF_TIME_HHMM }, + { 21, NF_TIME_HHMMSS }, + { 22, u"YYYY/M/D hh:mm"_ustr }, + { 23, u"US$#,##0_);(US$#,##0)"_ustr }, + { 24, u"US$#,##0_);[RED](US$#,##0)"_ustr }, + { 25, u"US$#,##0.00_);(US$#,##0.00)"_ustr }, + { 26, u"US$#,##0.00_);[RED](US$#,##0.00)"_ustr }, + { 27, u"[$-0404]E/M/D"_ustr }, + { 28, u"[$-0404]E年M月D日"_ustr }, + { 30, u"[$-0404]M/D/YY"_ustr }, + { 31, u"[$-0404]YYYY年M月D日"_ustr }, + { 32, u"[$-0404]hh時mm分"_ustr }, + { 33, u"[$-0404]hh時mm分ss秒"_ustr }, + { 34, u"[$-0404]AM/PMhh時mm分"_ustr }, + { 35, u"[$-0404]AM/PMhh時mm分ss秒"_ustr }, + { 63, u"$#,##0;-$#,##0"_ustr }, + { 64, u"$#,##0;[RED]-$#,##0"_ustr }, + { 65, u"$#,##0.00;-$#,##0.00"_ustr }, + { 66, u"$#,##0.00;[RED]-$#,##0.00"_ustr }, }; // OTHER ---------------------------------------------------------------------- const XclBuiltInFormat spBuiltInFormats_HEBREW[] = { - EXC_NUMFMT_STRING( 15, "DD-MMMM-YY" ), - EXC_NUMFMT_STRING( 16, "DD-MMMM" ), - EXC_NUMFMT_STRING( 17, "MMMM-YY" ), - EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ), - EXC_NUMFMT_STRING( 63, UTF8_SHEQEL " #,##0;" UTF8_SHEQEL " -#,##0" ), - EXC_NUMFMT_STRING( 64, UTF8_SHEQEL " #,##0;[RED]" UTF8_SHEQEL " -#,##0" ), - EXC_NUMFMT_STRING( 65, UTF8_SHEQEL " #,##0.00;" UTF8_SHEQEL " -#,##0.00" ), - EXC_NUMFMT_STRING( 66, UTF8_SHEQEL " #,##0.00;[RED]" UTF8_SHEQEL " -#,##0.00" ), - EXC_NUMFMT_ENDTABLE() + { 15, u"DD-MMMM-YY"_ustr }, + { 16, u"DD-MMMM"_ustr }, + { 17, u"MMMM-YY"_ustr }, + { 18, u"h:mm AM/PM"_ustr }, + { 19, u"h:mm:ss AM/PM"_ustr }, + { 63, u"₪ #,##0;₪ -#,##0"_ustr }, + { 64, u"₪ #,##0;[RED]₪ -#,##0"_ustr }, + { 65, u"₪ #,##0.00;₪ -#,##0.00"_ustr }, + { 66, u"₪ #,##0.00;[RED]₪ -#,##0.00"_ustr }, }; const XclBuiltInFormat spBuiltInFormats_THAI[] = { - EXC_NUMFMT_STRING( 14, "D/M/YYYY" ), - EXC_NUMFMT_STRING( 15, "D-MMM-YY" ), - EXC_NUMFMT_STRING( 16, "D-MMM" ), - EXC_NUMFMT_STRING( 17, "MMM-YY" ), - EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ), - EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ), - EXC_NUMFMT_STRING( 22, "D/M/YYYY h:mm" ), - EXC_NUMFMT_STRING( 59, "t0" ), - EXC_NUMFMT_STRING( 60, "t0.00" ), - EXC_NUMFMT_STRING( 61, "t#,##0" ), - EXC_NUMFMT_STRING( 62, "t#,##0.00" ), - EXC_NUMFMT_STRING( 63, "t" UTF8_BAHT "#,##0_);t(" UTF8_BAHT "#,##0)" ), - EXC_NUMFMT_STRING( 64, "t" UTF8_BAHT "#,##0_);[RED]t(" UTF8_BAHT "#,##0)" ), - EXC_NUMFMT_STRING( 65, "t" UTF8_BAHT "#,##0.00_);t(" UTF8_BAHT "#,##0.00)" ), - EXC_NUMFMT_STRING( 66, "t" UTF8_BAHT "#,##0.00_);[RED]t(" UTF8_BAHT "#,##0.00)" ), - EXC_NUMFMT_STRING( 67, "t0%" ), - EXC_NUMFMT_STRING( 68, "t0.00%" ), - EXC_NUMFMT_STRING( 69, "t# ?/?" ), - EXC_NUMFMT_STRING( 70, "t# ?\?/?\?" ), - EXC_NUMFMT_STRING( 71, "tD/M/EE" ), - EXC_NUMFMT_STRING( 72, "tD-MMM-E" ), - EXC_NUMFMT_STRING( 73, "tD-MMM" ), - EXC_NUMFMT_STRING( 74, "tMMM-E" ), - EXC_NUMFMT_STRING( 75, "th:mm" ), - EXC_NUMFMT_STRING( 76, "th:mm:ss" ), - EXC_NUMFMT_STRING( 77, "tD/M/EE h:mm" ), - EXC_NUMFMT_STRING( 78, "tmm:ss" ), - EXC_NUMFMT_STRING( 79, "t[h]:mm:ss" ), - EXC_NUMFMT_STRING( 80, "tmm:ss.0" ), - EXC_NUMFMT_STRING( 81, "D/M/E" ), - EXC_NUMFMT_ENDTABLE() + { 14, u"D/M/YYYY"_ustr }, + { 15, u"D-MMM-YY"_ustr }, + { 16, u"D-MMM"_ustr }, + { 17, u"MMM-YY"_ustr }, + { 18, u"h:mm AM/PM"_ustr }, + { 19, u"h:mm:ss AM/PM"_ustr }, + { 22, u"D/M/YYYY h:mm"_ustr }, + { 59, u"t0"_ustr }, + { 60, u"t0.00"_ustr }, + { 61, u"t#,##0"_ustr }, + { 62, u"t#,##0.00"_ustr }, + { 63, u"t฿#,##0_);t(฿#,##0)"_ustr }, + { 64, u"t฿#,##0_);[RED]t(฿#,##0)"_ustr }, + { 65, u"t฿#,##0.00_);t(฿#,##0.00)"_ustr }, + { 66, u"t฿#,##0.00_);[RED]t(฿#,##0.00)"_ustr }, + { 67, u"t0%"_ustr }, + { 68, u"t0.00%"_ustr }, + { 69, u"t# ?/?"_ustr }, + { 70, u"t# ?\?/?\?"_ustr }, + { 71, u"tD/M/EE"_ustr }, + { 72, u"tD-MMM-E"_ustr }, + { 73, u"tD-MMM"_ustr }, + { 74, u"tMMM-E"_ustr }, + { 75, u"th:mm"_ustr }, + { 76, u"th:mm:ss"_ustr }, + { 77, u"tD/M/EE h:mm"_ustr }, + { 78, u"tmm:ss"_ustr }, + { 79, u"t[h]:mm:ss"_ustr }, + { 80, u"tmm:ss.0"_ustr }, + { 81, u"D/M/E"_ustr }, }; -#undef EXC_NUMFMT_ENDTABLE -#undef EXC_NUMFMT_REUSE -#undef EXC_NUMFMT_OFFSET -#undef EXC_NUMFMT_STRING - /** Specifies a number format table for a specific language. */ struct XclBuiltInFormatTable { LanguageType meLanguage; /// The language of this table. LanguageType meParentLang; /// The language of the parent table. - const XclBuiltInFormat* mpFormats; /// The number format table. + std::span<const XclBuiltInFormat> maFormats; /// The number format table. }; -const XclBuiltInFormatTable spBuiltInFormatTables[] = +constexpr XclBuiltInFormatTable spBuiltInFormatTables[] = { // language parent language format table { LANGUAGE_DONTKNOW, LANGUAGE_NONE, spBuiltInFormats_DONTKNOW }, @@ -1420,15 +1362,15 @@ const XclBuiltInFormatTable spBuiltInFormatTables[] = { LANGUAGE_ENGLISH_CAN, LANGUAGE_ENGLISH, spBuiltInFormats_ENGLISH_CAN }, { LANGUAGE_ENGLISH_AUS, LANGUAGE_ENGLISH, spBuiltInFormats_ENGLISH_AUS }, { LANGUAGE_ENGLISH_SAFRICA, LANGUAGE_ENGLISH, spBuiltInFormats_ENGLISH_SAFRICA }, - { LANGUAGE_ENGLISH_NZ, LANGUAGE_ENGLISH_AUS, nullptr }, + { LANGUAGE_ENGLISH_NZ, LANGUAGE_ENGLISH_AUS, {} }, { PRV_LANGUAGE_FRENCH_PRIM, LANGUAGE_DONTKNOW, spBuiltInFormats_FRENCH }, { LANGUAGE_FRENCH, PRV_LANGUAGE_FRENCH_PRIM, spBuiltInFormats_FRENCH_FRANCE }, { LANGUAGE_FRENCH_CANADIAN, PRV_LANGUAGE_FRENCH_PRIM, spBuiltInFormats_FRENCH_CANADIAN }, { LANGUAGE_FRENCH_SWISS, PRV_LANGUAGE_FRENCH_PRIM, spBuiltInFormats_FRENCH_SWISS }, { LANGUAGE_FRENCH_BELGIAN, LANGUAGE_FRENCH, spBuiltInFormats_FRENCH_BELGIAN }, - { LANGUAGE_FRENCH_LUXEMBOURG, LANGUAGE_FRENCH, nullptr }, - { LANGUAGE_FRENCH_MONACO, LANGUAGE_FRENCH, nullptr }, + { LANGUAGE_FRENCH_LUXEMBOURG, LANGUAGE_FRENCH, {} }, + { LANGUAGE_FRENCH_MONACO, LANGUAGE_FRENCH, {} }, { PRV_LANGUAGE_GERMAN_PRIM, LANGUAGE_DONTKNOW, spBuiltInFormats_GERMAN }, { LANGUAGE_GERMAN, PRV_LANGUAGE_GERMAN_PRIM, spBuiltInFormats_GERMAN_GERMANY }, @@ -1509,22 +1451,19 @@ void XclNumFmtBuffer::InsertBuiltinFormats() { // put LANGUAGE_SYSTEM for all entries in default table LanguageType eLang = ((*aVIt)->meLanguage == LANGUAGE_DONTKNOW) ? LANGUAGE_SYSTEM : meSysLang; - for( const XclBuiltInFormat* pBuiltIn = (*aVIt)->mpFormats; pBuiltIn && (pBuiltIn->mnXclNumFmt != EXC_FORMAT_NOTFOUND); ++pBuiltIn ) + for (const XclBuiltInFormat& rBuiltIn : (*aVIt)->maFormats) { - XclNumFmt& rNumFmt = maFmtMap[ pBuiltIn->mnXclNumFmt ]; + XclNumFmt& rNumFmt = maFmtMap[rBuiltIn.mnXclNumFmt]; - rNumFmt.meOffset = pBuiltIn->meOffset; + rNumFmt.meOffset = rBuiltIn.meOffset; rNumFmt.meLanguage = eLang; - if( pBuiltIn->mpFormat ) - rNumFmt.maFormat = OUString( pBuiltIn->mpFormat, strlen(pBuiltIn->mpFormat), RTL_TEXTENCODING_UTF8 ); - else - rNumFmt.maFormat.clear(); + rNumFmt.maFormat = rBuiltIn.maFormat; - if( pBuiltIn->meOffset == PRV_NF_INDEX_REUSE ) - aReuseMap[ pBuiltIn->mnXclNumFmt ] = pBuiltIn->mnXclReuseFmt; + if (rBuiltIn.meOffset == PRV_NF_INDEX_REUSE) + aReuseMap[rBuiltIn.mnXclNumFmt] = rBuiltIn.mnXclReuseFmt; else - aReuseMap.erase( pBuiltIn->mnXclNumFmt ); + aReuseMap.erase(rBuiltIn.mnXclNumFmt); } } commit 5a76d9366680dabbc607ac520e741ef8c1c96528 Author: Mike Kaganski <[email protected]> AuthorDate: Mon Nov 3 23:49:42 2025 +0500 Commit: Mike Kaganski <[email protected]> CommitDate: Sat Nov 8 11:34:15 2025 +0100 Simplify NumberFormatsBuffer::insertBuiltinFormats and its structures Change-Id: Ifcab65c1046a9f7f8895c8fb93f8a4e43c6128d2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193614 Reviewed-by: Mike Kaganski <[email protected]> Tested-by: Jenkins diff --git a/sc/source/filter/inc/numberformatsbuffer.hxx b/sc/source/filter/inc/numberformatsbuffer.hxx index bbd0d4fff20f..7f135af95f86 100644 --- a/sc/source/filter/inc/numberformatsbuffer.hxx +++ b/sc/source/filter/inc/numberformatsbuffer.hxx @@ -60,6 +60,10 @@ public: /** Sets the passed format code. */ void setFormatCode( std::u16string_view aFmtCode ); + /** Sets the passed format code. */ + void setFormatCode( + const css::lang::Locale& rLocale, + const OUString& rcFmtCode ); /** Sets the passed format code, encoded in UTF-8. */ void setFormatCode( const css::lang::Locale& rLocale, diff --git a/sc/source/filter/oox/numberformatsbuffer.cxx b/sc/source/filter/oox/numberformatsbuffer.cxx index 4200a24d3782..93f07b659ea1 100644 --- a/sc/source/filter/oox/numberformatsbuffer.cxx +++ b/sc/source/filter/oox/numberformatsbuffer.cxx @@ -60,26 +60,22 @@ namespace { struct BuiltinFormat { sal_Int32 mnNumFmtId; /// Built-in number format index. - const char* mpcFmtCode; /// Format string, UTF-8, may be 0 (mnPredefId is used then). + OUString macFmtCode; /// Format string, may be empty (mnPredefId is used then). sal_Int16 mnPredefId; /// Predefined format index, if mpcFmtCode is 0. sal_Int32 mnReuseId; /// Use this format, if mpcFmtCode is 0 and mnPredefId is -1. }; /** Defines a literal built-in number format. */ #define NUMFMT_STRING( INDEX, FORMATCODE ) \ - { INDEX, FORMATCODE, -1, -1 } + { INDEX, u"" FORMATCODE ""_ustr, -1, -1 } /** Defines a built-in number format that maps to an own predefined format. */ #define NUMFMT_PREDEF( INDEX, PREDEFINED ) \ - { INDEX, nullptr, css::i18n::NumberFormatIndex::PREDEFINED, -1 } + { INDEX, {}, css::i18n::NumberFormatIndex::PREDEFINED, -1 } /** Defines a built-in number format that is the same as the specified in nReuseId. */ #define NUMFMT_REUSE( INDEX, REUSED_INDEX ) \ - { INDEX, nullptr, -1, REUSED_INDEX } - -/** Terminates a built-in number format table. */ -#define NUMFMT_ENDTABLE() \ - { -1, nullptr, -1, -1 } + { INDEX, {}, -1, REUSED_INDEX } /** Defines builtin date and time formats 14...22. @param SYSTEMDATE Complete short system date (for formats 14 and 22). @@ -359,82 +355,82 @@ struct BuiltinFormat NUMFMT_ACCOUNTING_OPEN_NUMBER_SYMBOL_CLOSE( 41, SYMBOL, BLINDS, SPACE ) // currency unit characters -#define UTF8_BAHT "฿" -#define UTF8_COLON "₡" -#define UTF8_CURR_AR_AE "د.إ." -#define UTF8_CURR_AR_BH "د.ب." -#define UTF8_CURR_AR_DZ "د.ج." -#define UTF8_CURR_AR_EG "ج.م." -#define UTF8_CURR_AR_IQ "د.ع." -#define UTF8_CURR_AR_JO "د.ا." -#define UTF8_CURR_AR_KW "د.ك." -#define UTF8_CURR_AR_LB "ل.ل." -#define UTF8_CURR_AR_LY "د.ل." -#define UTF8_CURR_AR_MA "د.م." -#define UTF8_CURR_AR_OM "ر.ع." -#define UTF8_CURR_AR_QA "ر.ق." -#define UTF8_CURR_AR_SA "ر.س." -#define UTF8_CURR_AR_SY "ل.س." -#define UTF8_CURR_AR_TN "د.ت." -#define UTF8_CURR_AR_YE "ر.ي." -#define UTF8_CURR_BN_IN "টা" -#define UTF8_CURR_FA_IR "ريال" -#define UTF8_CURR_GU_IN "રૂ" -#define UTF8_CURR_HI_IN "रु" -#define UTF8_CURR_KN_IN "ರೂ" -#define UTF8_CURR_ML_IN "ക" -#define UTF8_CURR_PA_IN "ਰੁ" -#define UTF8_CURR_TA_IN "ரூ" -#define UTF8_CURR_TE_IN "రూ" -#define UTF8_DONG "₫" -#define UTF8_EURO "€" -#define UTF8_POUND_GB "£" -#define UTF8_RUFIYAA "ރ" -#define UTF8_SHEQEL "₪" -#define UTF8_TUGRUG "₮" -#define UTF8_WON "₩" -#define UTF8_YEN_CN "¥" -#define UTF8_YEN_JP "¥" +#define UTF8_BAHT "฿" +#define UTF8_COLON "₡" +#define UTF8_CURR_AR_AE "د.إ." +#define UTF8_CURR_AR_BH "د.ب." +#define UTF8_CURR_AR_DZ "د.ج." +#define UTF8_CURR_AR_EG "ج.م." +#define UTF8_CURR_AR_IQ "د.ع." +#define UTF8_CURR_AR_JO "د.ا." +#define UTF8_CURR_AR_KW "د.ك." +#define UTF8_CURR_AR_LB "ل.ل." +#define UTF8_CURR_AR_LY "د.ل." +#define UTF8_CURR_AR_MA "د.م." +#define UTF8_CURR_AR_OM "ر.ع." +#define UTF8_CURR_AR_QA "ر.ق." +#define UTF8_CURR_AR_SA "ر.س." +#define UTF8_CURR_AR_SY "ل.س." +#define UTF8_CURR_AR_TN "د.ت." +#define UTF8_CURR_AR_YE "ر.ي." +#define UTF8_CURR_BN_IN "টা" +#define UTF8_CURR_FA_IR "ريال" +#define UTF8_CURR_GU_IN "રૂ" +#define UTF8_CURR_HI_IN "रु" +#define UTF8_CURR_KN_IN "ರೂ" +#define UTF8_CURR_ML_IN "ക" +#define UTF8_CURR_PA_IN "ਰੁ" +#define UTF8_CURR_TA_IN "ரூ" +#define UTF8_CURR_TE_IN "రూ" +#define UTF8_DONG "₫" +#define UTF8_EURO "€" +#define UTF8_POUND_GB "£" +#define UTF8_RUFIYAA "ރ" +#define UTF8_SHEQEL "₪" +#define UTF8_TUGRUG "₮" +#define UTF8_WON "₩" +#define UTF8_YEN_CN "¥" +#define UTF8_YEN_JP "¥" // Unicode characters for currency units -#define UTF8_CCARON_LC "č" -#define UTF8_LSTROKE_LC "ł" +#define UTF8_CCARON_LC "č" +#define UTF8_LSTROKE_LC "ł" // Armenian -#define UTF8_HY_DA_LC "դ" -#define UTF8_HY_REH_LC "ր" +#define UTF8_HY_DA_LC "դ" +#define UTF8_HY_REH_LC "ր" // Cyrillic -#define UTF8_CYR_G_LC "г" -#define UTF8_CYR_L_LC "л" -#define UTF8_CYR_M_LC "м" -#define UTF8_CYR_N_LC "н" -#define UTF8_CYR_O_LC "о" -#define UTF8_CYR_R_LC "р" -#define UTF8_CYR_S_LC "с" -#define UTF8_CYR_W_LC "в" +#define UTF8_CYR_G_LC "г" +#define UTF8_CYR_L_LC "л" +#define UTF8_CYR_M_LC "м" +#define UTF8_CYR_N_LC "н" +#define UTF8_CYR_O_LC "о" +#define UTF8_CYR_R_LC "р" +#define UTF8_CYR_S_LC "с" +#define UTF8_CYR_W_LC "в" // Japanese/Chinese date/time characters -#define UTF8_CJ_YEAR "年" -#define UTF8_CJ_MON "月" -#define UTF8_CJ_DAY "日" -#define UTF8_CJ_HOUR "時" -#define UTF8_CJ_MIN "分" -#define UTF8_CJ_SEC "秒" +#define UTF8_CJ_YEAR "年" +#define UTF8_CJ_MON "月" +#define UTF8_CJ_DAY "日" +#define UTF8_CJ_HOUR "時" +#define UTF8_CJ_MIN "分" +#define UTF8_CJ_SEC "秒" // Chinese Simplified date/time characters -#define UTF8_CS_YEAR "年" -#define UTF8_CS_MON "月" -#define UTF8_CS_DAY "日" -#define UTF8_CS_HOUR "时" -#define UTF8_CS_MIN "分" -#define UTF8_CS_SEC "秒" +#define UTF8_CS_YEAR "年" +#define UTF8_CS_MON "月" +#define UTF8_CS_DAY "日" +#define UTF8_CS_HOUR "时" +#define UTF8_CS_MIN "分" +#define UTF8_CS_SEC "秒" // Korean date/time characters -#define UTF8_KO_YEAR "년" -#define UTF8_KO_MON "월" -#define UTF8_KO_DAY "일" -#define UTF8_KO_HOUR "시" -#define UTF8_KO_MIN "분" -#define UTF8_KO_SEC "초" +#define UTF8_KO_YEAR "년" +#define UTF8_KO_MON "월" +#define UTF8_KO_DAY "일" +#define UTF8_KO_HOUR "시" +#define UTF8_KO_MIN "분" +#define UTF8_KO_SEC "초" /** Default number format table. Last parent of all other tables, used for unknown locales. */ const BuiltinFormat spBuiltinFormats_BASE[] = @@ -528,8 +524,6 @@ const BuiltinFormat spBuiltinFormats_BASE[] = NUMFMT_REUSE( 81, 47 ), // 82...163 not used, must not occur in a file (Excel may crash) - - NUMFMT_ENDTABLE() }; /** Arabic, U.A.E. */ @@ -537,7 +531,6 @@ const BuiltinFormat spBuiltinFormats_ar_AE[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_AE "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Bahrain. */ @@ -545,7 +538,6 @@ const BuiltinFormat spBuiltinFormats_ar_BH[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_BH "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Algeria. */ @@ -553,7 +545,6 @@ const BuiltinFormat spBuiltinFormats_ar_DZ[] = { NUMFMT_ALLDATETIMES( "DD-MM-YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_DZ "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Egypt. */ @@ -561,7 +552,6 @@ const BuiltinFormat spBuiltinFormats_ar_EG[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_EG "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Iraq. */ @@ -569,7 +559,6 @@ const BuiltinFormat spBuiltinFormats_ar_IQ[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_IQ "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Jordan. */ @@ -577,7 +566,6 @@ const BuiltinFormat spBuiltinFormats_ar_JO[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_JO "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Kuwait. */ @@ -585,7 +573,6 @@ const BuiltinFormat spBuiltinFormats_ar_KW[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_KW "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Lebanon. */ @@ -593,7 +580,6 @@ const BuiltinFormat spBuiltinFormats_ar_LB[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_LB "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Libya. */ @@ -601,7 +587,6 @@ const BuiltinFormat spBuiltinFormats_ar_LY[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_LY "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Morocco. */ @@ -609,7 +594,6 @@ const BuiltinFormat spBuiltinFormats_ar_MA[] = { NUMFMT_ALLDATETIMES( "DD-MM-YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_MA "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Oman. */ @@ -617,7 +601,6 @@ const BuiltinFormat spBuiltinFormats_ar_OM[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_OM "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Qatar. */ @@ -625,7 +608,6 @@ const BuiltinFormat spBuiltinFormats_ar_QA[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_QA "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Saudi Arabia. */ @@ -633,7 +615,6 @@ const BuiltinFormat spBuiltinFormats_ar_SA[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_SA "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Syria. */ @@ -641,7 +622,6 @@ const BuiltinFormat spBuiltinFormats_ar_SY[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_SY "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Tunisia. */ @@ -649,7 +629,6 @@ const BuiltinFormat spBuiltinFormats_ar_TN[] = { NUMFMT_ALLDATETIMES( "DD-MM-YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_TN "\"", " " ), - NUMFMT_ENDTABLE() }; /** Arabic, Yemen. */ @@ -657,7 +636,6 @@ const BuiltinFormat spBuiltinFormats_ar_YE[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_AR_YE "\"", " " ), - NUMFMT_ENDTABLE() }; /** Belarusian, Belarus. */ @@ -666,7 +644,6 @@ const BuiltinFormat spBuiltinFormats_be_BY[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"" UTF8_CYR_R_LC ".\"", "_" UTF8_CYR_R_LC "_.", "\ " ), - NUMFMT_ENDTABLE() }; /** Bulgarian, Bulgaria. */ @@ -675,7 +652,6 @@ const BuiltinFormat spBuiltinFormats_bg_BG[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD.M.YYYY", "DD", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"" UTF8_CYR_L_LC UTF8_CYR_W_LC "\"", "_" UTF8_CYR_L_LC "_" UTF8_CYR_W_LC, "\ " ), - NUMFMT_ENDTABLE() }; /** Bengali, India. */ @@ -683,7 +659,6 @@ const BuiltinFormat spBuiltinFormats_bn_IN[] = { NUMFMT_ALLDATETIMES( "DD-MM-YY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"" UTF8_CURR_BN_IN "\"", " " ), - NUMFMT_ENDTABLE() }; /** Czech, Czech Republic. */ @@ -692,7 +667,6 @@ const BuiltinFormat spBuiltinFormats_cs_CZ[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "D.M.YYYY", "D", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"K" UTF8_CCARON_LC "\"", "_K_" UTF8_CCARON_LC, "\ " ), - NUMFMT_ENDTABLE() }; /** Danish, Denmark. */ @@ -700,7 +674,6 @@ const BuiltinFormat spBuiltinFormats_da_DK[] = { NUMFMT_ALLDATETIMES( "DD-MM-YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"kr\"", " " ), - NUMFMT_ENDTABLE() }; /** German, Austria. */ @@ -708,7 +681,6 @@ const BuiltinFormat spBuiltinFormats_de_AT[] = { NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** German, Switzerland. */ @@ -716,7 +688,6 @@ const BuiltinFormat spBuiltinFormats_de_CH[] = { NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ". ", "MMM", " ", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"SFr.\"", " " ), - NUMFMT_ENDTABLE() }; /** German, Germany. */ @@ -724,7 +695,6 @@ const BuiltinFormat spBuiltinFormats_de_DE[] = { NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ". ", "MMM", " ", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** German, Liechtenstein. */ @@ -732,7 +702,6 @@ const BuiltinFormat spBuiltinFormats_de_LI[] = { NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ". ", "MMM", " ", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"CHF\"", " " ), - NUMFMT_ENDTABLE() }; /** German, Luxembourg. */ @@ -740,7 +709,6 @@ const BuiltinFormat spBuiltinFormats_de_LU[] = { NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** Divehi, Maldives. */ @@ -748,7 +716,6 @@ const BuiltinFormat spBuiltinFormats_div_MV[] = { NUMFMT_ALLDATETIMES( "DD/MM/YY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_NUMBER_SYMBOL_MINUS( "\"" UTF8_RUFIYAA ".\"", "_" UTF8_RUFIYAA "_.", " " ), - NUMFMT_ENDTABLE() }; /** Greek, Greece. */ @@ -756,7 +723,6 @@ const BuiltinFormat spBuiltinFormats_el_GR[] = { NUMFMT_ALLDATETIMES( "D/M/YYYY", "D", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** English, Australia. */ @@ -764,7 +730,6 @@ const BuiltinFormat spBuiltinFormats_en_AU[] = { NUMFMT_ALLDATETIMES( "D/MM/YYYY", "D", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( "$", "" ), - NUMFMT_ENDTABLE() }; /** English, Belize. */ @@ -772,7 +737,6 @@ const BuiltinFormat spBuiltinFormats_en_BZ[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"BZ$\"", "" ), - NUMFMT_ENDTABLE() }; /** English, Canada. */ @@ -780,7 +744,6 @@ const BuiltinFormat spBuiltinFormats_en_CA[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( "$", "" ), - NUMFMT_ENDTABLE() }; /** English, Caribbean. */ @@ -788,7 +751,6 @@ const BuiltinFormat spBuiltinFormats_en_CB[] = { NUMFMT_ALLDATETIMES( "MM/DD/YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( "$", "" ), - NUMFMT_ENDTABLE() }; /** English, United Kingdom. */ @@ -796,7 +758,6 @@ const BuiltinFormat spBuiltinFormats_en_GB[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( UTF8_POUND_GB, "" ), - NUMFMT_ENDTABLE() }; /** English, Ireland. */ @@ -804,7 +765,6 @@ const BuiltinFormat spBuiltinFormats_en_IE[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( UTF8_EURO, "" ), - NUMFMT_ENDTABLE() }; /** English, Jamaica. */ @@ -812,7 +772,6 @@ const BuiltinFormat spBuiltinFormats_en_JM[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( "\"J$\"", "" ), - NUMFMT_ENDTABLE() }; /** English, New Zealand. */ @@ -820,7 +779,6 @@ const BuiltinFormat spBuiltinFormats_en_NZ[] = { NUMFMT_ALLDATETIMES( "D/MM/YYYY", "D", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( "$", "" ), - NUMFMT_ENDTABLE() }; /** English, Philippines. */ @@ -828,7 +786,6 @@ const BuiltinFormat spBuiltinFormats_en_PH[] = { NUMFMT_ALLDATETIMES( "M/D/YYYY", "D", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"Php\"", "" ), - NUMFMT_ENDTABLE() }; /** English, Trinidad and Tobago. */ @@ -836,7 +793,6 @@ const BuiltinFormat spBuiltinFormats_en_TT[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"TT$\"", "" ), - NUMFMT_ENDTABLE() }; /** English, USA. */ @@ -844,7 +800,6 @@ const BuiltinFormat spBuiltinFormats_en_US[] = { NUMFMT_ALLDATETIMES( "M/D/YYYY", "D", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "$", "" ), - NUMFMT_ENDTABLE() }; /** English, South Africa. */ @@ -852,7 +807,6 @@ const BuiltinFormat spBuiltinFormats_en_ZA[] = { NUMFMT_ALLDATETIMES( "YYYY/MM/DD", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\R", " " ), - NUMFMT_ENDTABLE() }; /** English, Zimbabwe. */ @@ -860,7 +814,6 @@ const BuiltinFormat spBuiltinFormats_en_ZW[] = { NUMFMT_ALLDATETIMES( "M/D/YYYY", "D", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"Z$\"", "" ), - NUMFMT_ENDTABLE() }; /** Spanish, Argentina. */ @@ -868,7 +821,6 @@ const BuiltinFormat spBuiltinFormats_es_AR[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "$", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Bolivia. */ @@ -877,7 +829,6 @@ const BuiltinFormat spBuiltinFormats_es_BO[] = // slashes must be quoted to prevent conversion to minus NUMFMT_ALLDATETIMES( "DD\/MM\/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"$b\"", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Chile. */ @@ -885,7 +836,6 @@ const BuiltinFormat spBuiltinFormats_es_CL[] = { NUMFMT_ALLDATETIMES( "DD-MM-YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( "$", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Colombia. */ @@ -893,7 +843,6 @@ const BuiltinFormat spBuiltinFormats_es_CO[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "$", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Costa Rica. */ @@ -901,7 +850,6 @@ const BuiltinFormat spBuiltinFormats_es_CR[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( UTF8_COLON, "" ), - NUMFMT_ENDTABLE() }; /** Spanish, Dominican Republic. */ @@ -909,7 +857,6 @@ const BuiltinFormat spBuiltinFormats_es_DO[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"RD$\"", "" ), - NUMFMT_ENDTABLE() }; /** Spanish, Ecuador. */ @@ -917,7 +864,6 @@ const BuiltinFormat spBuiltinFormats_es_EC[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "$", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Spain. */ @@ -925,7 +871,6 @@ const BuiltinFormat spBuiltinFormats_es_ES[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Guatemala. */ @@ -933,7 +878,6 @@ const BuiltinFormat spBuiltinFormats_es_GT[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\Q", "" ), - NUMFMT_ENDTABLE() }; /** Spanish, Honduras. */ @@ -942,7 +886,6 @@ const BuiltinFormat spBuiltinFormats_es_HN[] = // slashes must be quoted to prevent conversion to minus NUMFMT_ALLDATETIMES( "DD\/MM\/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"L.\"", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Mexico. */ @@ -950,7 +893,6 @@ const BuiltinFormat spBuiltinFormats_es_MX[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( "$", "" ), - NUMFMT_ENDTABLE() }; /** Spanish, Nicaragua. */ @@ -959,7 +901,6 @@ const BuiltinFormat spBuiltinFormats_es_NI[] = // slashes must be quoted to prevent conversion to minus NUMFMT_ALLDATETIMES( "DD\/MM\/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"C$\"", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Panama. */ @@ -967,7 +908,6 @@ const BuiltinFormat spBuiltinFormats_es_PA[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"B/.\"", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Peru. */ @@ -975,7 +915,6 @@ const BuiltinFormat spBuiltinFormats_es_PE[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"S/.\"", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Puerto Rico. */ @@ -984,7 +923,6 @@ const BuiltinFormat spBuiltinFormats_es_PR[] = // slashes must be quoted to prevent conversion to minus NUMFMT_ALLDATETIMES( "DD\/MM\/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "$", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Paraguay. */ @@ -992,7 +930,6 @@ const BuiltinFormat spBuiltinFormats_es_PY[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"Gs\"", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, El Salvador. */ @@ -1001,7 +938,6 @@ const BuiltinFormat spBuiltinFormats_es_SV[] = // slashes must be quoted to prevent conversion to minus NUMFMT_ALLDATETIMES( "DD\/MM\/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "$", "" ), - NUMFMT_ENDTABLE() }; /** Spanish, Uruguay. */ @@ -1009,7 +945,6 @@ const BuiltinFormat spBuiltinFormats_es_UY[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"$U\"", " " ), - NUMFMT_ENDTABLE() }; /** Spanish, Venezuela. */ @@ -1017,7 +952,6 @@ const BuiltinFormat spBuiltinFormats_es_VE[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "Bs", " " ), - NUMFMT_ENDTABLE() }; /** Estonian, Estonia. */ @@ -1026,7 +960,6 @@ const BuiltinFormat spBuiltinFormats_et_EE[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "D.MM.YYYY", "D", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"kr\"", "_k_r", "\ " ), - NUMFMT_ENDTABLE() }; /** Farsi, Iran. */ @@ -1034,7 +967,6 @@ const BuiltinFormat spBuiltinFormats_fa_IR[] = { NUMFMT_ALLDATETIMES( "YYYY/MM/DD", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"" UTF8_CURR_FA_IR "\"", " " ), - NUMFMT_ENDTABLE() }; /** Finnish, Finland. */ @@ -1045,7 +977,6 @@ const BuiltinFormat spBuiltinFormats_fi_FI[] = NUMFMT_STRING( 10, "0.00\ %" ), NUMFMT_ALLDATETIMES( "D.M.YYYY", "D", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, "\ " ), - NUMFMT_ENDTABLE() }; /** Faroese, Faroe Islands. */ @@ -1053,7 +984,6 @@ const BuiltinFormat spBuiltinFormats_fo_FO[] = { NUMFMT_ALLDATETIMES( "DD-MM-YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"kr\"", " " ), - NUMFMT_ENDTABLE() }; /** French, Belgium. */ @@ -1061,7 +991,6 @@ const BuiltinFormat spBuiltinFormats_fr_BE[] = { NUMFMT_ALLDATETIMES( "D/MM/YYYY", "D", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** French, Canada. */ @@ -1070,7 +999,6 @@ const BuiltinFormat spBuiltinFormats_fr_CA[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "YYYY-MM-DD", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_NUMBER_SYMBOL_CLOSE( "$", "_$", "\ " ), - NUMFMT_ENDTABLE() }; /** French, Switzerland. */ @@ -1078,7 +1006,6 @@ const BuiltinFormat spBuiltinFormats_fr_CH[] = { NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"SFr.\"", " " ), - NUMFMT_ENDTABLE() }; /** French, France. */ @@ -1087,7 +1014,6 @@ const BuiltinFormat spBuiltinFormats_fr_FR[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, "\ " ), - NUMFMT_ENDTABLE() }; /** French, Luxembourg. */ @@ -1096,7 +1022,6 @@ const BuiltinFormat spBuiltinFormats_fr_LU[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, "\ " ), - NUMFMT_ENDTABLE() }; /** French, Monaco. */ @@ -1105,7 +1030,6 @@ const BuiltinFormat spBuiltinFormats_fr_MC[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, "\ " ), - NUMFMT_ENDTABLE() }; /** Galizian, Spain. */ @@ -1113,7 +1037,6 @@ const BuiltinFormat spBuiltinFormats_gl_ES[] = { NUMFMT_ALLDATETIMES( "DD/MM/YY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** Gujarati, India. */ @@ -1121,7 +1044,6 @@ const BuiltinFormat spBuiltinFormats_gu_IN[] = { NUMFMT_ALLDATETIMES( "DD-MM-YY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"" UTF8_CURR_GU_IN "\"", " " ), - NUMFMT_ENDTABLE() }; /** Hebrew, Israel. */ @@ -1129,7 +1051,6 @@ const BuiltinFormat spBuiltinFormats_he_IL[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( UTF8_SHEQEL, " " ), - NUMFMT_ENDTABLE() }; /** Hindi, India. */ @@ -1137,7 +1058,6 @@ const BuiltinFormat spBuiltinFormats_hi_IN[] = { NUMFMT_ALLDATETIMES( "DD-MM-YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"" UTF8_CURR_HI_IN "\"", " " ), - NUMFMT_ENDTABLE() }; /** Croatian, Bosnia and Herzegowina. */ @@ -1145,7 +1065,6 @@ const BuiltinFormat spBuiltinFormats_hr_BA[] = { NUMFMT_ALLDATETIMES( "D.M.YYYY", "D", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"KM\"", "_K_M", " " ), - NUMFMT_ENDTABLE() }; /** Croatian, Croatia. */ @@ -1153,7 +1072,6 @@ const BuiltinFormat spBuiltinFormats_hr_HR[] = { NUMFMT_ALLDATETIMES( "D.M.YYYY", "D", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"kn\"", "_k_n", " " ), - NUMFMT_ENDTABLE() }; /** Hungarian, Hungary. */ @@ -1163,7 +1081,6 @@ const BuiltinFormat spBuiltinFormats_hu_HU[] = // MMM is rendered differently in Calc and Excel (see #i41488#) NUMFMT_ALLDATETIMES( "YYYY.MM.DD", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"Ft\"", "_F_t", "\ " ), - NUMFMT_ENDTABLE() }; /** Armenian, Armenia. */ @@ -1171,7 +1088,6 @@ const BuiltinFormat spBuiltinFormats_hy_AM[] = { NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"" UTF8_HY_DA_LC UTF8_HY_REH_LC ".\"", "_" UTF8_HY_DA_LC "_" UTF8_HY_REH_LC "_.", " " ), - NUMFMT_ENDTABLE() }; /** Indonesian, Indonesia. */ @@ -1179,7 +1095,6 @@ const BuiltinFormat spBuiltinFormats_id_ID[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"Rp\"", "" ), - NUMFMT_ENDTABLE() }; /** Icelandic, Iceland. */ @@ -1187,7 +1102,6 @@ const BuiltinFormat spBuiltinFormats_is_IS[] = { NUMFMT_ALLDATETIMES( "D.M.YYYY", "D", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"kr.\"", "_k_r_.", " " ), - NUMFMT_ENDTABLE() }; /** Italian, Switzerland. */ @@ -1195,7 +1109,6 @@ const BuiltinFormat spBuiltinFormats_it_CH[] = { NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"SFr.\"", " " ), - NUMFMT_ENDTABLE() }; /** Italian, Italy. */ @@ -1203,7 +1116,6 @@ const BuiltinFormat spBuiltinFormats_it_IT[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** Georgian, Georgia. */ @@ -1212,7 +1124,6 @@ const BuiltinFormat spBuiltinFormats_ka_GE[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"Lari\"", "_L_a_r_i", "\ " ), - NUMFMT_ENDTABLE() }; /** Kazakh, Kazakhstan. */ @@ -1221,7 +1132,6 @@ const BuiltinFormat spBuiltinFormats_kk_KZ[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( "\T", "" ), - NUMFMT_ENDTABLE() }; /** Kannada, India. */ @@ -1229,7 +1139,6 @@ const BuiltinFormat spBuiltinFormats_kn_IN[] = { NUMFMT_ALLDATETIMES( "DD-MM-YY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"" UTF8_CURR_KN_IN "\"", " " ), - NUMFMT_ENDTABLE() }; /** Kyrgyz, Kyrgyzstan. */ @@ -1238,7 +1147,6 @@ const BuiltinFormat spBuiltinFormats_ky_KG[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD.MM.YY", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"" UTF8_CYR_S_LC UTF8_CYR_O_LC UTF8_CYR_M_LC "\"", "_" UTF8_CYR_S_LC "_" UTF8_CYR_O_LC "_" UTF8_CYR_M_LC, "\ " ), - NUMFMT_ENDTABLE() }; /** Lithuanian, Lithuania. */ @@ -1246,7 +1154,6 @@ const BuiltinFormat spBuiltinFormats_lt_LT[] = { NUMFMT_ALLDATETIMES( "YYYY.MM.DD", "DD", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"Lt\"", "_L_t", " " ), - NUMFMT_ENDTABLE() }; /** Latvian, Latvia. */ @@ -1255,7 +1162,6 @@ const BuiltinFormat spBuiltinFormats_lv_LV[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "YYYY.MM.DD", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( "\"Ls\"", "\ " ), - NUMFMT_ENDTABLE() }; /** Malayalam, India. */ @@ -1263,7 +1169,6 @@ const BuiltinFormat spBuiltinFormats_ml_IN[] = { NUMFMT_ALLDATETIMES( "DD-MM-YY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"" UTF8_CURR_ML_IN "\"", " " ), - NUMFMT_ENDTABLE() }; /** Mongolian, Mongolia. */ @@ -1271,7 +1176,6 @@ const BuiltinFormat spBuiltinFormats_mn_MN[] = { NUMFMT_ALLDATETIMES( "YY.MM.DD", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_TUGRUG, "_" UTF8_TUGRUG, "" ), - NUMFMT_ENDTABLE() }; /** Malay, Brunei Darussalam. */ @@ -1279,7 +1183,6 @@ const BuiltinFormat spBuiltinFormats_ms_BN[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "$", "" ), - NUMFMT_ENDTABLE() }; /** Malay, Malaysia. */ @@ -1287,7 +1190,6 @@ const BuiltinFormat spBuiltinFormats_ms_MY[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\R", "" ), - NUMFMT_ENDTABLE() }; /** Maltese, Malta. */ @@ -1295,7 +1197,6 @@ const BuiltinFormat spBuiltinFormats_mt_MT[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_SYMBOL_NUMBER( "\"Lm\"", "" ), - NUMFMT_ENDTABLE() }; /** Dutch, Belgium. */ @@ -1304,7 +1205,6 @@ const BuiltinFormat spBuiltinFormats_nl_BE[] = // slashes must be quoted to prevent conversion to minus NUMFMT_ALLDATETIMES( "D\/MM\/YYYY", "D", "\/", "MMM", "\/", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** Dutch, Netherlands. */ @@ -1312,7 +1212,6 @@ const BuiltinFormat spBuiltinFormats_nl_NL[] = { NUMFMT_ALLDATETIMES( "D-M-YYYY", "D", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** Norwegian (Bokmal and Nynorsk), Norway. */ @@ -1321,7 +1220,6 @@ const BuiltinFormat spBuiltinFormats_no_NO[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"kr\"", "\ " ), - NUMFMT_ENDTABLE() }; /** Punjabi, India. */ @@ -1329,7 +1227,6 @@ const BuiltinFormat spBuiltinFormats_pa_IN[] = { NUMFMT_ALLDATETIMES( "DD-MM-YY", "DD", "-", "MMM", "-", "YY", "hh", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"" UTF8_CURR_PA_IN "\"", " " ), - NUMFMT_ENDTABLE() }; /** Polish, Poland. */ @@ -1339,7 +1236,6 @@ const BuiltinFormat spBuiltinFormats_pl_PL[] = // MMM is rendered differently in Calc and Excel (see #i72300#) NUMFMT_ALLDATETIMES( "YYYY-MM-DD", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"z" UTF8_LSTROKE_LC "\"", "_z_" UTF8_LSTROKE_LC, "\ " ), - NUMFMT_ENDTABLE() }; /** Portuguese, Brazil. */ @@ -1347,7 +1243,6 @@ const BuiltinFormat spBuiltinFormats_pt_BR[] = { NUMFMT_ALLDATETIMES( "D/M/YYYY", "D", "/", "MMM", "/", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\"R$\"", " " ), - NUMFMT_ENDTABLE() }; /** Portuguese, Portugal. */ @@ -1355,7 +1250,6 @@ const BuiltinFormat spBuiltinFormats_pt_PT[] = { NUMFMT_ALLDATETIMES( "DD-MM-YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, " " ), - NUMFMT_ENDTABLE() }; /** Romanian, Romania. */ @@ -1364,7 +1258,6 @@ const BuiltinFormat spBuiltinFormats_ro_RO[] = // space character is group separator, literal spaces must be quoted (but see #i75367#) NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"lei\"", "_l_e_i", "\ " ), - NUMFMT_ENDTABLE() }; /** Russian, Russian Federation. */ @@ -1373,7 +1266,6 @@ const BuiltinFormat spBuiltinFormats_ru_RU[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"" UTF8_CYR_R_LC ".\"", "_" UTF8_CYR_R_LC "_.", "" ), - NUMFMT_ENDTABLE() }; /** Slovak, Slovakia. */ @@ -1382,7 +1274,6 @@ const BuiltinFormat spBuiltinFormats_sk_SK[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "D.M.YYYY", "D", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"Sk\"", "_S_k", "\ " ), - NUMFMT_ENDTABLE() }; /** Slovenian, Slovenia. */ @@ -1390,7 +1281,6 @@ const BuiltinFormat spBuiltinFormats_sl_SI[] = { NUMFMT_ALLDATETIMES( "D.M.YYYY", "D", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"SIT\"", "_S_I_T", " " ), - NUMFMT_ENDTABLE() }; /** Swedish, Finland. */ @@ -1401,7 +1291,6 @@ const BuiltinFormat spBuiltinFormats_sv_FI[] = NUMFMT_STRING( 10, "0.00\ %" ), NUMFMT_ALLDATETIMES( "D.M.YYYY", "D", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_EURO, "_" UTF8_EURO, "\ " ), - NUMFMT_ENDTABLE() }; /** Swedish, Sweden. */ @@ -1410,7 +1299,6 @@ const BuiltinFormat spBuiltinFormats_sv_SE[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "YYYY-MM-DD", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"kr\"", "_k_r", "\ " ), - NUMFMT_ENDTABLE() }; /** Swahili, Tanzania. */ @@ -1418,7 +1306,6 @@ const BuiltinFormat spBuiltinFormats_sw_TZ[] = { NUMFMT_ALLDATETIMES( "M/D/YYYY", "D", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_OPEN_SYMBOL_NUMBER_CLOSE( "\S", "" ), - NUMFMT_ENDTABLE() }; /** Tamil, India. */ @@ -1426,7 +1313,6 @@ const BuiltinFormat spBuiltinFormats_ta_IN[] = { NUMFMT_ALLDATETIMES( "DD-MM-YYYY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"" UTF8_CURR_TA_IN "\"", " " ), - NUMFMT_ENDTABLE() }; /** Telugu, India. */ @@ -1434,7 +1320,6 @@ const BuiltinFormat spBuiltinFormats_te_IN[] = { NUMFMT_ALLDATETIMES( "DD-MM-YY", "DD", "-", "MMM", "-", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_SYMBOL_MINUS_NUMBER( "\"" UTF8_CURR_TE_IN "\"", " " ), - NUMFMT_ENDTABLE() }; /** Thai, Thailand. */ @@ -1462,7 +1347,6 @@ const BuiltinFormat spBuiltinFormats_th_TH[] = NUMFMT_STRING( 79, "t[h]:mm:ss" ), NUMFMT_STRING( 80, "tmm:ss.0" ), NUMFMT_STRING( 81, "D/M/E" ), - NUMFMT_ENDTABLE() }; /** Turkish, Turkey. */ @@ -1470,7 +1354,6 @@ const BuiltinFormat spBuiltinFormats_tr_TR[] = { NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "hh" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"TL\"", "_T_L", " " ), - NUMFMT_ENDTABLE() }; /** Tatar, Russian Federation. */ @@ -1479,7 +1362,6 @@ const BuiltinFormat spBuiltinFormats_tt_RU[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"" UTF8_CYR_R_LC ".\"", "_" UTF8_CYR_R_LC "_.", "\ " ), - NUMFMT_ENDTABLE() }; /** Ukrainian, Ukraine. */ @@ -1488,7 +1370,6 @@ const BuiltinFormat spBuiltinFormats_uk_UA[] = // space character is group separator, literal spaces must be quoted NUMFMT_ALLDATETIMES( "DD.MM.YYYY", "DD", ".", "MMM", ".", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( "\"" UTF8_CYR_G_LC UTF8_CYR_R_LC UTF8_CYR_N_LC ".\"", "_" UTF8_CYR_G_LC "_" UTF8_CYR_R_LC "_" UTF8_CYR_N_LC "_.", "\ " ), - NUMFMT_ENDTABLE() }; /** Urdu, Pakistan. */ @@ -1496,7 +1377,6 @@ const BuiltinFormat spBuiltinFormats_ur_PK[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_SYMBOL_NUMBER_MINUS( "\"Rs\"", "" ), - NUMFMT_ENDTABLE() }; /** Vietnamese, Viet Nam. */ @@ -1504,7 +1384,6 @@ const BuiltinFormat spBuiltinFormats_vi_VN[] = { NUMFMT_ALLDATETIMES( "DD/MM/YYYY", "DD", "-", "MMM", "-", "YY", "h", "h" ), NUMFMT_ALLCURRENCIES_MINUS_NUMBER_SYMBOL( UTF8_DONG, "_" UTF8_DONG, " " ), - NUMFMT_ENDTABLE() }; // CJK ------------------------------------------------------------------------ @@ -1523,7 +1402,6 @@ const BuiltinFormat spBuiltinFormats_CJK[] = NUMFMT_REUSE( 56, 35 ), NUMFMT_REUSE( 57, 27 ), NUMFMT_REUSE( 58, 28 ), - NUMFMT_ENDTABLE() }; /** Japanese, Japan. */ @@ -1539,7 +1417,6 @@ const BuiltinFormat spBuiltinFormats_ja_JP[] = NUMFMT_TIME_CJK( 32, "h", UTF8_CJ_HOUR, UTF8_CJ_MIN, UTF8_CJ_SEC ), NUMFMT_STRING( 34, "YYYY\"" UTF8_CJ_YEAR "\"MM\"" UTF8_CJ_MON "\"" ), NUMFMT_STRING( 35, "MM\"" UTF8_CJ_MON "\"DD\"" UTF8_CJ_DAY "\"" ), - NUMFMT_ENDTABLE() }; /** Korean, South Korea. */ @@ -1556,7 +1433,6 @@ const BuiltinFormat spBuiltinFormats_ko_KR[] = // slashes must be quoted to prevent conversion to minus NUMFMT_STRING( 34, "YYYY\/MM\/DD" ), NUMFMT_REUSE( 35, 14 ), - NUMFMT_ENDTABLE() }; /** Chinese, China. */ @@ -1572,7 +1448,6 @@ const BuiltinFormat spBuiltinFormats_zh_CN[] = NUMFMT_STRING( 31, "YYYY\"" UTF8_CS_YEAR "\"M\"" UTF8_CS_MON "\"D\"" UTF8_CS_DAY "\"" ), NUMFMT_REUSE( 52, 27 ), NUMFMT_REUSE( 53, 28 ), - NUMFMT_ENDTABLE() }; /** Chinese, Hong Kong. */ @@ -1586,7 +1461,6 @@ const BuiltinFormat spBuiltinFormats_zh_HK[] = NUMFMT_STRING( 28, "[$-404]D\"" UTF8_CJ_DAY "\"M\"" UTF8_CJ_MON "\"E\"" UTF8_CJ_YEAR "\"" ), NUMFMT_STRING( 30, "M/D/YY" ), NUMFMT_STRING( 31, "D\"" UTF8_CJ_DAY "\"M\"" UTF8_CJ_MON "\"YYYY\"" UTF8_CJ_YEAR "\"" ), - NUMFMT_ENDTABLE() }; /** Chinese, Macau. */ @@ -1600,7 +1474,6 @@ const BuiltinFormat spBuiltinFormats_zh_MO[] = NUMFMT_STRING( 28, "[$-404]D\"" UTF8_CJ_DAY "\"M\"" UTF8_CJ_MON "\"E\"" UTF8_CJ_YEAR "\"" ), NUMFMT_STRING( 30, "M/D/YY" ), NUMFMT_STRING( 31, "D\"" UTF8_CJ_DAY "\"M\"" UTF8_CJ_MON "\"YYYY\"" UTF8_CJ_YEAR "\"" ), - NUMFMT_ENDTABLE() }; /** Chinese, Singapore. */ @@ -1614,7 +1487,6 @@ const BuiltinFormat spBuiltinFormats_zh_SG[] = NUMFMT_STRING( 28, "M\"" UTF8_CS_MON "\"D\"" UTF8_CS_DAY "\"" ), NUMFMT_STRING( 30, "M/D/YY" ), NUMFMT_STRING( 31, "D\"" UTF8_CS_DAY "\"M\"" UTF8_CS_MON "\"YYYY\"" UTF8_CS_YEAR "\"" ), - NUMFMT_ENDTABLE() }; /** Chinese, Taiwan. */ @@ -1628,164 +1500,163 @@ const BuiltinFormat spBuiltinFormats_zh_TW[] = NUMFMT_STRING( 28, "[$-404]E\"" UTF8_CJ_YEAR "\"M\"" UTF8_CJ_MON "\"D\"" UTF8_CJ_DAY "\"" ), NUMFMT_STRING( 30, "M/D/YY" ), NUMFMT_STRING( 31, "YYYY\"" UTF8_CJ_YEAR "\"M\"" UTF8_CJ_MON "\"D\"" UTF8_CJ_DAY "\"" ), - NUMFMT_ENDTABLE() }; /** Specifies a built-in number format table for a specific locale. */ struct BuiltinFormatTable { - const char* mpcLocale; /// The locale for this table. - const char* mpcParent; /// The locale of the parent table. - const BuiltinFormat* mpFormats; /// The number format table (may be 0, if equal to parent). + OUString macLocale; /// The locale for this table. + OUString macParent; /// The locale of the parent table. + std::span<const BuiltinFormat> maFormats; /// The number format table (may be 0, if equal to parent). }; -const BuiltinFormatTable spBuiltinFormatTables[] = +constexpr BuiltinFormatTable spBuiltinFormatTables[] = { // locale parent format table - { "*", "", spBuiltinFormats_BASE }, // Base table - { "af-ZA", "*", spBuiltinFormats_en_ZA }, // Afrikaans, South Africa - { "ar-AE", "*", spBuiltinFormats_ar_AE }, // Arabic, U.A.E. - { "ar-BH", "*", spBuiltinFormats_ar_BH }, // Arabic, Bahrain - { "ar-DZ", "*", spBuiltinFormats_ar_DZ }, // Arabic, Algeria - { "ar-EG", "*", spBuiltinFormats_ar_EG }, // Arabic, Egypt - { "ar-IQ", "*", spBuiltinFormats_ar_IQ }, // Arabic, Iraq - { "ar-JO", "*", spBuiltinFormats_ar_JO }, // Arabic, Jordan - { "ar-KW", "*", spBuiltinFormats_ar_KW }, // Arabic, Kuwait - { "ar-LB", "*", spBuiltinFormats_ar_LB }, // Arabic, Lebanon -e ... etc. - the rest is truncated
