summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-05-08 10:33:15 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-05-14 17:12:51 +0200
commit7ebb57228f27a95eb1648500b5becb3febb9d316 (patch)
tree67325c19fc6ce0de57f279588feea3e758f86043
parent38fa68b90ae50d9bf25cf22fef36e030282b44a3 (diff)
loplugin:useuniqueptr in FormulaTokenArray
Change-Id: I5716295d2f0c88c6daf0570941d5dd4c5ff03a33 Reviewed-on: https://gerrit.libreoffice.org/54168 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--formula/source/core/api/token.cxx15
-rw-r--r--include/formula/tokenarray.hxx6
-rw-r--r--sc/source/core/tool/token.cxx55
3 files changed, 39 insertions, 37 deletions
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx
index 1d33b4d93571..649a8d36c443 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -605,8 +605,9 @@ void FormulaTokenArray::Assign( const FormulaTokenArray& r )
FormulaToken** pp;
if( nLen )
{
- pp = pCode = new FormulaToken*[ nLen ];
- memcpy( pp, r.pCode, nLen * sizeof( FormulaToken* ) );
+ pCode.reset(new FormulaToken*[ nLen ]);
+ pp = pCode.get();
+ memcpy( pp, r.pCode.get(), nLen * sizeof( FormulaToken* ) );
for( sal_uInt16 i = 0; i < nLen; i++ )
(*pp++)->IncRef();
mbFinalized = true;
@@ -627,7 +628,7 @@ void FormulaTokenArray::Assign( sal_uInt16 nCode, FormulaToken **pTokens )
assert( pCode == nullptr );
nLen = nCode;
- pCode = new FormulaToken*[ nLen ];
+ pCode.reset(new FormulaToken*[ nLen ]);
mbFinalized = true;
for( sal_uInt16 i = 0; i < nLen; i++ )
@@ -651,14 +652,14 @@ void FormulaTokenArray::Clear()
if( nRPN ) DelRPN();
if( pCode )
{
- FormulaToken** p = pCode;
+ FormulaToken** p = pCode.get();
for( sal_uInt16 i = 0; i < nLen; i++ )
{
(*p++)->DecRef();
}
- delete [] pCode;
+ pCode.reset();
}
- pCode = nullptr; pRPN = nullptr;
+ pRPN = nullptr;
nError = FormulaError::NONE;
nLen = nRPN = 0;
bHyperLink = false;
@@ -775,7 +776,7 @@ FormulaToken* FormulaTokenArray::Add( FormulaToken* t )
}
if( !pCode )
- pCode = new FormulaToken*[ FORMULA_MAXTOKENS ];
+ pCode.reset(new FormulaToken*[ FORMULA_MAXTOKENS ]);
if( nLen < FORMULA_MAXTOKENS - 1 )
{
CheckToken(*t);
diff --git a/include/formula/tokenarray.hxx b/include/formula/tokenarray.hxx
index 087f7eacb83f..c0376812a9fb 100644
--- a/include/formula/tokenarray.hxx
+++ b/include/formula/tokenarray.hxx
@@ -230,7 +230,7 @@ public:
class FORMULA_DLLPUBLIC FormulaTokenArray
{
protected:
- FormulaToken** pCode; // Token code array
+ std::unique_ptr<FormulaToken*[]> pCode; // Token code array
FormulaToken** pRPN; // RPN array
sal_uInt16 nLen; // Length of token array
sal_uInt16 nRPN; // Length of RPN array
@@ -363,11 +363,11 @@ public:
memcpy( pRPN, pData, nSize * sizeof( FormulaToken* ) );
}
- FormulaToken** GetArray() const { return pCode; }
+ FormulaToken** GetArray() const { return pCode.get(); }
FormulaTokenArrayStandardRange Tokens() const
{
- return FormulaTokenArrayStandardRange(pCode, nLen);
+ return FormulaTokenArrayStandardRange(pCode.get(), nLen);
}
FormulaToken** GetCode() const { return pRPN; }
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 6548a82830d7..36b5e9f8e6e9 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -1839,7 +1839,7 @@ bool ScTokenArray::IsFormulaVectorDisabled() const
bool ScTokenArray::IsInvariant() const
{
- FormulaToken** p = pCode;
+ FormulaToken** p = pCode.get();
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
for (; p != pEnd; ++p)
{
@@ -1949,8 +1949,9 @@ ScTokenArray* ScTokenArray::Clone() const
FormulaToken** pp;
if( nLen )
{
- pp = p->pCode = new FormulaToken*[ nLen ];
- memcpy( pp, pCode, nLen * sizeof( formula::FormulaToken* ) );
+ p->pCode.reset(new FormulaToken*[ nLen ]);
+ pp = p->pCode.get();
+ memcpy( pp, pCode.get(), nLen * sizeof( formula::FormulaToken* ) );
for( sal_uInt16 i = 0; i < nLen; i++, pp++ )
{
*pp = (*pp)->Clone();
@@ -1966,7 +1967,7 @@ ScTokenArray* ScTokenArray::Clone() const
FormulaToken* t = *pp;
if( t->GetRef() > 1 )
{
- FormulaToken** p2 = pCode;
+ FormulaToken** p2 = pCode.get();
sal_uInt16 nIdx = 0xFFFF;
for( sal_uInt16 j = 0; j < nLen; j++, p2++ )
{
@@ -2536,7 +2537,7 @@ void ScTokenArray::ReadjustAbsolute3DReferences( const ScDocument* pOldDoc, ScDo
void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddress& rOldPos, const ScAddress& rNewPos,
bool bCheckCopyRange)
{
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN, true);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, true);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -2583,7 +2584,7 @@ void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddres
void ScTokenArray::AdjustSheetLocalNameReferences( SCTAB nOldTab, SCTAB nNewTab )
{
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN, false);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, false);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -2631,7 +2632,7 @@ void ScTokenArray::AdjustSheetLocalNameReferences( SCTAB nOldTab, SCTAB nNewTab
bool ScTokenArray::ReferencesSheet( SCTAB nTab, SCTAB nPosTab ) const
{
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN, false);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, false);
for (size_t j=0; j<2; ++j)
{
FormulaToken* const * pp = aPtrs.maPointerRange[j].mpStart;
@@ -3082,7 +3083,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( const sc::RefUpdateCon
}
}
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -3314,7 +3315,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMove(
assert(!"can't move");
}
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -3437,7 +3438,7 @@ sc::RefUpdateResult ScTokenArray::MoveReference( const ScAddress& rPos, const sc
assert(!"can't move");
}
- FormulaToken** p = pCode;
+ FormulaToken** p = pCode.get();
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
for (; p != pEnd; ++p)
{
@@ -3513,7 +3514,7 @@ sc::RefUpdateResult ScTokenArray::MoveReference( const ScAddress& rPos, const sc
void ScTokenArray::MoveReferenceColReorder(
const ScAddress& rPos, SCTAB nTab, SCROW nRow1, SCROW nRow2, const sc::ColRowReorderMapType& rColMap )
{
- FormulaToken** p = pCode;
+ FormulaToken** p = pCode.get();
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
for (; p != pEnd; ++p)
{
@@ -3576,7 +3577,7 @@ void ScTokenArray::MoveReferenceColReorder(
void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, SCCOL nCol1, SCCOL nCol2, const sc::ColRowReorderMapType& rRowMap )
{
- FormulaToken** p = pCode;
+ FormulaToken** p = pCode.get();
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
for (; p != pEnd; ++p)
{
@@ -3796,7 +3797,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInName(
// Copying cells does not modify named expressions.
return aRes;
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4074,7 +4075,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInMovedName( const sc::RefUpdat
sc::RefUpdateResult aRes;
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4226,7 +4227,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnDeletedTab( const sc::RefUpda
if (rCxt.mnDeletePos < rOldPos.Tab())
aNewPos.IncTab(-1*rCxt.mnSheets);
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4299,7 +4300,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnInsertedTab( const sc::RefUpd
if (rCxt.mnInsertPos <= rOldPos.Tab())
aNewPos.IncTab(rCxt.mnSheets);
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4388,7 +4389,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMovedTab( const sc::RefUpdate
if (adjustTabOnMove(aNewPos, rCxt))
aRes.mbReferenceModified = true;
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4461,7 +4462,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMovedTab( const sc::RefUpdate
void ScTokenArray::AdjustReferenceOnMovedOrigin( const ScAddress& rOldPos, const ScAddress& rNewPos )
{
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4499,7 +4500,7 @@ void ScTokenArray::AdjustReferenceOnMovedOrigin( const ScAddress& rOldPos, const
void ScTokenArray::AdjustReferenceOnMovedOriginIfOtherSheet( const ScAddress& rOldPos, const ScAddress& rNewPos )
{
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4548,7 +4549,7 @@ void ScTokenArray::AdjustReferenceOnMovedOriginIfOtherSheet( const ScAddress& rO
void ScTokenArray::AdjustReferenceOnCopy( const ScAddress& rNewPos )
{
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN, false);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN, false);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4593,7 +4594,7 @@ void ScTokenArray::ClearTabDeleted( const ScAddress& rPos, SCTAB nStartTab, SCTA
if (nEndTab < nStartTab)
return;
- FormulaToken** p = pCode;
+ FormulaToken** p = pCode.get();
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
for (; p != pEnd; ++p)
{
@@ -4729,7 +4730,7 @@ void checkBounds(
void ScTokenArray::CheckRelativeReferenceBounds(
const sc::RefUpdateContext& rCxt, const ScAddress& rPos, SCROW nGroupLen, std::vector<SCROW>& rBounds ) const
{
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4764,7 +4765,7 @@ void ScTokenArray::CheckRelativeReferenceBounds(
void ScTokenArray::CheckRelativeReferenceBounds(
const ScAddress& rPos, SCROW nGroupLen, const ScRange& rRange, std::vector<SCROW>& rBounds ) const
{
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken** pp = aPtrs.maPointerRange[j].mpStart;
@@ -4801,7 +4802,7 @@ void ScTokenArray::CheckExpandReferenceBounds(
const sc::RefUpdateContext& rCxt, const ScAddress& rPos, SCROW nGroupLen, std::vector<SCROW>& rBounds ) const
{
const SCROW nInsRow = rCxt.maRange.aStart.Row();
- TokenPointers aPtrs( pCode, nLen, pRPN, nRPN);
+ TokenPointers aPtrs( pCode.get(), nLen, pRPN, nRPN);
for (size_t j=0; j<2; ++j)
{
FormulaToken* const * pp = aPtrs.maPointerRange[j].mpStart;
@@ -5208,7 +5209,7 @@ OUString ScTokenArray::CreateString( sc::TokenStringContext& rCxt, const ScAddre
OUStringBuffer aBuf;
- FormulaToken** p = pCode;
+ FormulaToken** p = pCode.get();
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
for (; p != pEnd; ++p)
{
@@ -5275,7 +5276,7 @@ void wrapRowRange( ScRange& rRange, SCROW nMaxRow )
void ScTokenArray::WrapReference( const ScAddress& rPos, SCCOL nMaxCol, SCROW nMaxRow )
{
- FormulaToken** p = pCode;
+ FormulaToken** p = pCode.get();
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
for (; p != pEnd; ++p)
{
@@ -5318,7 +5319,7 @@ void ScTokenArray::WrapReference( const ScAddress& rPos, SCCOL nMaxCol, SCROW nM
bool ScTokenArray::NeedsWrapReference( const ScAddress& rPos, SCCOL nMaxCol, SCROW nMaxRow ) const
{
- FormulaToken** p = pCode;
+ FormulaToken** p = pCode.get();
FormulaToken** pEnd = p + static_cast<size_t>(nLen);
for (; p != pEnd; ++p)
{