diff options
Diffstat (limited to 'svl/source/numbers/zforlist.cxx')
-rw-r--r-- | svl/source/numbers/zforlist.cxx | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index 7243d0f7105c..1e7738caaf20 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -93,11 +93,14 @@ using namespace ::std; static_assert( ZF_STANDARD_TEXT == NF_STANDARD_FORMAT_TEXT, "definition mismatch" ); +static_assert( NF_INDEX_TABLE_RESERVED_START == i18npool::nStopPredefinedFormatIndex, + "NfIndexTableOffset does not match i18npool's locale data predefined format code index bounds."); + static_assert( NF_INDEX_TABLE_ENTRIES <= i18npool::nFirstFreeFormatIndex, "NfIndexTableOffset crosses i18npool's locale data reserved format code index bounds.\n" "You will need to adapt all locale data files defining index values " "(formatIndex=\"...\") in that range and increment those and when done " - "adjust nFirstFreeFormatIndex in i18npool/reservedconstants.hxx"); + "adjust nFirstFreeFormatIndex in include/i18npool/reservedconstants.hxx"); /* Locale that is set if an unknown locale (from another system) is loaded of * legacy documents. Can not be SYSTEM because else, for example, a German "DM" @@ -156,6 +159,7 @@ static sal_uInt32 const indexTable[NF_INDEX_TABLE_ENTRIES] = { ZF_STANDARD_DATETIME + 1, // NF_DATETIME_SYS_DDMMYYYY_HHMMSS ZF_STANDARD_LOGICAL, // NF_BOOLEAN ZF_STANDARD_TEXT, // NF_TEXT + ZF_STANDARD_DATETIME + 4, // NF_DATETIME_SYS_DDMMYYYY_HHMM ZF_STANDARD_FRACTION + 2, // NF_FRACTION_3D ZF_STANDARD_FRACTION + 3, // NF_FRACTION_2 ZF_STANDARD_FRACTION + 4, // NF_FRACTION_4 @@ -1954,15 +1958,15 @@ SvNumberformat* SvNumberFormatter::ImpInsertFormat( const css::i18n::NumberForma sal_uInt32 nPos, bool bAfterChangingSystemCL, sal_Int16 nOrgIndex ) { - SAL_WARN_IF( NF_INDEX_TABLE_LOCALE_DATA_DEFAULTS <= rCode.Index && rCode.Index < NF_INDEX_TABLE_ENTRIES, + SAL_WARN_IF( NF_INDEX_TABLE_RESERVED_START <= rCode.Index && rCode.Index < NF_INDEX_TABLE_ENTRIES, "svl.numbers", "i18npool locale '" << maLanguageTag.getBcp47() << "' uses reserved formatIndex value " << rCode.Index << ", next free: " << NF_INDEX_TABLE_ENTRIES << " Please see description in include/svl/zforlist.hxx at end of enum NfIndexTableOffset"); - assert( (rCode.Index < NF_INDEX_TABLE_LOCALE_DATA_DEFAULTS || NF_INDEX_TABLE_ENTRIES <= rCode.Index) && + assert( (rCode.Index < NF_INDEX_TABLE_RESERVED_START || NF_INDEX_TABLE_ENTRIES <= rCode.Index) && "reserved formatIndex, see warning above"); OUString aCodeStr( rCode.Code ); - if ( rCode.Index < NF_INDEX_TABLE_LOCALE_DATA_DEFAULTS && + if ( rCode.Index < NF_INDEX_TABLE_RESERVED_START && rCode.Usage == css::i18n::KNumberFormatUsage::CURRENCY && rCode.Index != NF_CURRENCY_1000DEC2_CCC ) { // strip surrounding [$...] on automatic currency @@ -1999,7 +2003,7 @@ SvNumberformat* SvNumberFormatter::ImpInsertFormat( const css::i18n::NumberForma } return nullptr; } - if ( rCode.Index >= NF_INDEX_TABLE_LOCALE_DATA_DEFAULTS ) + if ( rCode.Index >= NF_INDEX_TABLE_RESERVED_START ) { sal_uInt32 nCLOffset = nPos - (nPos % SV_COUNTRY_LANGUAGE_OFFSET); sal_uInt32 nKey = ImpIsEntry( aCodeStr, nCLOffset, ActLnge ); @@ -2717,6 +2721,11 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditio ImpInsertFormat( aFormatSeq[nIdx], CLOffset + ZF_STANDARD_DATETIME+1 /* NF_DATETIME_SYS_DDMMYYYY_HHMMSS */ ); + // DD.MM.YYYY HH:MM System + nIdx = ImpGetFormatCodeIndex( aFormatSeq, NF_DATETIME_SYS_DDMMYYYY_HHMM ); + ImpInsertFormat( aFormatSeq[nIdx], + CLOffset + ZF_STANDARD_DATETIME+4 /* NF_DATETIME_SYS_DDMMYYYY_HHMM */ ); + const NfKeywordTable & rKeyword = pFormatScanner->GetKeywords(); i18n::NumberFormatCode aSingleFormatCode; aSingleFormatCode.Usage = i18n::KNumberFormatUsage::DATE_TIME; @@ -2855,7 +2864,7 @@ void SvNumberFormatter::ImpGenerateAdditionalFormats( sal_uInt32 CLOffset, SAL_WARN( "svl.numbers", "ImpGenerateAdditionalFormats: too many formats" ); break; // for } - if ( rFormat.Index < NF_INDEX_TABLE_LOCALE_DATA_DEFAULTS && + if ( rFormat.Index < NF_INDEX_TABLE_RESERVED_START && rFormat.Index != NF_CURRENCY_1000DEC2_CCC ) { // Insert only if not already inserted, but internal index must be // above so ImpInsertFormat can distinguish it. @@ -2890,7 +2899,7 @@ void SvNumberFormatter::ImpGenerateAdditionalFormats( sal_uInt32 CLOffset, SAL_WARN( "svl.numbers", "ImpGenerateAdditionalFormats: too many formats" ); break; // for } - if ( rFormat.Index >= NF_INDEX_TABLE_LOCALE_DATA_DEFAULTS ) + if ( rFormat.Index >= NF_INDEX_TABLE_RESERVED_START ) { if ( SvNumberformat* pNewFormat = ImpInsertFormat( rFormat, nPos+1, bAfterChangingSystemCL ) ) |