[Libreoffice-commits] core.git: 2 commits - dbaccess/source sc/inc sc/source
Noel Grandin
noel.grandin at collabora.co.uk
Tue Mar 13 12:24:36 UTC 2018
dbaccess/source/core/dataaccess/myucp_datasupplier.cxx | 18 ---
sc/inc/conditio.hxx | 10 -
sc/source/core/data/conditio.cxx | 95 ++++++++---------
3 files changed, 53 insertions(+), 70 deletions(-)
New commits:
commit 25f7be559d3688db716ecd83085436c77ad2f0f5
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Tue Mar 13 10:44:21 2018 +0200
loplugin:useuniqueptr in DataSupplier_Impl
Change-Id: Ifa4b00bcefdab5d71f03121ae283bde6dbb147c8
Reviewed-on: https://gerrit.libreoffice.org/51197
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/dbaccess/source/core/dataaccess/myucp_datasupplier.cxx b/dbaccess/source/core/dataaccess/myucp_datasupplier.cxx
index 258e00c10a6a..4eb8d4906b6d 100644
--- a/dbaccess/source/core/dataaccess/myucp_datasupplier.cxx
+++ b/dbaccess/source/core/dataaccess/myucp_datasupplier.cxx
@@ -54,14 +54,11 @@ struct ResultListEntry
explicit ResultListEntry(const ContentProperties& rEntry) : rData( rEntry ) {}
};
-// ResultList.
-typedef std::vector< ResultListEntry* > ResultList;
-
// struct DataSupplier_Impl.
struct DataSupplier_Impl
{
osl::Mutex m_aMutex;
- ResultList m_aResults;
+ std::vector< std::unique_ptr<ResultListEntry> > m_aResults;
rtl::Reference< ODocumentContainer > m_xContent;
bool m_bCountFinal;
@@ -70,17 +67,8 @@ struct DataSupplier_Impl
, m_bCountFinal(false)
{
}
- ~DataSupplier_Impl();
};
-DataSupplier_Impl::~DataSupplier_Impl()
-{
- for (auto const& result : m_aResults)
- {
- delete result;
- }
-}
-
}
// DataSupplier Implementation.
@@ -217,7 +205,7 @@ bool DataSupplier::getResult( sal_uInt32 nIndex )
const OUString* pEnd = pIter + aSeq.getLength();
for(pIter = pIter + nPos;pIter != pEnd;++pIter,++nPos)
{
- m_pImpl->m_aResults.push_back(
+ m_pImpl->m_aResults.emplace_back(
new ResultListEntry( m_pImpl->m_xContent->getContent(*pIter)->getContentProperties() ) );
if ( nPos == nIndex )
@@ -263,7 +251,7 @@ sal_uInt32 DataSupplier::totalCount()
const OUString* pIter = aSeq.getConstArray();
const OUString* pEnd = pIter + aSeq.getLength();
for(;pIter != pEnd;++pIter)
- m_pImpl->m_aResults.push_back(
+ m_pImpl->m_aResults.emplace_back(
new ResultListEntry( m_pImpl->m_xContent->getContent(*pIter)->getContentProperties() ) );
m_pImpl->m_bCountFinal = true;
commit 51da4c898d0c09f282838328f2a23f7b3e3b8d3f
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Tue Mar 13 12:38:32 2018 +0200
loplugin:useuniqueptr in ScConditionEntry
Change-Id: Ifcb2949fd932de249b71322ec9827e1ba3b1fe1b
Reviewed-on: https://gerrit.libreoffice.org/51206
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/sc/inc/conditio.hxx b/sc/inc/conditio.hxx
index 2c13f096d2e5..dc254ffc042c 100644
--- a/sc/inc/conditio.hxx
+++ b/sc/inc/conditio.hxx
@@ -308,19 +308,19 @@ class SC_DLLPUBLIC ScConditionEntry : public ScFormatEntry
const formula::FormulaGrammar::Grammar eTempGrammar2; // grammar to be used on (re)compilation, e.g. in XML import
bool bIsStr1; // for recognition of empty strings
bool bIsStr2;
- ScTokenArray* pFormula1; // entered formula
- ScTokenArray* pFormula2;
+ std::unique_ptr<ScTokenArray> pFormula1; // entered formula
+ std::unique_ptr<ScTokenArray> pFormula2;
ScAddress aSrcPos; // source position for formulas
// temporary data:
OUString aSrcString; // formula source position as text during XML import
- ScFormulaCell* pFCell1;
- ScFormulaCell* pFCell2;
+ std::unique_ptr<ScFormulaCell> pFCell1;
+ std::unique_ptr<ScFormulaCell> pFCell2;
bool bRelRef1;
bool bRelRef2;
bool bFirstRun;
std::unique_ptr<ScFormulaListener> mpListener;
- void SimplifyCompiledFormula( ScTokenArray*& rFormula,
+ void SimplifyCompiledFormula( std::unique_ptr<ScTokenArray>& rFormula,
double& rVal,
bool& rIsStr,
OUString& rStrVal );
diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index c07d7672d789..d07c98ebbf8d 100644
--- a/sc/source/core/data/conditio.cxx
+++ b/sc/source/core/data/conditio.cxx
@@ -160,8 +160,8 @@ void ScConditionEntry::StartListening()
const ScRangeList& rRanges = pCondFormat->GetRange();
mpListener->stopListening();
- start_listen_to(*mpListener, pFormula1, rRanges);
- start_listen_to(*mpListener, pFormula2, rRanges);
+ start_listen_to(*mpListener, pFormula1.get(), rRanges);
+ start_listen_to(*mpListener, pFormula2.get(), rRanges);
mpListener->setCallback([&]() { pCondFormat->DoRepaint();});
}
@@ -200,9 +200,9 @@ ScConditionEntry::ScConditionEntry( const ScConditionEntry& r ) :
{
// ScTokenArray copy ctor creates a flat copy
if (r.pFormula1)
- pFormula1 = new ScTokenArray( *r.pFormula1 );
+ pFormula1.reset( new ScTokenArray( *r.pFormula1 ) );
if (r.pFormula2)
- pFormula2 = new ScTokenArray( *r.pFormula2 );
+ pFormula2.reset( new ScTokenArray( *r.pFormula2 ) );
StartListening();
// Formula cells are created at IsValid
@@ -236,9 +236,9 @@ ScConditionEntry::ScConditionEntry( ScDocument* pDocument, const ScConditionEntr
{
// Real copy of the formulas (for Ref Undo)
if (r.pFormula1)
- pFormula1 = r.pFormula1->Clone();
+ pFormula1.reset( r.pFormula1->Clone() );
if (r.pFormula2)
- pFormula2 = r.pFormula2->Clone();
+ pFormula2.reset( r.pFormula2->Clone() );
// Formula cells are created at IsValid
// TODO: But not in the Clipboard! So interpret beforehand!
@@ -300,15 +300,15 @@ ScConditionEntry::ScConditionEntry( ScConditionMode eOper,
{
if ( pArr1 )
{
- pFormula1 = new ScTokenArray( *pArr1 );
+ pFormula1.reset( new ScTokenArray( *pArr1 ) );
SimplifyCompiledFormula( pFormula1, nVal1, bIsStr1, aStrVal1 );
- bRelRef1 = lcl_HasRelRef( mpDoc, pFormula1 );
+ bRelRef1 = lcl_HasRelRef( mpDoc, pFormula1.get() );
}
if ( pArr2 )
{
- pFormula2 = new ScTokenArray( *pArr2 );
+ pFormula2.reset( new ScTokenArray( *pArr2 ) );
SimplifyCompiledFormula( pFormula2, nVal2, bIsStr2, aStrVal2 );
- bRelRef2 = lcl_HasRelRef( mpDoc, pFormula2 );
+ bRelRef2 = lcl_HasRelRef( mpDoc, pFormula2.get() );
}
StartListening();
@@ -318,14 +318,9 @@ ScConditionEntry::ScConditionEntry( ScConditionMode eOper,
ScConditionEntry::~ScConditionEntry()
{
- delete pFCell1;
- delete pFCell2;
-
- delete pFormula1;
- delete pFormula2;
}
-void ScConditionEntry::SimplifyCompiledFormula( ScTokenArray*& rFormula,
+void ScConditionEntry::SimplifyCompiledFormula( std::unique_ptr<ScTokenArray>& rFormula,
double& rVal,
bool& rIsStr,
OUString& rStrVal )
@@ -339,13 +334,13 @@ void ScConditionEntry::SimplifyCompiledFormula( ScTokenArray*& rFormula,
if ( pToken->GetType() == svDouble )
{
rVal = pToken->GetDouble();
- DELETEZ(rFormula); // Do not remember as formula
+ rFormula.reset(); // Do not remember as formula
}
else if ( pToken->GetType() == svString )
{
rIsStr = true;
rStrVal = pToken->GetString().getString();
- DELETEZ(rFormula); // Do not remember as formula
+ rFormula.reset(); // Do not remember as formula
}
}
}
@@ -366,39 +361,39 @@ void ScConditionEntry::Compile( const OUString& rExpr1, const OUString& rExpr2,
if ( !rExpr1.isEmpty() )
{
- delete pFormula1;
+ pFormula1.reset();
aComp.SetGrammar( eGrammar1 );
if ( mpDoc->IsImportingXML() && !bTextToReal )
{
// temporary formula string as string tokens
- pFormula1 = new ScTokenArray;
+ pFormula1.reset( new ScTokenArray );
pFormula1->AssignXMLString( rExpr1, rExprNmsp1 );
// bRelRef1 is set when the formula is compiled again (CompileXML)
}
else
{
- pFormula1 = aComp.CompileString( rExpr1, rExprNmsp1 );
+ pFormula1.reset( aComp.CompileString( rExpr1, rExprNmsp1 ) );
SimplifyCompiledFormula( pFormula1, nVal1, bIsStr1, aStrVal1 );
- bRelRef1 = lcl_HasRelRef( mpDoc, pFormula1 );
+ bRelRef1 = lcl_HasRelRef( mpDoc, pFormula1.get() );
}
}
if ( !rExpr2.isEmpty() )
{
- delete pFormula2;
+ pFormula2.reset();
aComp.SetGrammar( eGrammar2 );
if ( mpDoc->IsImportingXML() && !bTextToReal )
{
// temporary formula string as string tokens
- pFormula2 = new ScTokenArray;
+ pFormula2.reset( new ScTokenArray );
pFormula2->AssignXMLString( rExpr2, rExprNmsp2 );
// bRelRef2 is set when the formula is compiled again (CompileXML)
}
else
{
- pFormula2 = aComp.CompileString( rExpr2, rExprNmsp2 );
+ pFormula2.reset( aComp.CompileString( rExpr2, rExprNmsp2 ) );
SimplifyCompiledFormula( pFormula2, nVal2, bIsStr2, aStrVal2 );
- bRelRef2 = lcl_HasRelRef( mpDoc, pFormula2 );
+ bRelRef2 = lcl_HasRelRef( mpDoc, pFormula2.get() );
}
}
}
@@ -417,7 +412,7 @@ void ScConditionEntry::MakeCells( const ScAddress& rPos )
{
// pFCell1 will hold a flat-copied ScTokenArray sharing ref-counted
// code tokens with pFormula1
- pFCell1 = new ScFormulaCell(mpDoc, rPos, *pFormula1);
+ pFCell1.reset( new ScFormulaCell(mpDoc, rPos, *pFormula1) );
pFCell1->StartListeningTo( mpDoc );
}
@@ -425,7 +420,7 @@ void ScConditionEntry::MakeCells( const ScAddress& rPos )
{
// pFCell2 will hold a flat-copied ScTokenArray sharing ref-counted
// code tokens with pFormula2
- pFCell2 = new ScFormulaCell(mpDoc, rPos, *pFormula2);
+ pFCell2.reset( new ScFormulaCell(mpDoc, rPos, *pFormula2) );
pFCell2->StartListeningTo( mpDoc );
}
}
@@ -446,8 +441,8 @@ void ScConditionEntry::SetIgnoreBlank(bool bSet)
*/
void ScConditionEntry::CompileAll()
{
- DELETEZ(pFCell1);
- DELETEZ(pFCell2);
+ pFCell1.reset();
+ pFCell2.reset();
}
void ScConditionEntry::CompileXML()
@@ -486,11 +481,11 @@ void ScConditionEntry::SetSrcString( const OUString& rNew )
void ScConditionEntry::SetFormula1( const ScTokenArray& rArray )
{
- DELETEZ( pFormula1 );
+ pFormula1.reset();
if( rArray.GetLen() > 0 )
{
- pFormula1 = new ScTokenArray( rArray );
- bRelRef1 = lcl_HasRelRef( mpDoc, pFormula1 );
+ pFormula1.reset( new ScTokenArray( rArray ) );
+ bRelRef1 = lcl_HasRelRef( mpDoc, pFormula1.get() );
}
StartListening();
@@ -498,11 +493,11 @@ void ScConditionEntry::SetFormula1( const ScTokenArray& rArray )
void ScConditionEntry::SetFormula2( const ScTokenArray& rArray )
{
- DELETEZ( pFormula2 );
+ pFormula2.reset();
if( rArray.GetLen() > 0 )
{
- pFormula2 = new ScTokenArray( rArray );
- bRelRef2 = lcl_HasRelRef( mpDoc, pFormula2 );
+ pFormula2.reset( new ScTokenArray( rArray ) );
+ bRelRef2 = lcl_HasRelRef( mpDoc, pFormula2.get() );
}
StartListening();
@@ -540,7 +535,7 @@ void ScConditionEntry::UpdateReference( sc::RefUpdateContext& rCxt )
}
if (aRes.mbReferenceModified || bChangedPos)
- DELETEZ(pFCell1); // is created again in IsValid
+ pFCell1.reset(); // is created again in IsValid
}
if (pFormula2)
@@ -559,7 +554,7 @@ void ScConditionEntry::UpdateReference( sc::RefUpdateContext& rCxt )
}
if (aRes.mbReferenceModified || bChangedPos)
- DELETEZ(pFCell2); // is created again in IsValid
+ pFCell2.reset(); // is created again in IsValid
}
StartListening();
@@ -570,13 +565,13 @@ void ScConditionEntry::UpdateInsertTab( sc::RefUpdateInsertTabContext& rCxt )
if (pFormula1)
{
pFormula1->AdjustReferenceOnInsertedTab(rCxt, aSrcPos);
- DELETEZ(pFCell1);
+ pFCell1.reset();
}
if (pFormula2)
{
pFormula2->AdjustReferenceOnInsertedTab(rCxt, aSrcPos);
- DELETEZ(pFCell2);
+ pFCell2.reset();
}
ScRangeUpdater::UpdateInsertTab(aSrcPos, rCxt);
@@ -587,13 +582,13 @@ void ScConditionEntry::UpdateDeleteTab( sc::RefUpdateDeleteTabContext& rCxt )
if (pFormula1)
{
pFormula1->AdjustReferenceOnDeletedTab(rCxt, aSrcPos);
- DELETEZ(pFCell1);
+ pFCell1.reset();
}
if (pFormula2)
{
pFormula2->AdjustReferenceOnDeletedTab(rCxt, aSrcPos);
- DELETEZ(pFCell2);
+ pFCell2.reset();
}
ScRangeUpdater::UpdateDeleteTab(aSrcPos, rCxt);
@@ -605,23 +600,23 @@ void ScConditionEntry::UpdateMoveTab( sc::RefUpdateMoveTabContext& rCxt )
if (pFormula1)
{
pFormula1->AdjustReferenceOnMovedTab(rCxt, aSrcPos);
- DELETEZ(pFCell1);
+ pFCell1.reset();
}
if (pFormula2)
{
pFormula2->AdjustReferenceOnMovedTab(rCxt, aSrcPos);
- DELETEZ(pFCell2);
+ pFCell2.reset();
}
StartListening();
}
-static bool lcl_IsEqual( const ScTokenArray* pArr1, const ScTokenArray* pArr2 )
+static bool lcl_IsEqual( const std::unique_ptr<ScTokenArray>& pArr1, const std::unique_ptr<ScTokenArray>& pArr2 )
{
// We only compare the non-RPN array
if ( pArr1 && pArr2 )
- return pArr1->EqualTokens( pArr2 );
+ return pArr1->EqualTokens( pArr2.get() );
else
return !pArr1 && !pArr2; // Both 0? -> the same
}
@@ -666,7 +661,7 @@ void ScConditionEntry::Interpret( const ScAddress& rPos )
bool bDirty = false; // 1 and 2 separate?
std::unique_ptr<ScFormulaCell> pTemp1;
- ScFormulaCell* pEff1 = pFCell1;
+ ScFormulaCell* pEff1 = pFCell1.get();
if ( bRelRef1 )
{
pTemp1.reset(pFormula1 ? new ScFormulaCell(mpDoc, rPos, *pFormula1) : new ScFormulaCell(mpDoc, rPos));
@@ -696,7 +691,7 @@ void ScConditionEntry::Interpret( const ScAddress& rPos )
pTemp1.reset();
std::unique_ptr<ScFormulaCell> pTemp2;
- ScFormulaCell* pEff2 = pFCell2; //@ 1!=2
+ ScFormulaCell* pEff2 = pFCell2.get(); //@ 1!=2
if ( bRelRef2 )
{
pTemp2.reset(pFormula2 ? new ScFormulaCell(mpDoc, rPos, *pFormula2) : new ScFormulaCell(mpDoc, rPos));
@@ -1358,7 +1353,7 @@ ScAddress ScConditionEntry::GetValidSrcPos() const
for (sal_uInt16 nPass = 0; nPass < 2; nPass++)
{
- ScTokenArray* pFormula = nPass ? pFormula2 : pFormula1;
+ ScTokenArray* pFormula = nPass ? pFormula2.get() : pFormula1.get();
if (pFormula)
{
for ( auto t: pFormula->References() )
@@ -1409,7 +1404,7 @@ bool ScConditionEntry::MarkUsedExternalReferences() const
bool bAllMarked = false;
for (sal_uInt16 nPass = 0; !bAllMarked && nPass < 2; nPass++)
{
- ScTokenArray* pFormula = nPass ? pFormula2 : pFormula1;
+ ScTokenArray* pFormula = nPass ? pFormula2.get() : pFormula1.get();
if (pFormula)
bAllMarked = mpDoc->MarkUsedExternalReferences(*pFormula, aSrcPos);
}
More information about the Libreoffice-commits
mailing list