diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-01-29 09:27:06 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-01-29 11:03:29 +0100 |
commit | aa64dbfb76bde6cc29c3569cc9e31d949ce22787 (patch) | |
tree | 58a8f1649cd84dbbe3115c8de9c616ee57c4e34e /sc | |
parent | 4ac86e33433cbc606157ac911bab026a454345aa (diff) |
use unique_ptr in LotusRangeList
Change-Id: Ie99b3a4d6a311b2f5140a00fddbbd53801b8cfb3
Reviewed-on: https://gerrit.libreoffice.org/67045
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/filter/inc/lotrange.hxx | 4 | ||||
-rw-r--r-- | sc/source/filter/lotus/op.cxx | 20 | ||||
-rw-r--r-- | sc/source/filter/lotus/tool.cxx | 25 |
3 files changed, 24 insertions, 25 deletions
diff --git a/sc/source/filter/inc/lotrange.hxx b/sc/source/filter/inc/lotrange.hxx index 96dad2ac9099..4fbbd12a9665 100644 --- a/sc/source/filter/inc/lotrange.hxx +++ b/sc/source/filter/inc/lotrange.hxx @@ -89,7 +89,7 @@ class LotusRangeList private: LR_ID nIdCnt; ScComplexRefData aComplRef; - std::vector<LotusRange*> maRanges; + std::vector<std::unique_ptr<LotusRange>> maRanges; public: LotusRangeList(); @@ -97,7 +97,7 @@ public: inline sal_uInt16 GetIndex( SCCOL nCol, SCROW nRow ); inline sal_uInt16 GetIndex( SCCOL nColS, SCROW nRowS, SCCOL nColE, SCROW nRowE ); sal_uInt16 GetIndex( const LotusRange& ); - void Append( LotusRange* pLR ); + void Append( std::unique_ptr<LotusRange> pLR ); }; inline LR_ID LotusRangeList::GetIndex( SCCOL nCol, SCROW nRow ) diff --git a/sc/source/filter/lotus/op.cxx b/sc/source/filter/lotus/op.cxx index 1cd43ef1b376..ae7f2d0e9050 100644 --- a/sc/source/filter/lotus/op.cxx +++ b/sc/source/filter/lotus/op.cxx @@ -201,13 +201,13 @@ void OP_NamedRange(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) if (ValidColRow( static_cast<SCCOL>(nColSt), nRowSt) && ValidColRow( static_cast<SCCOL>(nColEnd), nRowEnd)) { - LotusRange* pRange; + std::unique_ptr<LotusRange> pRange; if( nColSt == nColEnd && nRowSt == nRowEnd ) - pRange = new LotusRange( static_cast<SCCOL> (nColSt), static_cast<SCROW> (nRowSt) ); + pRange.reset(new LotusRange( static_cast<SCCOL> (nColSt), static_cast<SCROW> (nRowSt) )); else - pRange = new LotusRange( static_cast<SCCOL> (nColSt), static_cast<SCROW> (nRowSt), - static_cast<SCCOL> (nColEnd), static_cast<SCROW> (nRowEnd) ); + pRange.reset(new LotusRange( static_cast<SCCOL> (nColSt), static_cast<SCROW> (nRowSt), + static_cast<SCCOL> (nColEnd), static_cast<SCROW> (nRowEnd) )); sal_Char cBuf[sizeof(cBuffer)+1]; if( rtl::isAsciiDigit( static_cast<unsigned char>(*cBuffer) ) ) @@ -222,7 +222,7 @@ void OP_NamedRange(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) aTmp = ScfTools::ConvertToScDefinedName( aTmp ); - rContext.pLotusRoot->maRangeNames.Append( pRange ); + rContext.pLotusRoot->maRangeNames.Append( std::move(pRange) ); } } @@ -240,13 +240,13 @@ void OP_SymphNamedRange(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) if (ValidColRow( static_cast<SCCOL>(nColSt), nRowSt) && ValidColRow( static_cast<SCCOL>(nColEnd), nRowEnd)) { - LotusRange* pRange; + std::unique_ptr<LotusRange> pRange; if( nType ) - pRange = new LotusRange( static_cast<SCCOL> (nColSt), static_cast<SCROW> (nRowSt) ); + pRange.reset(new LotusRange( static_cast<SCCOL> (nColSt), static_cast<SCROW> (nRowSt) )); else - pRange = new LotusRange( static_cast<SCCOL> (nColSt), static_cast<SCROW> (nRowSt), - static_cast<SCCOL> (nColEnd), static_cast<SCROW> (nRowEnd) ); + pRange.reset(new LotusRange( static_cast<SCCOL> (nColSt), static_cast<SCROW> (nRowSt), + static_cast<SCCOL> (nColEnd), static_cast<SCROW> (nRowEnd) )); sal_Char cBuf[sizeof(cBuffer)+1]; if( rtl::isAsciiDigit( static_cast<unsigned char>(*cBuffer) ) ) @@ -260,7 +260,7 @@ void OP_SymphNamedRange(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) OUString aTmp( cBuf, strlen(cBuf), rContext.pLotusRoot->eCharsetQ ); aTmp = ScfTools::ConvertToScDefinedName( aTmp ); - rContext.pLotusRoot->maRangeNames.Append( pRange ); + rContext.pLotusRoot->maRangeNames.Append( std::move(pRange) ); } } diff --git a/sc/source/filter/lotus/tool.cxx b/sc/source/filter/lotus/tool.cxx index 11063f0c2bd0..dabbd05dcd03 100644 --- a/sc/source/filter/lotus/tool.cxx +++ b/sc/source/filter/lotus/tool.cxx @@ -386,43 +386,42 @@ LotusRangeList::LotusRangeList() LotusRangeList::~LotusRangeList () { - for (const auto& rpRange : maRanges) - delete rpRange; } LR_ID LotusRangeList::GetIndex( const LotusRange &rRef ) { - std::vector<LotusRange*>::iterator pIter = std::find_if(maRanges.begin(), maRanges.end(), - [&rRef](const LotusRange* pRange) { return rRef == *pRange; }); + auto pIter = std::find_if(maRanges.begin(), maRanges.end(), + [&rRef](const std::unique_ptr<LotusRange>& pRange) { return rRef == *pRange; }); if (pIter != maRanges.end()) return (*pIter)->nId; return ID_FAIL; } -void LotusRangeList::Append( LotusRange* pLR ) +void LotusRangeList::Append( std::unique_ptr<LotusRange> pLR ) { - SAL_WARN_IF( !pLR, "sc.filter", "*LotusRangeList::Append(): no pointer!" ); - maRanges.push_back(pLR); + assert( pLR ); + auto pLRTmp = pLR.get(); + maRanges.push_back(std::move(pLR)); ScTokenArray aTokArray; ScSingleRefData* pSingRef = &aComplRef.Ref1; - pSingRef->SetAbsCol(pLR->nColStart); - pSingRef->SetAbsRow(pLR->nRowStart); + pSingRef->SetAbsCol(pLRTmp->nColStart); + pSingRef->SetAbsRow(pLRTmp->nRowStart); - if( pLR->IsSingle() ) + if( pLRTmp->IsSingle() ) aTokArray.AddSingleReference( *pSingRef ); else { pSingRef = &aComplRef.Ref2; - pSingRef->SetAbsCol(pLR->nColEnd); - pSingRef->SetAbsRow(pLR->nRowEnd); + pSingRef->SetAbsCol(pLRTmp->nColEnd); + pSingRef->SetAbsRow(pLRTmp->nRowEnd); aTokArray.AddDoubleReference( aComplRef ); } - pLR->SetId( nIdCnt ); + pLRTmp->SetId( nIdCnt ); nIdCnt++; } |