LibreOffice Module svl (master) 1
numformat.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19#pragma once
20
21#include <svl/svldllapi.h>
22#include <com/sun/star/i18n/XNumberFormatCode.hpp>
23#include <com/sun/star/uno/XComponentContext.hpp>
24#include <i18nlangtag/lang.h>
25#include <tools/link.hxx>
26#include <svl/nfkeytab.hxx>
27#include <svl/ondemand.hxx>
28#include <svl/zforlist.hxx>
30
31#include <map>
32
33class Color;
37class NfCurrencyTable;
38
40{
42
43public:
48 static const sal_uInt16 UNLIMITED_PRECISION;
49
54 static const sal_uInt16 INPUTSTRING_PRECISION;
55
57 SvNumberFormatter(const css::uno::Reference<css::uno::XComponentContext>& rxContext,
58 LanguageType eLang);
59
61
63 void SetColorLink(const Link<sal_uInt16, Color*>& rColorTableCallBack);
65 Color* GetUserDefColor(sal_uInt16 nIndex);
66
68 void ChangeIntl(LanguageType eLnge);
70 void ChangeNullDate(sal_uInt16 nDay, sal_uInt16 nMonth, sal_Int16 nYear);
72 void ChangeStandardPrec(short nPrec);
74 void SetNoZero(bool bNZ);
75
79
80 // Determine whether two format types are input compatible or not
81 static bool IsCompatible(SvNumFormatType eOldType, SvNumFormatType eNewType);
82
87 SvNumberFormatTable& GetEntryTable(SvNumFormatType eType, sal_uInt32& FIndex,
88 LanguageType eLnge);
89
93 SvNumberFormatTable& ChangeCL(SvNumFormatType eType, sal_uInt32& FIndex, LanguageType eLnge);
94
97 SvNumberFormatTable& GetFirstEntryTable(SvNumFormatType& eType, sal_uInt32& FIndex,
98 LanguageType& rLnge);
99
101 void DeleteEntry(sal_uInt32 nKey);
102
116 bool PutEntry(OUString& rString, sal_Int32& nCheckPos, SvNumFormatType& nType, sal_uInt32& nKey,
117 LanguageType eLnge = LANGUAGE_DONTKNOW, bool bReplaceBooleanEquivalent = true);
118
122 bool PutandConvertEntry(OUString& rString, sal_Int32& nCheckPos, SvNumFormatType& nType,
123 sal_uInt32& nKey, LanguageType eLnge, LanguageType eNewLnge,
124 bool bConvertDateOrder, bool bReplaceBooleanEquivalent = true);
125
130 bool PutandConvertEntrySystem(OUString& rString, sal_Int32& nCheckPos, SvNumFormatType& nType,
131 sal_uInt32& nKey, LanguageType eLnge, LanguageType eNewLnge);
132
170 sal_uInt32 GetIndexPuttingAndConverting(OUString& rString, LanguageType eLnge,
171 LanguageType eSysLnge, SvNumFormatType& rType,
172 bool& rNewInserted, sal_Int32& rCheckPos);
173
176 OUString GenerateFormat(sal_uInt32 nIndex, LanguageType eLnge = LANGUAGE_DONTKNOW,
177 bool bThousand = false, bool IsRed = false, sal_uInt16 nPrecision = 0,
178 sal_uInt16 nLeadingCnt = 1);
179
187 bool IsNumberFormat(const OUString& sString, sal_uInt32& F_Index, double& fOutNumber,
189
191 void GetOutputString(const double& fOutNumber, sal_uInt32 nFIndex, OUString& sOutString,
192 const Color** ppColor, bool bUseStarFormat = false);
193
197 void GetOutputString(const OUString& sString, sal_uInt32 nFIndex, OUString& sOutString,
198 const Color** ppColor, bool bUseStarFormat = false);
199
205 void GetInputLineString(const double& fOutNumber, sal_uInt32 nFIndex, OUString& rOutString,
206 bool bFiltering = false, bool bForceSystemLocale = false);
207
213 bool GetPreviewString(const OUString& sFormatString, double fPreviewNumber,
214 OUString& sOutString, const Color** ppColor, LanguageType eLnge,
215 bool bUseStarFormat = false);
216
219 bool GetPreviewStringGuess(const OUString& sFormatString, double fPreviewNumber,
220 OUString& sOutString, const Color** ppColor,
221 LanguageType eLnge = LANGUAGE_DONTKNOW);
222
228 bool GetPreviewString(const OUString& sFormatString, const OUString& sPreviewString,
229 OUString& sOutString, const Color** ppColor,
230 LanguageType eLnge = LANGUAGE_DONTKNOW);
231
236 sal_uInt32 TestNewString(const OUString& sFormatString, LanguageType eLnge = LANGUAGE_DONTKNOW);
237
239 bool IsTextFormat(sal_uInt32 nFIndex) const;
240
242 bool IsNatNum12(sal_uInt32 nFIndex) const;
243
245 void GetFormatSpecialInfo(sal_uInt32 nFormat, bool& bThousand, bool& IsRed,
246 sal_uInt16& nPrecision, sal_uInt16& nLeadingCnt);
247
249 sal_uInt16 GetFormatPrecision(sal_uInt32 nFormat) const;
250
252 sal_uInt16 GetFormatIntegerDigits(sal_uInt32 nFormat) const;
253
261 sal_uInt32 GetFormatSpecialInfo(const OUString&, bool& bThousand, bool& IsRed,
262 sal_uInt16& nPrecision, sal_uInt16& nLeadingCnt,
263 LanguageType eLnge = LANGUAGE_DONTKNOW);
264
266 OUString GetCalcCellReturn(sal_uInt32 nFormat) const;
267
268 bool IsUserDefined(sal_uInt32 F_Index) const;
269
271 bool IsUserDefined(std::u16string_view sStr, LanguageType eLnge = LANGUAGE_DONTKNOW);
272
275 sal_uInt32 GetEntryKey(std::u16string_view sStr, LanguageType eLnge = LANGUAGE_DONTKNOW);
276
278 const SvNumberformat* GetEntry(sal_uInt32 nKey) const;
279
281 const SvNumberformat* GetSubstitutedEntry(sal_uInt32 nKey, sal_uInt32& o_rNewKey) const;
282
284 sal_uInt32 GetStandardIndex(LanguageType eLnge = LANGUAGE_DONTKNOW);
285
287 sal_uInt32 GetStandardFormat(SvNumFormatType eType, LanguageType eLnge = LANGUAGE_DONTKNOW);
288
292 sal_uInt32 GetStandardFormat(sal_uInt32 nFIndex, SvNumFormatType eType, LanguageType eLnge);
293
297 sal_uInt32 GetStandardFormat(double fNumber, sal_uInt32 nFIndex, SvNumFormatType eType,
298 LanguageType eLnge);
299
301 bool IsSpecialStandardFormat(sal_uInt32 nFIndex, LanguageType eLnge);
302
304 sal_uInt32 GetTimeFormat(double fNumber, LanguageType eLnge, bool bForceDuration);
305
310 sal_uInt32 GuessDateTimeFormat(SvNumFormatType& rType, double fNumber, LanguageType eLnge);
311
319 sal_uInt32 GetEditFormat(double fNumber, sal_uInt32 nFIndex, SvNumFormatType eType,
320 SvNumberformat const* pFormat,
321 LanguageType eForLocale = LANGUAGE_DONTKNOW);
322
324 const Date& GetNullDate() const;
326 sal_uInt16 GetStandardPrec() const;
328 bool GetNoZero() const;
331 SvNumFormatType GetType(sal_uInt32 nFIndex) const;
332
334 void ClearMergeTable();
336 SvNumberFormatterIndexTable* MergeFormatter(SvNumberFormatter& rNewTable);
337
339 bool HasMergeFormatTable() const;
341 sal_uInt32 GetMergeFormatIndex(sal_uInt32 nOldFmt) const;
342
346 SvNumberFormatterMergeMap ConvertMergeTableToMap();
347
350 sal_uInt32 GetFormatForLanguageIfBuiltIn(sal_uInt32 nFormat,
351 LanguageType eLnge = LANGUAGE_DONTKNOW);
352
356 sal_uInt32 GetFormatIndex(NfIndexTableOffset, LanguageType eLnge = LANGUAGE_DONTKNOW);
357
362 NfIndexTableOffset GetIndexTableOffset(sal_uInt32 nFormat) const;
363
367 void SetEvalDateFormat(NfEvalDateFormat eEDF);
368 NfEvalDateFormat GetEvalDateFormat() const;
369
379 void SetYear2000(sal_uInt16 nVal);
380 sal_uInt16 GetYear2000() const;
381 static sal_uInt16 GetYear2000Default();
382
383 sal_uInt16 ExpandTwoDigitYear(sal_uInt16 nYear) const;
384 static sal_uInt16 ExpandTwoDigitYear(sal_uInt16 nYear, sal_uInt16 nTwoDigitYearStart);
385
387 OUString GetFormatDecimalSep(sal_uInt32 nFormat) const;
388
390 OUString GetLangDecimalSep(LanguageType nLang) const;
391
392 static void resetTheCurrencyTable();
393
395 static const NfCurrencyTable& GetTheCurrencyTable();
396
403 static const NfCurrencyEntry* MatchSystemCurrency();
404
410 static const NfCurrencyEntry& GetCurrencyEntry(LanguageType);
411
419 static const NfCurrencyEntry* GetCurrencyEntry(std::u16string_view rAbbrev, LanguageType eLang);
420
430 static const NfCurrencyEntry* GetLegacyOnlyCurrencyEntry(std::u16string_view rSymbol,
431 std::u16string_view rAbbrev);
432
438 static void SetDefaultSystemCurrency(std::u16string_view rAbbrev, LanguageType eLang);
439
448 sal_uInt16 GetCurrencyFormatStrings(NfWSStringsDtor&, const NfCurrencyEntry&, bool bBank) const;
449
455 bool GetNewCurrencySymbolString(sal_uInt32 nFormat, OUString& rSymbol,
456 const NfCurrencyEntry** ppEntry, bool* pBank = nullptr) const;
457
494 static const NfCurrencyEntry* GetCurrencyEntry(bool& bFoundBank, std::u16string_view rSymbol,
495 std::u16string_view rExtension,
496 LanguageType eFormatLanguage,
497 bool bOnlyStringLanguage = false);
498
500 void GetCompatibilityCurrency(OUString& rSymbol, OUString& rAbbrev) const;
501
503 void GetUsedLanguages(std::vector<LanguageType>& rList);
504
506 void FillKeywordTable(NfKeywordTable& rKeywords, LanguageType eLang);
507
510 void FillKeywordTableForExcel(NfKeywordTable& rKeywords);
511
519 OUString GetFormatStringForExcel(sal_uInt32 nKey, const NfKeywordTable& rKeywords,
520 SvNumberFormatter& rTempFormatter) const;
521
524 OUString GetKeyword(LanguageType eLnge, sal_uInt16 nIndex);
525
528 OUString GetStandardName(LanguageType eLnge);
529
531 static bool IsLocaleInstalled(LanguageType eLang);
532
549 const NfKeywordTable& GetKeywords(sal_uInt32 nKey);
550
552 const NfKeywordTable& GetEnglishKeywords() const;
553
555 const std::vector<Color>& GetStandardColors() const;
556
558 size_t GetMaxDefaultColors() const;
559
561 {
563
564 private:
566 };
569 {
570 return xLocaleData;
571 }
572
573private:
574 mutable ::osl::Mutex m_aMutex;
575 css::uno::Reference<css::uno::XComponentContext> m_xContext;
577 std::map<sal_uInt32, std::unique_ptr<SvNumberformat>>
578 aFTable; // Table of format keys to format entries
579 typedef std::map<sal_uInt32, sal_uInt32> DefaultFormatKeysMap;
580 DefaultFormatKeysMap aDefaultFormatKeys; // Table of default standard to format keys
581 std::unique_ptr<SvNumberFormatTable> pFormatTable; // For the UI dialog
582 std::unique_ptr<SvNumberFormatterIndexTable>
583 pMergeTable; // List of indices for merging two formatters
584 OnDemandCharClass xCharClass; // CharacterClassification
585 OnDemandLocaleDataWrapper xLocaleData; // LocaleData switched between SYSTEM, ENGLISH and other
586 OnDemandTransliterationWrapper xTransliteration; // Transliteration loaded on demand
587 OnDemandCalendarWrapper xCalendar; // Calendar loaded on demand
588 OnDemandNativeNumberWrapper xNatNum; // Native number service loaded on demand
589 std::unique_ptr<ImpSvNumberInputScan> pStringScanner; // Input string scanner
590 std::unique_ptr<ImpSvNumberformatScan> pFormatScanner; // Format code string scanner
591 Link<sal_uInt16, Color*> aColorLink; // User defined color table CallBack
592 sal_uInt32 MaxCLOffset; // Max language/country offset used
593 sal_uInt32 nDefaultSystemCurrencyFormat; // NewCurrency matching SYSTEM locale
594 LanguageType IniLnge; // Initialized setting language/country
595 LanguageType ActLnge; // Current setting language/country
596 NfEvalDateFormat eEvalDateFormat; // DateFormat evaluation
597 bool bNoZero; // Zero value suppression
598
599 // cached locale data items needed almost any time
600 OUString aDecimalSep;
602 OUString aThousandSep;
603 OUString aDateSep;
604
608
609 // get the registry, create one if none exists
610 SVL_DLLPRIVATE static SvNumberFormatterRegistry_Impl& GetFormatterRegistry();
611
612 // called by ctors
613 SVL_DLLPRIVATE void ImpConstruct(LanguageType eLang);
614
615 // Generate builtin formats provided by i18n behind CLOffset,
616 // if bNoAdditionalFormats==false also generate additional i18n formats.
617 SVL_DLLPRIVATE void ImpGenerateFormats(sal_uInt32 CLOffset, bool bNoAdditionalFormats);
618
619 // Generate additional formats provided by i18n
620 SVL_DLLPRIVATE void ImpGenerateAdditionalFormats(
621 sal_uInt32 CLOffset,
622 css::uno::Reference<css::i18n::XNumberFormatCode> const& rNumberFormatCode,
623 bool bAfterChangingSystemCL);
624
625 SVL_DLLPRIVATE SvNumberformat* ImpInsertFormat(const css::i18n::NumberFormatCode& rCode,
626 sal_uInt32 nPos,
627 bool bAfterChangingSystemCL = false,
628 sal_Int16 nOrgIndex = 0);
629
630 // Return CLOffset or (MaxCLOffset + SV_COUNTRY_LANGUAGE_OFFSET) if new language/country
631 SVL_DLLPRIVATE sal_uInt32 ImpGetCLOffset(LanguageType eLnge) const;
632
633 // Test whether format code already exists, then return index key,
634 // otherwise NUMBERFORMAT_ENTRY_NOT_FOUND
635 SVL_DLLPRIVATE sal_uInt32 ImpIsEntry(std::u16string_view rString, sal_uInt32 CLOffset,
636 LanguageType eLnge);
637
638 // Create builtin formats for language/country if necessary, return CLOffset
639 SVL_DLLPRIVATE sal_uInt32 ImpGenerateCL(LanguageType eLnge);
640
641 // Create theCurrencyTable with all <type>NfCurrencyEntry</type>
642 SVL_DLLPRIVATE static void ImpInitCurrencyTable();
643
644 // Return the format index of the currency format of the system locale.
645 // Format is created if not already present.
646 SVL_DLLPRIVATE sal_uInt32 ImpGetDefaultSystemCurrencyFormat();
647
648 // Return the format index of the currency format of the current locale.
649 // Format is created if not already present.
650 SVL_DLLPRIVATE sal_uInt32 ImpGetDefaultCurrencyFormat();
651
652 // Return the default format for a given type and current locale.
653 // May ONLY be called from within GetStandardFormat().
654 SVL_DLLPRIVATE sal_uInt32 ImpGetDefaultFormat(SvNumFormatType nType);
655
656 // Return the index in a sequence of format codes matching an enum of
657 // NfIndexTableOffset. If not found 0 is returned. If the sequence doesn't
658 // contain any format code elements a default element is created and inserted.
659 SVL_DLLPRIVATE sal_Int32 ImpGetFormatCodeIndex(
660 css::uno::Sequence<css::i18n::NumberFormatCode>& rSeq, const NfIndexTableOffset nTabOff);
661
662 // Adjust a sequence of format codes to contain only one (THE) default
663 // instead of multiple defaults for short/medium/long types.
664 // If there is no medium but a short and a long default the long is taken.
665 // Non-PRODUCT version may check locale data for matching defaults in one
666 // FormatElement group.
667 SVL_DLLPRIVATE void ImpAdjustFormatCodeDefault(css::i18n::NumberFormatCode* pFormatArr,
668 sal_Int32 nCount);
669
670 // Obtain the format entry for a given key index.
671 SVL_DLLPRIVATE SvNumberformat* GetFormatEntry(sal_uInt32 nKey);
672 SVL_DLLPRIVATE const SvNumberformat* GetFormatEntry(sal_uInt32 nKey) const;
673
674 // used as a loop body inside of GetNewCurrencySymbolString() and GetCurrencyEntry()
675 static bool ImpLookupCurrencyEntryLoopBody(const NfCurrencyEntry*& pFoundEntry,
676 bool& bFoundBank, const NfCurrencyEntry* pData,
677 sal_uInt16 nPos, std::u16string_view rSymbol);
678
679 // link to be set at <method>SvtSysLocaleOptions::SetCurrencyChangeLink()</method>
681
682 // return position of a special character
683 sal_Int32 ImpPosToken(const OUStringBuffer& sFormat, sal_Unicode token,
684 sal_Int32 nStartPos = 0) const;
685
686 // Substitute a format during GetFormatEntry(), i.e. system formats.
687 SvNumberformat* ImpSubstituteEntry(SvNumberformat* pFormat, sal_uInt32* o_pRealKey = nullptr);
688
689 // own mutex, may also be used by internal class SvNumberFormatterRegistry_Impl
690 static ::osl::Mutex& GetGlobalMutex();
691 ::osl::Mutex& GetInstanceMutex() const { return m_aMutex; }
692
693public:
694 // called by SvNumberFormatterRegistry_Impl::Notify if the default system currency changes
695 void ResetDefaultSystemCurrency();
696
697 // Called by SvNumberFormatterRegistry_Impl::Notify if the system locale's
698 // date acceptance patterns change.
700
701 // Replace the SYSTEM language/country format codes. Called upon change of
702 // the user configurable locale.
703 // Old compatibility codes are replaced, user defined are converted, and
704 // new format codes are appended.
705 void ReplaceSystemCL(LanguageType eOldLanguage);
706
707 const css::uno::Reference<css::uno::XComponentContext>& GetComponentContext() const;
708
711 // return the current FormatScanner
712 const ImpSvNumberformatScan* GetFormatScanner() const;
713
716
717 // return current (!) Locale
718 const LanguageTag& GetLanguageTag() const;
719
720 // return corresponding Transliteration wrapper
721 const ::utl::TransliterationWrapper* GetTransliteration() const;
722
723 // return the corresponding CharacterClassification wrapper
724 const CharClass* GetCharClass() const;
725
726 // return the corresponding LocaleData wrapper
727 const LocaleDataWrapper* GetLocaleData() const;
728
729 // return the corresponding Calendar wrapper
730 CalendarWrapper* GetCalendar() const;
731
732 // return the corresponding NativeNumberSupplier wrapper
733 const NativeNumberWrapper* GetNatNum() const;
734
735 // cached locale data items
736
737 // return the corresponding decimal separator
738 const OUString& GetNumDecimalSep() const;
739
740 // return the corresponding decimal separator alternative
741 const OUString& GetNumDecimalSepAlt() const;
742
743 // return the corresponding group (AKA thousand) separator
744 const OUString& GetNumThousandSep() const;
745
746 // return the corresponding date separator
747 const OUString& GetDateSep() const;
748
749 // checks for decimal separator and optional alternative
750 bool IsDecimalSep(std::u16string_view rStr) const;
751};
752
753/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void InvalidateDateAcceptancePatterns()
Definition: zforfind.cxx:3824
Load a calendar only if it's needed.
Definition: ondemand.hxx:140
SvNumberformatter uses it upon switching locales.
Definition: ondemand.hxx:294
Switch between LANGUAGE_SYSTEM and LANGUAGE_ENGLISH_US and any other LocaleDataWrapper.
Definition: ondemand.hxx:53
Load a native number service wrapper only if it's needed.
Definition: ondemand.hxx:261
Load a transliteration only if it's needed.
Definition: ondemand.hxx:204
instead of every number formatter being a listener we have a registry which also handles one instance...
Definition: zforlist.cxx:181
sal_uInt32 MaxCLOffset
Definition: numformat.hxx:592
OUString aThousandSep
Definition: numformat.hxx:602
LanguageType ActLnge
Definition: numformat.hxx:595
sal_uInt32 nDefaultSystemCurrencyFormat
Definition: numformat.hxx:593
OnDemandNativeNumberWrapper xNatNum
Definition: numformat.hxx:588
OnDemandCalendarWrapper xCalendar
Definition: numformat.hxx:587
std::map< sal_uInt32, sal_uInt32 > DefaultFormatKeysMap
Definition: numformat.hxx:579
std::unique_ptr< ImpSvNumberInputScan > pStringScanner
Definition: numformat.hxx:589
std::unique_ptr< SvNumberFormatterIndexTable > pMergeTable
Definition: numformat.hxx:583
OnDemandCharClass xCharClass
Definition: numformat.hxx:584
mutable::osl::Mutex m_aMutex
Definition: numformat.hxx:574
static const sal_uInt16 UNLIMITED_PRECISION
We can't technically have an "infinite" value, so we use an arbitrary upper precision threshold to re...
Definition: numformat.hxx:48
LanguageTag maLanguageTag
Definition: numformat.hxx:576
std::unique_ptr< SvNumberFormatTable > pFormatTable
Definition: numformat.hxx:581
OnDemandLocaleDataWrapper xLocaleData
Definition: numformat.hxx:585
static const sal_uInt16 INPUTSTRING_PRECISION
Precision suitable for numbers displayed in input bar, for instance Calc's formula input bar.
Definition: numformat.hxx:54
OnDemandTransliterationWrapper xTransliteration
Definition: numformat.hxx:586
NfEvalDateFormat eEvalDateFormat
Definition: numformat.hxx:596
OUString aDecimalSep
Definition: numformat.hxx:600
Link< sal_uInt16, Color * > aColorLink
Definition: numformat.hxx:591
DECL_DLLPRIVATE_STATIC_LINK(SvNumberFormatter, CurrencyChangeLink, LinkParamNone *, void)
std::map< sal_uInt32, std::unique_ptr< SvNumberformat > > aFTable
Definition: numformat.hxx:578
DefaultFormatKeysMap aDefaultFormatKeys
Definition: numformat.hxx:580
css::uno::Reference< css::uno::XComponentContext > m_xContext
Definition: numformat.hxx:575
OUString aDecimalSepAlt
Definition: numformat.hxx:601
static SVL_DLLPRIVATE sal_uInt16 nSystemCurrencyPosition
Definition: numformat.hxx:606
std::unique_ptr< ImpSvNumberformatScan > pFormatScanner
Definition: numformat.hxx:590
OnDemandLocaleDataWrapper & GetOnDemandLocaleDataWrapper(const InputScannerPrivateAccess &)
Access for input scanner to temporarily (!) switch locales.
Definition: numformat.hxx:568
static SVL_DLLPRIVATE SvNumberFormatterRegistry_Impl * pFormatterRegistry
Definition: numformat.hxx:607
static SVL_DLLPRIVATE volatile bool bCurrencyTableInitialized
Definition: numformat.hxx:605
LanguageType IniLnge
Definition: numformat.hxx:594
::osl::Mutex & GetInstanceMutex() const
Definition: numformat.hxx:691
std::mutex m_aMutex
LanguageType GetLanguage(SfxItemSet const &aSet, sal_uInt16 nLangWhichId)
const LocaleDataWrapper & GetLocaleData()
::std::array< OUString, NF_KEYWORD_ENTRIES_COUNT > NfKeywordTable
Definition: nfkeytab.hxx:98
const char GetNullDate[]
#define SVL_DLLPRIVATE
Definition: svldllapi.h:30
#define SVL_DLLPUBLIC
Definition: svldllapi.h:28
sal_uInt16 sal_Unicode
std::vector< OUString > NfWSStringsDtor
Definition: zforlist.hxx:364
std::unordered_map< sal_uInt16, sal_uInt32 > SvNumberFormatterIndexTable
Definition: zforlist.hxx:287
std::map< sal_uInt32, SvNumberformat * > SvNumberFormatTable
This table is std::map because it needs to preserve insertion order, because the formats are roughly ...
Definition: zforlist.hxx:286
SvNumFormatType
MAX_ULONG.
Definition: zforlist.hxx:50
std::unordered_map< sal_uInt32, sal_uInt32 > SvNumberFormatterMergeMap
Definition: zforlist.hxx:288
NfEvalDateFormat
enum values for <method>SvNumberFormatter::SetEvalDateFormat</method>
Definition: zforlist.hxx:265
NfIndexTableOffset
enum values for <method>SvNumberFormatter::GetFormatIndex</method>
Definition: zforlist.hxx:124
SvNumInputOptions
Input options to be used with IsNumberFormat()
Definition: zforlist.hxx:370