summaryrefslogtreecommitdiff
path: root/svl
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2017-10-31 18:26:53 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2017-11-01 08:17:17 +0100
commit42118724a713ceb9382432ddb5cf370b44e58bf3 (patch)
tree4f6b1641cdcb64eee3c14f700fee31a86a8eaaee /svl
parent18537be0cd5a50cd9a2853a8e06660c820c2e7f8 (diff)
Use std::unique_ptr more
Change-Id: I0340a3d0a5dec4f88c78cb1e0eff9d981761ac7e Reviewed-on: https://gerrit.libreoffice.org/44127 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'svl')
-rw-r--r--svl/source/numbers/zforlist.cxx151
1 files changed, 65 insertions, 86 deletions
diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx
index 24331b1dbea3..655dabc6613a 100644
--- a/svl/source/numbers/zforlist.cxx
+++ b/svl/source/numbers/zforlist.cxx
@@ -466,7 +466,7 @@ void SvNumberFormatter::ReplaceSystemCL( LanguageType eOldLanguage )
{
nLastKey = nKey;
}
- SvNumberformat* pOldEntry = aOldTable.begin()->second;
+ std::unique_ptr<SvNumberformat> pOldEntry(aOldTable.begin()->second);
aOldTable.erase( nKey );
OUString aString( pOldEntry->GetFormatstring() );
@@ -476,13 +476,9 @@ void SvNumberFormatter::ReplaceSystemCL( LanguageType eOldLanguage )
LanguageType eLge = eOldLanguage; // ConvertMode changes this
bool bCheck = false;
sal_Int32 nCheckPos = -1;
- SvNumberformat* pNewEntry = new SvNumberformat( aString, pFormatScanner,
- pStringScanner, nCheckPos, eLge );
- if ( nCheckPos != 0 )
- {
- delete pNewEntry;
- }
- else
+ std::unique_ptr<SvNumberformat> pNewEntry(new SvNumberformat( aString, pFormatScanner,
+ pStringScanner, nCheckPos, eLge ));
+ if ( nCheckPos == 0 )
{
short eCheckType = pNewEntry->GetType();
if ( eCheckType != css::util::NumberFormat::UNDEFINED )
@@ -494,18 +490,13 @@ void SvNumberFormatter::ReplaceSystemCL( LanguageType eOldLanguage )
pNewEntry->SetType( css::util::NumberFormat::DEFINED );
}
- if ( !aFTable.insert( make_pair( nKey, pNewEntry) ).second )
- {
- delete pNewEntry;
- }
- else
+ if ( aFTable.insert( make_pair( nKey, pNewEntry.get()) ).second )
{
+ pNewEntry.release();
bCheck = true;
}
}
DBG_ASSERT( bCheck, "SvNumberFormatter::ReplaceSystemCL: couldn't convert" );
-
- delete pOldEntry;
}
pFormatScanner->SetConvertMode(false);
pStdFormat->SetLastInsertKey( sal_uInt16(nLastKey - nCLOffset), SvNumberformat::FormatterPrivateAccess() );
@@ -580,11 +571,11 @@ bool SvNumberFormatter::PutEntry(OUString& rString,
ChangeIntl(eLnge); // change locale if necessary
LanguageType eLge = eLnge; // non-const for ConvertMode
bool bCheck = false;
- SvNumberformat* p_Entry = new SvNumberformat(rString,
- pFormatScanner,
- pStringScanner,
- nCheckPos,
- eLge);
+ std::unique_ptr<SvNumberformat> p_Entry(new SvNumberformat(rString,
+ pFormatScanner,
+ pStringScanner,
+ nCheckPos,
+ eLge));
if (nCheckPos == 0) // Format ok
{ // Type comparison:
@@ -603,36 +594,27 @@ bool SvNumberFormatter::PutEntry(OUString& rString,
sal_uInt32 CLOffset = ImpGenerateCL(eLge); // create new standard formats if necessary
nKey = ImpIsEntry(p_Entry->GetFormatstring(),CLOffset, eLge);
- if (nKey != NUMBERFORMAT_ENTRY_NOT_FOUND) // already present
- {
- delete p_Entry;
- }
- else
+ if (nKey == NUMBERFORMAT_ENTRY_NOT_FOUND) // only in not yet present
{
SvNumberformat* pStdFormat = GetFormatEntry(CLOffset + ZF_STANDARD);
sal_uInt32 nPos = CLOffset + pStdFormat->GetLastInsertKey( SvNumberformat::FormatterPrivateAccess() );
if (nPos+1 - CLOffset >= SV_COUNTRY_LANGUAGE_OFFSET)
{
SAL_WARN( "svl.numbers", "SvNumberFormatter::PutEntry: too many formats for CL");
- delete p_Entry;
}
- else if (!aFTable.insert(make_pair( nPos+1,p_Entry)).second)
+ else if (!aFTable.insert(make_pair( nPos+1,p_Entry.get())).second)
{
SAL_WARN( "svl.numbers", "SvNumberFormatter::PutEntry: dup position");
- delete p_Entry;
}
else
{
+ p_Entry.release();
bCheck = true;
nKey = nPos+1;
pStdFormat->SetLastInsertKey((sal_uInt16) (nKey-CLOffset), SvNumberformat::FormatterPrivateAccess());
}
}
}
- else
- {
- delete p_Entry;
- }
return bCheck;
}
@@ -1867,11 +1849,11 @@ SvNumberformat* SvNumberFormatter::ImpInsertFormat( const css::i18n::NumberForma
}
}
sal_Int32 nCheckPos = 0;
- SvNumberformat* pFormat = new SvNumberformat(aCodeStr,
- pFormatScanner,
- pStringScanner,
- nCheckPos,
- ActLnge);
+ std::unique_ptr<SvNumberformat> pFormat(new SvNumberformat(aCodeStr,
+ pFormatScanner,
+ pStringScanner,
+ nCheckPos,
+ ActLnge));
if (nCheckPos != 0)
{
if (LocaleDataWrapper::areChecksEnabled())
@@ -1882,7 +1864,6 @@ SvNumberformat* SvNumberFormatter::ImpInsertFormat( const css::i18n::NumberForma
rCode.Code;
LocaleDataWrapper::outputCheckMessage( xLocaleData->appendLocaleInfo( aMsg));
}
- delete pFormat;
return nullptr;
}
if ( rCode.Index >= NF_INDEX_TABLE_LOCALE_DATA_DEFAULTS )
@@ -1914,7 +1895,6 @@ SvNumberformat* SvNumberFormatter::ImpInsertFormat( const css::i18n::NumberForma
}
}
}
- delete pFormat;
return nullptr;
}
else if ( nPos - nCLOffset >= SV_COUNTRY_LANGUAGE_OFFSET )
@@ -1927,11 +1907,10 @@ SvNumberformat* SvNumberFormatter::ImpInsertFormat( const css::i18n::NumberForma
+ rCode.Code;
LocaleDataWrapper::outputCheckMessage( xLocaleData->appendLocaleInfo( aMsg));
}
- delete pFormat;
return nullptr;
}
}
- if ( !aFTable.insert( make_pair( nPos, pFormat) ).second )
+ if ( !aFTable.insert( make_pair( nPos, pFormat.get()) ).second )
{
if (LocaleDataWrapper::areChecksEnabled())
{
@@ -1947,14 +1926,13 @@ SvNumberformat* SvNumberFormatter::ImpInsertFormat( const css::i18n::NumberForma
{
SAL_WARN( "svl.numbers", "SvNumberFormatter::ImpInsertFormat: dup position");
}
- delete pFormat;
return nullptr;
}
if ( rCode.Default )
pFormat->SetStandard();
if ( !rCode.DefaultName.isEmpty() )
pFormat->SetComment( rCode.DefaultName );
- return pFormat;
+ return pFormat.release();
}
void SvNumberFormatter::GetFormatSpecialInfo(sal_uInt32 nFormat,
@@ -2271,7 +2249,6 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditio
css::lang::Locale aLocale = GetLanguageTag().getLocale();
css::uno::Reference< css::i18n::XNumberFormatCode > xNFC = i18n::NumberFormatMapper::create( m_xContext );
- SvNumberformat* pNewFormat = nullptr;
sal_Int32 nIdx;
bool bDefault;
@@ -2304,37 +2281,44 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditio
}
}
- // Boolean
- OUString aFormatCode = pFormatScanner->GetBooleanString();
- sal_Int32 nCheckPos = 0;
-
- pNewFormat = new SvNumberformat( aFormatCode, pFormatScanner,
- pStringScanner, nCheckPos, ActLnge );
- pNewFormat->SetType(css::util::NumberFormat::LOGICAL);
- pNewFormat->SetStandard();
- if ( !aFTable.insert(make_pair(
- CLOffset + ZF_STANDARD_LOGICAL /* NF_BOOLEAN */,
- pNewFormat)).second)
{
- SAL_WARN( "svl.numbers", "SvNumberFormatter::ImpGenerateFormats: dup position Boolean");
- delete pNewFormat;
- }
+ // Boolean
+ OUString aFormatCode = pFormatScanner->GetBooleanString();
+ sal_Int32 nCheckPos = 0;
- // Text
- aFormatCode = "@";
- pNewFormat = new SvNumberformat( aFormatCode, pFormatScanner,
- pStringScanner, nCheckPos, ActLnge );
- pNewFormat->SetType(css::util::NumberFormat::TEXT);
- pNewFormat->SetStandard();
- if ( !aFTable.insert(make_pair(
- CLOffset + ZF_STANDARD_TEXT /* NF_TEXT */,
- pNewFormat)).second)
- {
- SAL_WARN( "svl.numbers", "SvNumberFormatter::ImpGenerateFormats: dup position Text");
- delete pNewFormat;
+ std::unique_ptr<SvNumberformat> pNewFormat(new SvNumberformat( aFormatCode, pFormatScanner,
+ pStringScanner, nCheckPos, ActLnge ));
+ pNewFormat->SetType(css::util::NumberFormat::LOGICAL);
+ pNewFormat->SetStandard();
+ if ( !aFTable.insert(make_pair(
+ CLOffset + ZF_STANDARD_LOGICAL /* NF_BOOLEAN */,
+ pNewFormat.get())).second)
+ {
+ SAL_WARN( "svl.numbers", "SvNumberFormatter::ImpGenerateFormats: dup position Boolean");
+ }
+ else
+ {
+ pNewFormat.release();
+ }
+
+ // Text
+ aFormatCode = "@";
+ pNewFormat.reset(new SvNumberformat( aFormatCode, pFormatScanner,
+ pStringScanner, nCheckPos, ActLnge ));
+ pNewFormat->SetType(css::util::NumberFormat::TEXT);
+ pNewFormat->SetStandard();
+ if ( !aFTable.insert(make_pair(
+ CLOffset + ZF_STANDARD_TEXT /* NF_TEXT */,
+ pNewFormat.get())).second)
+ {
+ SAL_WARN( "svl.numbers", "SvNumberFormatter::ImpGenerateFormats: dup position Text");
+ }
+ else
+ {
+ pNewFormat.release();
+ }
}
-
// 0
nIdx = ImpGetFormatCodeIndex( aFormatSeq, NF_NUMBER_INT );
ImpInsertFormat( aFormatSeq[nIdx],
@@ -3092,7 +3076,6 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter
sal_uInt32 nCLOffset = 0;
sal_uInt32 nOldKey, nOffset, nNewKey;
- SvNumberformat* pNewEntry;
SvNumberFormatTable::const_iterator it = rTable.aFTable.begin();
while (it != rTable.aFTable.end())
@@ -3109,12 +3092,14 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter
nNewKey = nCLOffset + nOffset;
if (aFTable.find( nNewKey) == aFTable.end()) // not already present
{
-// pNewEntry = new SvNumberformat(*pFormat); // Copy is not sufficient!
- pNewEntry = new SvNumberformat( *pFormat, *pFormatScanner );
- if (!aFTable.insert(make_pair( nNewKey, pNewEntry)).second)
+ std::unique_ptr<SvNumberformat> pNewEntry(new SvNumberformat( *pFormat, *pFormatScanner ));
+ if (!aFTable.insert(make_pair( nNewKey, pNewEntry.get())).second)
{
SAL_WARN( "svl.numbers", "SvNumberFormatter::MergeFormatter: dup position");
- delete pNewEntry;
+ }
+ else
+ {
+ pNewEntry.release();
}
}
if (nNewKey != nOldKey) // new index
@@ -3124,16 +3109,11 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter
}
else // user defined
{
-// pNewEntry = new SvNumberformat(*pFormat); // Copy is not sufficient!
- pNewEntry = new SvNumberformat( *pFormat, *pFormatScanner );
+ std::unique_ptr<SvNumberformat> pNewEntry(new SvNumberformat( *pFormat, *pFormatScanner ));
nNewKey = ImpIsEntry(pNewEntry->GetFormatstring(),
nCLOffset,
pFormat->GetLanguage());
- if (nNewKey != NUMBERFORMAT_ENTRY_NOT_FOUND) // already present
- {
- delete pNewEntry;
- }
- else
+ if (nNewKey == NUMBERFORMAT_ENTRY_NOT_FOUND) // only if not present yet
{
SvNumberformat* pStdFormat = GetFormatEntry(nCLOffset + ZF_STANDARD);
sal_uInt32 nPos = nCLOffset + pStdFormat->GetLastInsertKey( SvNumberformat::FormatterPrivateAccess() );
@@ -3141,15 +3121,14 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter
if (nNewKey - nCLOffset >= SV_COUNTRY_LANGUAGE_OFFSET)
{
SAL_WARN( "svl.numbers", "SvNumberFormatter::MergeFormatter: too many formats for CL");
- delete pNewEntry;
}
- else if (!aFTable.insert(make_pair( nNewKey, pNewEntry)).second)
+ else if (!aFTable.insert(make_pair( nNewKey, pNewEntry.get())).second)
{
SAL_WARN( "svl.numbers", "SvNumberFormatter::MergeFormatter: dup position");
- delete pNewEntry;
}
else
{
+ pNewEntry.release();
pStdFormat->SetLastInsertKey((sal_uInt16) (nNewKey - nCLOffset),
SvNumberformat::FormatterPrivateAccess());
}