Kaydet (Commit) 1d1449fe authored tarafından Dennis Francis's avatar Dennis Francis Kaydeden (comit) Michael Meeks

Make SvNumberFormatter public methods threadsafe

This is a requirement due to the recent threading work done
on calc formulagroup interpreter.

Change-Id: I5d567b4b957a4d86303f6a86b14d1cbfc730beda
Reviewed-on: https://gerrit.libreoffice.org/45085Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarDennis Francis <dennis.francis@collabora.co.uk>
(cherry picked from commit b1f829da)
Reviewed-on: https://gerrit.libreoffice.org/45328Reviewed-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
Tested-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
üst c38c8d36
...@@ -326,6 +326,7 @@ void SvNumberFormatter::ImpConstruct( LanguageType eLang ) ...@@ -326,6 +326,7 @@ void SvNumberFormatter::ImpConstruct( LanguageType eLang )
void SvNumberFormatter::ChangeIntl(LanguageType eLnge) void SvNumberFormatter::ChangeIntl(LanguageType eLnge)
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (ActLnge != eLnge) if (ActLnge != eLnge)
{ {
ActLnge = eLnge; ActLnge = eLnge;
...@@ -374,11 +375,13 @@ SvNumberFormatterRegistry_Impl& SvNumberFormatter::GetFormatterRegistry() ...@@ -374,11 +375,13 @@ SvNumberFormatterRegistry_Impl& SvNumberFormatter::GetFormatterRegistry()
void SvNumberFormatter::SetColorLink( const Link<sal_uInt16,Color*>& rColorTableCallBack ) void SvNumberFormatter::SetColorLink( const Link<sal_uInt16,Color*>& rColorTableCallBack )
{ {
::osl::MutexGuard aGuard( GetMutex() );
aColorLink = rColorTableCallBack; aColorLink = rColorTableCallBack;
} }
Color* SvNumberFormatter::GetUserDefColor(sal_uInt16 nIndex) Color* SvNumberFormatter::GetUserDefColor(sal_uInt16 nIndex)
{ {
::osl::MutexGuard aGuard( GetMutex() );
if( aColorLink.IsSet() ) if( aColorLink.IsSet() )
{ {
return aColorLink.Call(nIndex); return aColorLink.Call(nIndex);
...@@ -393,32 +396,38 @@ void SvNumberFormatter::ChangeNullDate(sal_uInt16 nDay, ...@@ -393,32 +396,38 @@ void SvNumberFormatter::ChangeNullDate(sal_uInt16 nDay,
sal_uInt16 nMonth, sal_uInt16 nMonth,
sal_Int16 nYear) sal_Int16 nYear)
{ {
::osl::MutexGuard aGuard( GetMutex() );
pFormatScanner->ChangeNullDate(nDay, nMonth, nYear); pFormatScanner->ChangeNullDate(nDay, nMonth, nYear);
pStringScanner->ChangeNullDate(nDay, nMonth, nYear); pStringScanner->ChangeNullDate(nDay, nMonth, nYear);
} }
const Date& SvNumberFormatter::GetNullDate() const const Date& SvNumberFormatter::GetNullDate() const
{ {
::osl::MutexGuard aGuard( GetMutex() );
return pFormatScanner->GetNullDate(); return pFormatScanner->GetNullDate();
} }
void SvNumberFormatter::ChangeStandardPrec(short nPrec) void SvNumberFormatter::ChangeStandardPrec(short nPrec)
{ {
::osl::MutexGuard aGuard( GetMutex() );
pFormatScanner->ChangeStandardPrec(nPrec); pFormatScanner->ChangeStandardPrec(nPrec);
} }
void SvNumberFormatter::SetNoZero(bool bNZ) void SvNumberFormatter::SetNoZero(bool bNZ)
{ {
::osl::MutexGuard aGuard( GetMutex() );
bNoZero = bNZ; bNoZero = bNZ;
} }
sal_uInt16 SvNumberFormatter::GetStandardPrec() const sal_uInt16 SvNumberFormatter::GetStandardPrec() const
{ {
::osl::MutexGuard aGuard( GetMutex() );
return pFormatScanner->GetStandardPrec(); return pFormatScanner->GetStandardPrec();
} }
bool SvNumberFormatter::GetNoZero() const bool SvNumberFormatter::GetNoZero() const
{ {
::osl::MutexGuard aGuard( GetMutex() );
return bNoZero; return bNoZero;
} }
...@@ -547,6 +556,7 @@ bool SvNumberFormatter::IsDecimalSep( const OUString& rStr ) const ...@@ -547,6 +556,7 @@ bool SvNumberFormatter::IsDecimalSep( const OUString& rStr ) const
bool SvNumberFormatter::IsTextFormat(sal_uInt32 F_Index) const bool SvNumberFormatter::IsTextFormat(sal_uInt32 F_Index) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
const SvNumberformat* pFormat = GetFormatEntry(F_Index); const SvNumberformat* pFormat = GetFormatEntry(F_Index);
return pFormat && pFormat->IsTextFormat(); return pFormat && pFormat->IsTextFormat();
...@@ -558,6 +568,7 @@ bool SvNumberFormatter::PutEntry(OUString& rString, ...@@ -558,6 +568,7 @@ bool SvNumberFormatter::PutEntry(OUString& rString,
sal_uInt32& nKey, // format key sal_uInt32& nKey, // format key
LanguageType eLnge) LanguageType eLnge)
{ {
::osl::MutexGuard aGuard( GetMutex() );
nKey = 0; nKey = 0;
if (rString.isEmpty()) // empty string if (rString.isEmpty()) // empty string
{ {
...@@ -626,6 +637,7 @@ bool SvNumberFormatter::PutandConvertEntry(OUString& rString, ...@@ -626,6 +637,7 @@ bool SvNumberFormatter::PutandConvertEntry(OUString& rString,
LanguageType eNewLnge, LanguageType eNewLnge,
bool bForExcelExport ) bool bForExcelExport )
{ {
::osl::MutexGuard aGuard( GetMutex() );
bool bRes; bool bRes;
if (eNewLnge == LANGUAGE_DONTKNOW) if (eNewLnge == LANGUAGE_DONTKNOW)
{ {
...@@ -644,6 +656,7 @@ bool SvNumberFormatter::PutandConvertEntrySystem(OUString& rString, ...@@ -644,6 +656,7 @@ bool SvNumberFormatter::PutandConvertEntrySystem(OUString& rString,
LanguageType eLnge, LanguageType eLnge,
LanguageType eNewLnge) LanguageType eNewLnge)
{ {
::osl::MutexGuard aGuard( GetMutex() );
bool bRes; bool bRes;
if (eNewLnge == LANGUAGE_DONTKNOW) if (eNewLnge == LANGUAGE_DONTKNOW)
{ {
...@@ -659,6 +672,7 @@ sal_uInt32 SvNumberFormatter::GetIndexPuttingAndConverting( OUString & rString, ...@@ -659,6 +672,7 @@ sal_uInt32 SvNumberFormatter::GetIndexPuttingAndConverting( OUString & rString,
LanguageType eSysLnge, short & rType, LanguageType eSysLnge, short & rType,
bool & rNewInserted, sal_Int32 & rCheckPos ) bool & rNewInserted, sal_Int32 & rCheckPos )
{ {
::osl::MutexGuard aGuard( GetMutex() );
sal_uInt32 nKey = NUMBERFORMAT_ENTRY_NOT_FOUND; sal_uInt32 nKey = NUMBERFORMAT_ENTRY_NOT_FOUND;
rNewInserted = false; rNewInserted = false;
rCheckPos = 0; rCheckPos = 0;
...@@ -732,12 +746,14 @@ sal_uInt32 SvNumberFormatter::GetIndexPuttingAndConverting( OUString & rString, ...@@ -732,12 +746,14 @@ sal_uInt32 SvNumberFormatter::GetIndexPuttingAndConverting( OUString & rString,
void SvNumberFormatter::DeleteEntry(sal_uInt32 nKey) void SvNumberFormatter::DeleteEntry(sal_uInt32 nKey)
{ {
::osl::MutexGuard aGuard( GetMutex() );
delete aFTable[nKey]; delete aFTable[nKey];
aFTable.erase(nKey); aFTable.erase(nKey);
} }
void SvNumberFormatter::GetUsedLanguages( std::vector<LanguageType>& rList ) void SvNumberFormatter::GetUsedLanguages( std::vector<LanguageType>& rList )
{ {
::osl::MutexGuard aGuard( GetMutex() );
rList.clear(); rList.clear();
sal_uInt32 nOffset = 0; sal_uInt32 nOffset = 0;
...@@ -756,6 +772,7 @@ void SvNumberFormatter::GetUsedLanguages( std::vector<LanguageType>& rList ) ...@@ -756,6 +772,7 @@ void SvNumberFormatter::GetUsedLanguages( std::vector<LanguageType>& rList )
void SvNumberFormatter::FillKeywordTable( NfKeywordTable& rKeywords, void SvNumberFormatter::FillKeywordTable( NfKeywordTable& rKeywords,
LanguageType eLang ) LanguageType eLang )
{ {
::osl::MutexGuard aGuard( GetMutex() );
ChangeIntl( eLang ); ChangeIntl( eLang );
const NfKeywordTable & rTable = pFormatScanner->GetKeywords(); const NfKeywordTable & rTable = pFormatScanner->GetKeywords();
for ( sal_uInt16 i = 0; i < NF_KEYWORD_ENTRIES_COUNT; ++i ) for ( sal_uInt16 i = 0; i < NF_KEYWORD_ENTRIES_COUNT; ++i )
...@@ -767,6 +784,7 @@ void SvNumberFormatter::FillKeywordTable( NfKeywordTable& rKeywords, ...@@ -767,6 +784,7 @@ void SvNumberFormatter::FillKeywordTable( NfKeywordTable& rKeywords,
void SvNumberFormatter::FillKeywordTableForExcel( NfKeywordTable& rKeywords ) void SvNumberFormatter::FillKeywordTableForExcel( NfKeywordTable& rKeywords )
{ {
::osl::MutexGuard aGuard( GetMutex() );
FillKeywordTable( rKeywords, LANGUAGE_ENGLISH_US ); FillKeywordTable( rKeywords, LANGUAGE_ENGLISH_US );
// Replace upper case "GENERAL" with proper case "General". // Replace upper case "GENERAL" with proper case "General".
...@@ -784,6 +802,7 @@ void SvNumberFormatter::FillKeywordTableForExcel( NfKeywordTable& rKeywords ) ...@@ -784,6 +802,7 @@ void SvNumberFormatter::FillKeywordTableForExcel( NfKeywordTable& rKeywords )
OUString SvNumberFormatter::GetFormatStringForExcel( sal_uInt32 nKey, const NfKeywordTable& rKeywords, OUString SvNumberFormatter::GetFormatStringForExcel( sal_uInt32 nKey, const NfKeywordTable& rKeywords,
SvNumberFormatter& rTempFormatter ) const SvNumberFormatter& rTempFormatter ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
OUString aFormatStr; OUString aFormatStr;
if (const SvNumberformat* pEntry = GetEntry( nKey)) if (const SvNumberformat* pEntry = GetEntry( nKey))
{ {
...@@ -839,6 +858,7 @@ OUString SvNumberFormatter::GetFormatStringForExcel( sal_uInt32 nKey, const NfKe ...@@ -839,6 +858,7 @@ OUString SvNumberFormatter::GetFormatStringForExcel( sal_uInt32 nKey, const NfKe
OUString SvNumberFormatter::GetKeyword( LanguageType eLnge, sal_uInt16 nIndex ) OUString SvNumberFormatter::GetKeyword( LanguageType eLnge, sal_uInt16 nIndex )
{ {
::osl::MutexGuard aGuard( GetMutex() );
ChangeIntl(eLnge); ChangeIntl(eLnge);
const NfKeywordTable & rTable = pFormatScanner->GetKeywords(); const NfKeywordTable & rTable = pFormatScanner->GetKeywords();
if ( nIndex < NF_KEYWORD_ENTRIES_COUNT ) if ( nIndex < NF_KEYWORD_ENTRIES_COUNT )
...@@ -852,6 +872,7 @@ OUString SvNumberFormatter::GetKeyword( LanguageType eLnge, sal_uInt16 nIndex ) ...@@ -852,6 +872,7 @@ OUString SvNumberFormatter::GetKeyword( LanguageType eLnge, sal_uInt16 nIndex )
OUString SvNumberFormatter::GetStandardName( LanguageType eLnge ) OUString SvNumberFormatter::GetStandardName( LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
ChangeIntl( eLnge ); ChangeIntl( eLnge );
return pFormatScanner->GetStandardName(); return pFormatScanner->GetStandardName();
} }
...@@ -899,6 +920,7 @@ SvNumberFormatTable& SvNumberFormatter::GetFirstEntryTable( ...@@ -899,6 +920,7 @@ SvNumberFormatTable& SvNumberFormatter::GetFirstEntryTable(
sal_uInt32& FIndex, sal_uInt32& FIndex,
LanguageType& rLnge) LanguageType& rLnge)
{ {
::osl::MutexGuard aGuard( GetMutex() );
short eTypetmp = eType; short eTypetmp = eType;
if (eType == css::util::NumberFormat::ALL) // empty cell or don't care if (eType == css::util::NumberFormat::ALL) // empty cell or don't care
{ {
...@@ -1001,6 +1023,7 @@ SvNumberFormatTable& SvNumberFormatter::ChangeCL(short eType, ...@@ -1001,6 +1023,7 @@ SvNumberFormatTable& SvNumberFormatter::ChangeCL(short eType,
sal_uInt32& FIndex, sal_uInt32& FIndex,
LanguageType eLnge) LanguageType eLnge)
{ {
::osl::MutexGuard aGuard( GetMutex() );
ImpGenerateCL(eLnge); ImpGenerateCL(eLnge);
return GetEntryTable(eType, FIndex, ActLnge); return GetEntryTable(eType, FIndex, ActLnge);
} }
...@@ -1010,6 +1033,7 @@ SvNumberFormatTable& SvNumberFormatter::GetEntryTable( ...@@ -1010,6 +1033,7 @@ SvNumberFormatTable& SvNumberFormatter::GetEntryTable(
sal_uInt32& FIndex, sal_uInt32& FIndex,
LanguageType eLnge) LanguageType eLnge)
{ {
::osl::MutexGuard aGuard( GetMutex() );
if ( pFormatTable ) if ( pFormatTable )
{ {
pFormatTable->clear(); pFormatTable->clear();
...@@ -1135,6 +1159,7 @@ bool SvNumberFormatter::IsNumberFormat(const OUString& sString, ...@@ -1135,6 +1159,7 @@ bool SvNumberFormatter::IsNumberFormat(const OUString& sString,
LanguageType SvNumberFormatter::GetLanguage() const LanguageType SvNumberFormatter::GetLanguage() const
{ {
::osl::MutexGuard aGuard( GetMutex() );
return IniLnge; return IniLnge;
} }
...@@ -1278,6 +1303,7 @@ sal_uInt32 SvNumberFormatter::ImpGetDefaultFormat( short nType ) ...@@ -1278,6 +1303,7 @@ sal_uInt32 SvNumberFormatter::ImpGetDefaultFormat( short nType )
sal_uInt32 SvNumberFormatter::GetStandardFormat( short eType, LanguageType eLnge ) sal_uInt32 SvNumberFormatter::GetStandardFormat( short eType, LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (eLnge == LANGUAGE_DONTKNOW) if (eLnge == LANGUAGE_DONTKNOW)
{ {
eLnge = IniLnge; eLnge = IniLnge;
...@@ -1311,6 +1337,7 @@ sal_uInt32 SvNumberFormatter::GetStandardFormat( short eType, LanguageType eLnge ...@@ -1311,6 +1337,7 @@ sal_uInt32 SvNumberFormatter::GetStandardFormat( short eType, LanguageType eLnge
bool SvNumberFormatter::IsSpecialStandardFormat( sal_uInt32 nFIndex, bool SvNumberFormatter::IsSpecialStandardFormat( sal_uInt32 nFIndex,
LanguageType eLnge ) LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
return return
nFIndex == GetFormatIndex( NF_TIME_MMSS00, eLnge ) || nFIndex == GetFormatIndex( NF_TIME_MMSS00, eLnge ) ||
nFIndex == GetFormatIndex( NF_TIME_HH_MMSS00, eLnge ) || nFIndex == GetFormatIndex( NF_TIME_HH_MMSS00, eLnge ) ||
...@@ -1321,6 +1348,7 @@ bool SvNumberFormatter::IsSpecialStandardFormat( sal_uInt32 nFIndex, ...@@ -1321,6 +1348,7 @@ bool SvNumberFormatter::IsSpecialStandardFormat( sal_uInt32 nFIndex,
sal_uInt32 SvNumberFormatter::GetStandardFormat( sal_uInt32 nFIndex, short eType, sal_uInt32 SvNumberFormatter::GetStandardFormat( sal_uInt32 nFIndex, short eType,
LanguageType eLnge ) LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
if ( IsSpecialStandardFormat( nFIndex, eLnge ) ) if ( IsSpecialStandardFormat( nFIndex, eLnge ) )
return nFIndex; return nFIndex;
else else
...@@ -1329,6 +1357,7 @@ sal_uInt32 SvNumberFormatter::GetStandardFormat( sal_uInt32 nFIndex, short eType ...@@ -1329,6 +1357,7 @@ sal_uInt32 SvNumberFormatter::GetStandardFormat( sal_uInt32 nFIndex, short eType
sal_uInt32 SvNumberFormatter::GetTimeFormat( double fNumber, LanguageType eLnge ) sal_uInt32 SvNumberFormatter::GetTimeFormat( double fNumber, LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
bool bSign; bool bSign;
if ( fNumber < 0.0 ) if ( fNumber < 0.0 )
{ {
...@@ -1357,6 +1386,7 @@ sal_uInt32 SvNumberFormatter::GetTimeFormat( double fNumber, LanguageType eLnge ...@@ -1357,6 +1386,7 @@ sal_uInt32 SvNumberFormatter::GetTimeFormat( double fNumber, LanguageType eLnge
sal_uInt32 SvNumberFormatter::GetStandardFormat( double fNumber, sal_uInt32 nFIndex, sal_uInt32 SvNumberFormatter::GetStandardFormat( double fNumber, sal_uInt32 nFIndex,
short eType, LanguageType eLnge ) short eType, LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
if ( IsSpecialStandardFormat( nFIndex, eLnge ) ) if ( IsSpecialStandardFormat( nFIndex, eLnge ) )
return nFIndex; return nFIndex;
...@@ -1371,6 +1401,7 @@ sal_uInt32 SvNumberFormatter::GetStandardFormat( double fNumber, sal_uInt32 nFIn ...@@ -1371,6 +1401,7 @@ sal_uInt32 SvNumberFormatter::GetStandardFormat( double fNumber, sal_uInt32 nFIn
sal_uInt32 SvNumberFormatter::GuessDateTimeFormat( short& rType, double fNumber, LanguageType eLnge ) sal_uInt32 SvNumberFormatter::GuessDateTimeFormat( short& rType, double fNumber, LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
// Categorize the format according to the implementation of // Categorize the format according to the implementation of
// SvNumberFormatter::GetEditFormat(), making assumptions about what // SvNumberFormatter::GetEditFormat(), making assumptions about what
// would be time only. // would be time only.
...@@ -1406,6 +1437,7 @@ sal_uInt32 SvNumberFormatter::GetEditFormat( double fNumber, sal_uInt32 nFIndex, ...@@ -1406,6 +1437,7 @@ sal_uInt32 SvNumberFormatter::GetEditFormat( double fNumber, sal_uInt32 nFIndex,
short eType, LanguageType eLang, short eType, LanguageType eLang,
SvNumberformat const * pFormat ) SvNumberformat const * pFormat )
{ {
::osl::MutexGuard aGuard( GetMutex() );
sal_uInt32 nKey = nFIndex; sal_uInt32 nKey = nFIndex;
switch ( eType ) switch ( eType )
{ {
...@@ -1469,6 +1501,7 @@ void SvNumberFormatter::GetInputLineString(const double& fOutNumber, ...@@ -1469,6 +1501,7 @@ void SvNumberFormatter::GetInputLineString(const double& fOutNumber,
sal_uInt32 nFIndex, sal_uInt32 nFIndex,
OUString& sOutString) OUString& sOutString)
{ {
::osl::MutexGuard aGuard( GetMutex() );
Color* pColor; Color* pColor;
sal_uInt32 nRealKey = nFIndex; sal_uInt32 nRealKey = nFIndex;
SvNumberformat* pFormat = ImpSubstituteEntry( GetFormatEntry( nFIndex ), &nRealKey); SvNumberformat* pFormat = ImpSubstituteEntry( GetFormatEntry( nFIndex ), &nRealKey);
...@@ -1532,6 +1565,7 @@ void SvNumberFormatter::GetOutputString(const OUString& sString, ...@@ -1532,6 +1565,7 @@ void SvNumberFormatter::GetOutputString(const OUString& sString,
Color** ppColor, Color** ppColor,
bool bUseStarFormat ) bool bUseStarFormat )
{ {
::osl::MutexGuard aGuard( GetMutex() );
SvNumberformat* pFormat = GetFormatEntry( nFIndex ); SvNumberformat* pFormat = GetFormatEntry( nFIndex );
// ImpSubstituteEntry() is unnecessary here because so far only numeric // ImpSubstituteEntry() is unnecessary here because so far only numeric
// (time and date) are substituted. // (time and date) are substituted.
...@@ -1565,6 +1599,7 @@ void SvNumberFormatter::GetOutputString(const double& fOutNumber, ...@@ -1565,6 +1599,7 @@ void SvNumberFormatter::GetOutputString(const double& fOutNumber,
Color** ppColor, Color** ppColor,
bool bUseStarFormat ) bool bUseStarFormat )
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (bNoZero && fOutNumber == 0.0) if (bNoZero && fOutNumber == 0.0)
{ {
sOutString.clear(); sOutString.clear();
...@@ -1588,6 +1623,7 @@ bool SvNumberFormatter::GetPreviewString(const OUString& sFormatString, ...@@ -1588,6 +1623,7 @@ bool SvNumberFormatter::GetPreviewString(const OUString& sFormatString,
LanguageType eLnge, LanguageType eLnge,
bool bUseStarFormat ) bool bUseStarFormat )
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (sFormatString.isEmpty()) // no empty string if (sFormatString.isEmpty()) // no empty string
{ {
return false; return false;
...@@ -1640,6 +1676,7 @@ bool SvNumberFormatter::GetPreviewStringGuess( const OUString& sFormatString, ...@@ -1640,6 +1676,7 @@ bool SvNumberFormatter::GetPreviewStringGuess( const OUString& sFormatString,
Color** ppColor, Color** ppColor,
LanguageType eLnge ) LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (sFormatString.isEmpty()) // no empty string if (sFormatString.isEmpty()) // no empty string
{ {
return false; return false;
...@@ -1736,6 +1773,7 @@ bool SvNumberFormatter::GetPreviewString( const OUString& sFormatString, ...@@ -1736,6 +1773,7 @@ bool SvNumberFormatter::GetPreviewString( const OUString& sFormatString,
Color** ppColor, Color** ppColor,
LanguageType eLnge ) LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (sFormatString.isEmpty()) // no empty string if (sFormatString.isEmpty()) // no empty string
{ {
return false; return false;
...@@ -1789,6 +1827,7 @@ bool SvNumberFormatter::GetPreviewString( const OUString& sFormatString, ...@@ -1789,6 +1827,7 @@ bool SvNumberFormatter::GetPreviewString( const OUString& sFormatString,
sal_uInt32 SvNumberFormatter::TestNewString(const OUString& sFormatString, sal_uInt32 SvNumberFormatter::TestNewString(const OUString& sFormatString,
LanguageType eLnge) LanguageType eLnge)
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (sFormatString.isEmpty()) // no empty string if (sFormatString.isEmpty()) // no empty string
{ {
return NUMBERFORMAT_ENTRY_NOT_FOUND; return NUMBERFORMAT_ENTRY_NOT_FOUND;
...@@ -1945,6 +1984,7 @@ void SvNumberFormatter::GetFormatSpecialInfo(sal_uInt32 nFormat, ...@@ -1945,6 +1984,7 @@ void SvNumberFormatter::GetFormatSpecialInfo(sal_uInt32 nFormat,
sal_uInt16& nLeadingCnt) sal_uInt16& nLeadingCnt)
{ {
::osl::MutexGuard aGuard( GetMutex() );
SvNumberformat* pFormat = GetFormatEntry( nFormat ); SvNumberformat* pFormat = GetFormatEntry( nFormat );
if (pFormat) if (pFormat)
pFormat->GetFormatSpecialInfo(bThousand, IsRed, pFormat->GetFormatSpecialInfo(bThousand, IsRed,
...@@ -1960,6 +2000,7 @@ void SvNumberFormatter::GetFormatSpecialInfo(sal_uInt32 nFormat, ...@@ -1960,6 +2000,7 @@ void SvNumberFormatter::GetFormatSpecialInfo(sal_uInt32 nFormat,
sal_uInt16 SvNumberFormatter::GetFormatPrecision( sal_uInt32 nFormat ) const sal_uInt16 SvNumberFormatter::GetFormatPrecision( sal_uInt32 nFormat ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
const SvNumberformat* pFormat = GetFormatEntry( nFormat ); const SvNumberformat* pFormat = GetFormatEntry( nFormat );
if ( pFormat ) if ( pFormat )
return pFormat->GetFormatPrecision(); return pFormat->GetFormatPrecision();
...@@ -1969,6 +2010,7 @@ sal_uInt16 SvNumberFormatter::GetFormatPrecision( sal_uInt32 nFormat ) const ...@@ -1969,6 +2010,7 @@ sal_uInt16 SvNumberFormatter::GetFormatPrecision( sal_uInt32 nFormat ) const
sal_uInt16 SvNumberFormatter::GetFormatIntegerDigits( sal_uInt32 nFormat ) const sal_uInt16 SvNumberFormatter::GetFormatIntegerDigits( sal_uInt32 nFormat ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
const SvNumberformat* pFormat = GetFormatEntry( nFormat ); const SvNumberformat* pFormat = GetFormatEntry( nFormat );
if ( pFormat ) if ( pFormat )
return pFormat->GetFormatIntegerDigits(); return pFormat->GetFormatIntegerDigits();
...@@ -1978,6 +2020,7 @@ sal_uInt16 SvNumberFormatter::GetFormatIntegerDigits( sal_uInt32 nFormat ) const ...@@ -1978,6 +2020,7 @@ sal_uInt16 SvNumberFormatter::GetFormatIntegerDigits( sal_uInt32 nFormat ) const
OUString SvNumberFormatter::GetFormatDecimalSep( sal_uInt32 nFormat ) const OUString SvNumberFormatter::GetFormatDecimalSep( sal_uInt32 nFormat ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
const SvNumberformat* pFormat = GetFormatEntry(nFormat); const SvNumberformat* pFormat = GetFormatEntry(nFormat);
if ( !pFormat || pFormat->GetLanguage() == ActLnge ) if ( !pFormat || pFormat->GetLanguage() == ActLnge )
{ {
...@@ -2005,6 +2048,7 @@ sal_uInt32 SvNumberFormatter::GetFormatSpecialInfo( const OUString& rFormatStrin ...@@ -2005,6 +2048,7 @@ sal_uInt32 SvNumberFormatter::GetFormatSpecialInfo( const OUString& rFormatStrin
sal_uInt16& nLeadingCnt, LanguageType eLnge ) sal_uInt16& nLeadingCnt, LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (eLnge == LANGUAGE_DONTKNOW) if (eLnge == LANGUAGE_DONTKNOW)
{ {
eLnge = IniLnge; eLnge = IniLnge;
...@@ -2202,6 +2246,7 @@ const SvNumberformat* SvNumberFormatter::GetFormatEntry( sal_uInt32 nKey ) const ...@@ -2202,6 +2246,7 @@ const SvNumberformat* SvNumberFormatter::GetFormatEntry( sal_uInt32 nKey ) const
const SvNumberformat* SvNumberFormatter::GetEntry( sal_uInt32 nKey ) const const SvNumberformat* SvNumberFormatter::GetEntry( sal_uInt32 nKey ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
SvNumberFormatTable::const_iterator it = aFTable.find( nKey); SvNumberFormatTable::const_iterator it = aFTable.find( nKey);
if (it != aFTable.end()) if (it != aFTable.end())
return it->second; return it->second;
...@@ -2210,6 +2255,7 @@ const SvNumberformat* SvNumberFormatter::GetEntry( sal_uInt32 nKey ) const ...@@ -2210,6 +2255,7 @@ const SvNumberformat* SvNumberFormatter::GetEntry( sal_uInt32 nKey ) const
const SvNumberformat* SvNumberFormatter::GetSubstitutedEntry( sal_uInt32 nKey, sal_uInt32 & o_rNewKey ) const const SvNumberformat* SvNumberFormatter::GetSubstitutedEntry( sal_uInt32 nKey, sal_uInt32 & o_rNewKey ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
// A tad ugly, but GetStandardFormat() and GetFormatIndex() in // A tad ugly, but GetStandardFormat() and GetFormatIndex() in
// ImpSubstituteEntry() may have to add the LANGUAGE_SYSTEM formats if not // ImpSubstituteEntry() may have to add the LANGUAGE_SYSTEM formats if not
// already present (which in practice most times they are). // already present (which in practice most times they are).
...@@ -2808,6 +2854,7 @@ OUString SvNumberFormatter::GenerateFormat(sal_uInt32 nIndex, ...@@ -2808,6 +2854,7 @@ OUString SvNumberFormatter::GenerateFormat(sal_uInt32 nIndex,
sal_uInt16 nPrecision, sal_uInt16 nPrecision,
sal_uInt16 nLeadingZeros) sal_uInt16 nLeadingZeros)
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (eLnge == LANGUAGE_DONTKNOW) if (eLnge == LANGUAGE_DONTKNOW)
{ {
eLnge = IniLnge; eLnge = IniLnge;
...@@ -3003,6 +3050,7 @@ OUString SvNumberFormatter::GenerateFormat(sal_uInt32 nIndex, ...@@ -3003,6 +3050,7 @@ OUString SvNumberFormatter::GenerateFormat(sal_uInt32 nIndex,
bool SvNumberFormatter::IsUserDefined(const OUString& sStr, bool SvNumberFormatter::IsUserDefined(const OUString& sStr,
LanguageType eLnge) LanguageType eLnge)
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (eLnge == LANGUAGE_DONTKNOW) if (eLnge == LANGUAGE_DONTKNOW)
{ {
eLnge = IniLnge; eLnge = IniLnge;
...@@ -3022,6 +3070,7 @@ bool SvNumberFormatter::IsUserDefined(const OUString& sStr, ...@@ -3022,6 +3070,7 @@ bool SvNumberFormatter::IsUserDefined(const OUString& sStr,
sal_uInt32 SvNumberFormatter::GetEntryKey(const OUString& sStr, sal_uInt32 SvNumberFormatter::GetEntryKey(const OUString& sStr,
LanguageType eLnge) LanguageType eLnge)
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (eLnge == LANGUAGE_DONTKNOW) if (eLnge == LANGUAGE_DONTKNOW)
{ {
eLnge = IniLnge; eLnge = IniLnge;
...@@ -3032,6 +3081,7 @@ sal_uInt32 SvNumberFormatter::GetEntryKey(const OUString& sStr, ...@@ -3032,6 +3081,7 @@ sal_uInt32 SvNumberFormatter::GetEntryKey(const OUString& sStr,
sal_uInt32 SvNumberFormatter::GetStandardIndex(LanguageType eLnge) sal_uInt32 SvNumberFormatter::GetStandardIndex(LanguageType eLnge)
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (eLnge == LANGUAGE_DONTKNOW) if (eLnge == LANGUAGE_DONTKNOW)
{ {
eLnge = IniLnge; eLnge = IniLnge;
...@@ -3041,6 +3091,7 @@ sal_uInt32 SvNumberFormatter::GetStandardIndex(LanguageType eLnge) ...@@ -3041,6 +3091,7 @@ sal_uInt32 SvNumberFormatter::GetStandardIndex(LanguageType eLnge)
short SvNumberFormatter::GetType(sal_uInt32 nFIndex) short SvNumberFormatter::GetType(sal_uInt32 nFIndex)
{ {
::osl::MutexGuard aGuard( GetMutex() );
short eType; short eType;
SvNumberformat* pFormat = GetFormatEntry( nFIndex ); SvNumberformat* pFormat = GetFormatEntry( nFIndex );
if (!pFormat) if (!pFormat)
...@@ -3060,6 +3111,7 @@ short SvNumberFormatter::GetType(sal_uInt32 nFIndex) ...@@ -3060,6 +3111,7 @@ short SvNumberFormatter::GetType(sal_uInt32 nFIndex)
void SvNumberFormatter::ClearMergeTable() void SvNumberFormatter::ClearMergeTable()
{ {
::osl::MutexGuard aGuard( GetMutex() );
if ( pMergeTable ) if ( pMergeTable )
{ {
pMergeTable->clear(); pMergeTable->clear();
...@@ -3068,6 +3120,7 @@ void SvNumberFormatter::ClearMergeTable() ...@@ -3068,6 +3120,7 @@ void SvNumberFormatter::ClearMergeTable()
SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter& rTable) SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter& rTable)
{ {
::osl::MutexGuard aGuard( GetMutex() );
if ( pMergeTable ) if ( pMergeTable )
{ {
ClearMergeTable(); ClearMergeTable();
...@@ -3149,6 +3202,7 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter ...@@ -3149,6 +3202,7 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter
SvNumberFormatterMergeMap SvNumberFormatter::ConvertMergeTableToMap() SvNumberFormatterMergeMap SvNumberFormatter::ConvertMergeTableToMap()
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (!HasMergeFormatTable()) if (!HasMergeFormatTable())
{ {
return SvNumberFormatterMergeMap(); return SvNumberFormatterMergeMap();
...@@ -3167,6 +3221,7 @@ SvNumberFormatterMergeMap SvNumberFormatter::ConvertMergeTableToMap() ...@@ -3167,6 +3221,7 @@ SvNumberFormatterMergeMap SvNumberFormatter::ConvertMergeTableToMap()
sal_uInt32 SvNumberFormatter::GetFormatForLanguageIfBuiltIn( sal_uInt32 nFormat, sal_uInt32 SvNumberFormatter::GetFormatForLanguageIfBuiltIn( sal_uInt32 nFormat,
LanguageType eLnge ) LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
if ( eLnge == LANGUAGE_DONTKNOW ) if ( eLnge == LANGUAGE_DONTKNOW )
{ {
eLnge = IniLnge; eLnge = IniLnge;
...@@ -3188,6 +3243,7 @@ sal_uInt32 SvNumberFormatter::GetFormatForLanguageIfBuiltIn( sal_uInt32 nFormat, ...@@ -3188,6 +3243,7 @@ sal_uInt32 SvNumberFormatter::GetFormatForLanguageIfBuiltIn( sal_uInt32 nFormat,
sal_uInt32 SvNumberFormatter::GetFormatIndex( NfIndexTableOffset nTabOff, sal_uInt32 SvNumberFormatter::GetFormatIndex( NfIndexTableOffset nTabOff,
LanguageType eLnge ) LanguageType eLnge )
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (nTabOff >= NF_INDEX_TABLE_ENTRIES) if (nTabOff >= NF_INDEX_TABLE_ENTRIES)
return NUMBERFORMAT_ENTRY_NOT_FOUND; return NUMBERFORMAT_ENTRY_NOT_FOUND;
...@@ -3205,6 +3261,7 @@ sal_uInt32 SvNumberFormatter::GetFormatIndex( NfIndexTableOffset nTabOff, ...@@ -3205,6 +3261,7 @@ sal_uInt32 SvNumberFormatter::GetFormatIndex( NfIndexTableOffset nTabOff,
NfIndexTableOffset SvNumberFormatter::GetIndexTableOffset( sal_uInt32 nFormat ) const NfIndexTableOffset SvNumberFormatter::GetIndexTableOffset( sal_uInt32 nFormat ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
sal_uInt32 nOffset = nFormat % SV_COUNTRY_LANGUAGE_OFFSET; // relative index sal_uInt32 nOffset = nFormat % SV_COUNTRY_LANGUAGE_OFFSET; // relative index
if ( nOffset > SV_MAX_COUNT_STANDARD_FORMATS ) if ( nOffset > SV_MAX_COUNT_STANDARD_FORMATS )
{ {
...@@ -3221,22 +3278,26 @@ NfIndexTableOffset SvNumberFormatter::GetIndexTableOffset( sal_uInt32 nFormat ) ...@@ -3221,22 +3278,26 @@ NfIndexTableOffset SvNumberFormatter::GetIndexTableOffset( sal_uInt32 nFormat )
void SvNumberFormatter::SetEvalDateFormat( NfEvalDateFormat eEDF ) void SvNumberFormatter::SetEvalDateFormat( NfEvalDateFormat eEDF )
{ {
::osl::MutexGuard aGuard( GetMutex() );
eEvalDateFormat = eEDF; eEvalDateFormat = eEDF;
} }
NfEvalDateFormat SvNumberFormatter::GetEvalDateFormat() const NfEvalDateFormat SvNumberFormatter::GetEvalDateFormat() const
{ {
::osl::MutexGuard aGuard( GetMutex() );
return eEvalDateFormat; return eEvalDateFormat;
} }
void SvNumberFormatter::SetYear2000( sal_uInt16 nVal ) void SvNumberFormatter::SetYear2000( sal_uInt16 nVal )
{ {
::osl::MutexGuard aGuard( GetMutex() );
pStringScanner->SetYear2000( nVal ); pStringScanner->SetYear2000( nVal );
} }
sal_uInt16 SvNumberFormatter::GetYear2000() const sal_uInt16 SvNumberFormatter::GetYear2000() const
{ {
::osl::MutexGuard aGuard( GetMutex() );
return pStringScanner->GetYear2000(); return pStringScanner->GetYear2000();
} }
...@@ -3532,6 +3593,7 @@ bool SvNumberFormatter::GetNewCurrencySymbolString( sal_uInt32 nFormat, OUString ...@@ -3532,6 +3593,7 @@ bool SvNumberFormatter::GetNewCurrencySymbolString( sal_uInt32 nFormat, OUString
const NfCurrencyEntry** ppEntry /* = NULL */, const NfCurrencyEntry** ppEntry /* = NULL */,
bool* pBank /* = NULL */ ) const bool* pBank /* = NULL */ ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
if ( ppEntry ) if ( ppEntry )
*ppEntry = nullptr; *ppEntry = nullptr;
if ( pBank ) if ( pBank )
...@@ -3595,6 +3657,7 @@ const NfCurrencyEntry* SvNumberFormatter::GetCurrencyEntry( bool & bFoundBank, ...@@ -3595,6 +3657,7 @@ const NfCurrencyEntry* SvNumberFormatter::GetCurrencyEntry( bool & bFoundBank,
LanguageType eFormatLanguage, LanguageType eFormatLanguage,
bool bOnlyStringLanguage ) bool bOnlyStringLanguage )
{ {
::osl::MutexGuard aGuard( GetMutex() );
sal_Int32 nExtLen = rExtension.getLength(); sal_Int32 nExtLen = rExtension.getLength();
LanguageType eExtLang; LanguageType eExtLang;
if ( nExtLen ) if ( nExtLen )
...@@ -3680,6 +3743,7 @@ const NfCurrencyEntry* SvNumberFormatter::GetCurrencyEntry( bool & bFoundBank, ...@@ -3680,6 +3743,7 @@ const NfCurrencyEntry* SvNumberFormatter::GetCurrencyEntry( bool & bFoundBank,
void SvNumberFormatter::GetCompatibilityCurrency( OUString& rSymbol, OUString& rAbbrev ) const void SvNumberFormatter::GetCompatibilityCurrency( OUString& rSymbol, OUString& rAbbrev ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
css::uno::Sequence< css::i18n::Currency2 > css::uno::Sequence< css::i18n::Currency2 >
xCurrencies( xLocaleData->getAllCurrencies() ); xCurrencies( xLocaleData->getAllCurrencies() );
...@@ -3934,6 +3998,7 @@ sal_uInt16 SvNumberFormatter::GetCurrencyFormatStrings( NfWSStringsDtor& rStrArr ...@@ -3934,6 +3998,7 @@ sal_uInt16 SvNumberFormatter::GetCurrencyFormatStrings( NfWSStringsDtor& rStrArr
const NfCurrencyEntry& rCurr, const NfCurrencyEntry& rCurr,
bool bBank ) const bool bBank ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
OUString aRed = "[" OUString aRed = "["
+ pFormatScanner->GetRedString() + pFormatScanner->GetRedString()
+ "]"; + "]";
...@@ -4021,6 +4086,7 @@ sal_uInt16 SvNumberFormatter::GetCurrencyFormatStrings( NfWSStringsDtor& rStrArr ...@@ -4021,6 +4086,7 @@ sal_uInt16 SvNumberFormatter::GetCurrencyFormatStrings( NfWSStringsDtor& rStrArr
sal_uInt32 SvNumberFormatter::GetMergeFormatIndex( sal_uInt32 nOldFmt ) const sal_uInt32 SvNumberFormatter::GetMergeFormatIndex( sal_uInt32 nOldFmt ) const
{ {
::osl::MutexGuard aGuard( GetMutex() );
if (pMergeTable) if (pMergeTable)
{ {
SvNumberFormatterIndexTable::const_iterator it = pMergeTable->find(nOldFmt); SvNumberFormatterIndexTable::const_iterator it = pMergeTable->find(nOldFmt);
...@@ -4034,6 +4100,7 @@ sal_uInt32 SvNumberFormatter::GetMergeFormatIndex( sal_uInt32 nOldFmt ) const ...@@ -4034,6 +4100,7 @@ sal_uInt32 SvNumberFormatter::GetMergeFormatIndex( sal_uInt32 nOldFmt ) const
bool SvNumberFormatter::HasMergeFormatTable() const bool SvNumberFormatter::HasMergeFormatTable() const
{ {
::osl::MutexGuard aGuard( GetMutex() );
return pMergeTable && !pMergeTable->empty(); return pMergeTable && !pMergeTable->empty();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment