sc/inc/document.hxx | 2 sc/source/core/data/documen2.cxx | 32 ++++------ sc/source/core/data/documen3.cxx | 12 +-- sc/source/core/data/documen8.cxx | 4 - sc/source/core/data/documen9.cxx | 4 - sc/source/core/data/document.cxx | 105 ++++++++++++++------------------- sc/source/core/data/document10.cxx | 12 +-- sc/source/core/data/documentimport.cxx | 2 8 files changed, 75 insertions(+), 98 deletions(-)
New commits: commit b8335d6b5b6b0184ed7c5d141c6a956187bcf9cf Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Wed Jul 4 15:35:54 2018 +0200 use std::unique_ptr for ScTable in ScDocument Change-Id: Ic817fbd7953afe9007f9ec6071f53c8beca6dd18 Reviewed-on: https://gerrit.libreoffice.org/56949 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 4d106792c290..07e16a8388de 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -326,7 +326,7 @@ friend class sc::TableColumnBlockPositionSet; friend struct ScMutationGuard; friend struct ScMutationDisable; - typedef std::vector<ScTable*> TableContainer; + typedef std::vector<std::unique_ptr<ScTable>> TableContainer; public: enum class HardRecalcState diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index 378d97e7ddbd..81ce2170d02d 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -544,16 +544,16 @@ void ScDocument::ResetClip( ScDocument* pSourceDoc, const ScMarkData* pMarks ) pSourceDoc->maTabs[i]->GetName(aString); if ( i < static_cast<SCTAB>(maTabs.size()) ) { - maTabs[i] = new ScTable(this, i, aString); + maTabs[i].reset( new ScTable(this, i, aString) ); } else { if( i > static_cast<SCTAB>(maTabs.size()) ) { - maTabs.resize(i, nullptr ); + maTabs.resize(i); } - maTabs.push_back(new ScTable(this, i, aString)); + maTabs.emplace_back(new ScTable(this, i, aString)); } maTabs[i]->SetLayoutRTL( pSourceDoc->maTabs[i]->IsLayoutRTL() ); } @@ -571,9 +571,9 @@ void ScDocument::ResetClip( ScDocument* pSourceDoc, SCTAB nTab ) InitClipPtrs(pSourceDoc); if (nTab >= static_cast<SCTAB>(maTabs.size())) { - maTabs.resize(nTab+1, nullptr ); + maTabs.resize(nTab+1); } - maTabs[nTab] = new ScTable(this, nTab, "baeh"); + maTabs[nTab].reset( new ScTable(this, nTab, "baeh") ); if (nTab < static_cast<SCTAB>(pSourceDoc->maTabs.size()) && pSourceDoc->maTabs[nTab]) maTabs[nTab]->SetLayoutRTL( pSourceDoc->maTabs[nTab]->IsLayoutRTL() ); } @@ -587,10 +587,10 @@ void ScDocument::EnsureTable( SCTAB nTab ) { bool bExtras = !bIsUndo; // Column-Widths, Row-Heights, Flags if (static_cast<size_t>(nTab) >= maTabs.size()) - maTabs.resize(nTab+1, nullptr); + maTabs.resize(nTab+1); if (!maTabs[nTab]) - maTabs[nTab] = new ScTable(this, nTab, "temp", bExtras, bExtras); + maTabs[nTab].reset( new ScTable(this, nTab, "temp", bExtras, bExtras) ); } ScRefCellValue ScDocument::GetRefCellValue( const ScAddress& rPos ) @@ -779,9 +779,9 @@ bool ScDocument::MoveTab( SCTAB nOldPos, SCTAB nNewPos, ScProgress* pProgress ) pUnoBroadcaster->Broadcast( ScUpdateRefHint( URM_REORDER, aSourceRange, 0,0,nDz ) ); - ScTable* pSaveTab = maTabs[nOldPos]; + std::unique_ptr<ScTable> pSaveTab = std::move(maTabs[nOldPos]); maTabs.erase(maTabs.begin()+nOldPos); - maTabs.insert(maTabs.begin()+nNewPos, pSaveTab); + maTabs.insert(maTabs.begin()+nNewPos, std::move(pSaveTab)); TableContainer::iterator it = maTabs.begin(); for (SCTAB i = 0; i < nTabCount; i++) if (maTabs[i]) @@ -833,7 +833,7 @@ bool ScDocument::CopyTab( SCTAB nOldPos, SCTAB nNewPos, const ScMarkData* pOnlyM if (nNewPos >= static_cast<SCTAB>(maTabs.size())) { nNewPos = static_cast<SCTAB>(maTabs.size()); - maTabs.push_back(new ScTable(this, nNewPos, aName)); + maTabs.emplace_back(new ScTable(this, nNewPos, aName)); } else { @@ -858,16 +858,12 @@ bool ScDocument::CopyTab( SCTAB nOldPos, SCTAB nNewPos, const ScMarkData* pOnlyM if ( pUnoBroadcaster ) pUnoBroadcaster->Broadcast( ScUpdateRefHint( URM_INSDEL, aRange, 0,0,1 ) ); - SCTAB i; for (TableContainer::iterator it = maTabs.begin(); it != maTabs.end(); ++it) if (*it && it != (maTabs.begin() + nOldPos)) (*it)->UpdateInsertTab(aCxt); - maTabs.push_back(nullptr); - for (i = static_cast<SCTAB>(maTabs.size())-1; i > nNewPos; i--) - maTabs[i] = maTabs[i - 1]; if (nNewPos <= nOldPos) nOldPos++; - maTabs[nNewPos] = new ScTable(this, nNewPos, aName); + maTabs.emplace(maTabs.begin() + nNewPos, new ScTable(this, nNewPos, aName)); bValid = true; for (TableContainer::iterator it = maTabs.begin(); it != maTabs.end(); ++it) if (*it && it != maTabs.begin()+nOldPos && it != maTabs.begin() + nNewPos) @@ -899,7 +895,7 @@ bool ScDocument::CopyTab( SCTAB nOldPos, SCTAB nNewPos, const ScMarkData* pOnlyM sc::CopyToDocContext aCopyDocCxt(*this); maTabs[nOldPos]->CopyToTable(aCopyDocCxt, 0, 0, MAXCOL, MAXROW, InsertDeleteFlags::ALL, - (pOnlyMarked != nullptr), maTabs[nNewPos], pOnlyMarked, + (pOnlyMarked != nullptr), maTabs[nNewPos].get(), pOnlyMarked, false /*bAsLink*/, true /*bColRowFlags*/, bGlobalNamesToLocal, false /*bCopyCaptions*/ ); maTabs[nNewPos]->SetTabBgColor(maTabs[nOldPos]->GetTabBgColor()); @@ -944,7 +940,7 @@ bool ScDocument::CopyTab( SCTAB nOldPos, SCTAB nNewPos, const ScMarkData* pOnlyM // 1. the updated source ScColumn::nTab members if nNewPos <= nOldPos // 2. row heights and column widths of the destination // 3. RTL settings of the destination - maTabs[nOldPos]->CopyCaptionsToTable( 0, 0, MAXCOL, MAXROW, maTabs[nNewPos], true /*bCloneCaption*/); + maTabs[nOldPos]->CopyCaptionsToTable( 0, 0, MAXCOL, MAXROW, maTabs[nNewPos].get(), true /*bCloneCaption*/); } return bValid; @@ -1021,7 +1017,7 @@ sal_uLong ScDocument::TransferTab( ScDocument* pSrcDoc, SCTAB nSrcPos, } pSrcDoc->maTabs[nSrcPos]->CopyToTable(aCxt, 0, 0, MAXCOL, MAXROW, ( bResultsOnly ? InsertDeleteFlags::ALL & ~InsertDeleteFlags::FORMULA : InsertDeleteFlags::ALL), - false, maTabs[nDestPos] ); + false, maTabs[nDestPos].get() ); } } maTabs[nDestPos]->SetTabNo(nDestPos); diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx index 1b9629c34a9d..d3b912200788 100644 --- a/sc/source/core/data/documen3.cxx +++ b/sc/source/core/data/documen3.cxx @@ -796,7 +796,7 @@ void ScDocument::CopyUpdated( ScDocument* pPosDoc, ScDocument* pDestDoc ) SCTAB nCount = static_cast<SCTAB>(maTabs.size()); for (SCTAB nTab=0; nTab<nCount; nTab++) if (maTabs[nTab] && pPosDoc->maTabs[nTab] && pDestDoc->maTabs[nTab]) - maTabs[nTab]->CopyUpdated( pPosDoc->maTabs[nTab], pDestDoc->maTabs[nTab] ); + maTabs[nTab]->CopyUpdated( pPosDoc->maTabs[nTab].get(), pDestDoc->maTabs[nTab].get() ); } void ScDocument::CopyScenario( SCTAB nSrcTab, SCTAB nDestTab, bool bNewScenario ) @@ -826,7 +826,7 @@ void ScDocument::CopyScenario( SCTAB nSrcTab, SCTAB nDestTab, bool bNewScenario { maTabs[nTab]->SetActiveScenario(false); if ( maTabs[nTab]->GetScenarioFlags() & ScScenarioFlags::TwoWay ) - maTabs[nTab]->CopyScenarioFrom( maTabs[nDestTab] ); + maTabs[nTab]->CopyScenarioFrom( maTabs[nDestTab].get() ); } } } @@ -835,7 +835,7 @@ void ScDocument::CopyScenario( SCTAB nSrcTab, SCTAB nDestTab, bool bNewScenario if (!bNewScenario) // Copy data from the selected scenario { sc::AutoCalcSwitch aACSwitch(*this, false); - maTabs[nSrcTab]->CopyScenarioTo( maTabs[nDestTab] ); + maTabs[nSrcTab]->CopyScenarioTo( maTabs[nDestTab].get() ); sc::SetFormulaDirtyContext aCxt; SetAllFormulasDirty(aCxt); @@ -883,7 +883,7 @@ bool ScDocument::TestCopyScenario( SCTAB nSrcTab, SCTAB nDestTab ) const { if (ValidTab(nSrcTab) && nSrcTab < static_cast<SCTAB>(maTabs.size()) && nDestTab < static_cast<SCTAB>(maTabs.size())&& ValidTab(nDestTab)) - return maTabs[nSrcTab]->TestCopyScenarioTo( maTabs[nDestTab] ); + return maTabs[nSrcTab]->TestCopyScenarioTo( maTabs[nDestTab].get() ); OSL_FAIL("wrong table at TestCopyScenario"); return false; @@ -1679,7 +1679,7 @@ tools::Rectangle ScDocument::GetEmbeddedRect() const // 1/100 mm tools::Rectangle aRect; ScTable* pTable = nullptr; if ( aEmbedRange.aStart.Tab() < static_cast<SCTAB>(maTabs.size()) ) - pTable = maTabs[aEmbedRange.aStart.Tab()]; + pTable = maTabs[aEmbedRange.aStart.Tab()].get(); else OSL_FAIL("table out of range"); if (!pTable) @@ -1770,7 +1770,7 @@ ScRange ScDocument::GetRange( SCTAB nTab, const tools::Rectangle& rMMRect, bool { ScTable* pTable = nullptr; if (nTab < static_cast<SCTAB>(maTabs.size())) - pTable = maTabs[nTab]; + pTable = maTabs[nTab].get(); else OSL_FAIL("table out of range"); if (!pTable) diff --git a/sc/source/core/data/documen8.cxx b/sc/source/core/data/documen8.cxx index 32a1c2cd97cb..51f7c757c726 100644 --- a/sc/source/core/data/documen8.cxx +++ b/sc/source/core/data/documen8.cxx @@ -581,7 +581,7 @@ bool ScDocument::IdleCalcTextWidth() // true = try next again if (!ValidTab(aScope.Tab()) || aScope.Tab() >= static_cast<SCTAB>(maTabs.size()) || !maTabs[aScope.Tab()]) aScope.setTab(0); - ScTable* pTab = maTabs[aScope.Tab()]; + ScTable* pTab = maTabs[aScope.Tab()].get(); ScStyleSheet* pStyle = static_cast<ScStyleSheet*>(aScope.getStylePool()->Find(pTab->aPageStyle, SfxStyleFamily::Page)); OSL_ENSURE( pStyle, "Missing StyleSheet :-/" ); @@ -668,7 +668,7 @@ bool ScDocument::IdleCalcTextWidth() // true = try next again { if ( bNewTab ) { - pTab = maTabs[aScope.Tab()]; + pTab = maTabs[aScope.Tab()].get(); pStyle = static_cast<ScStyleSheet*>(aScope.getStylePool()->Find( pTab->aPageStyle, SfxStyleFamily::Page)); diff --git a/sc/source/core/data/documen9.cxx b/sc/source/core/data/documen9.cxx index d342e49c6bbe..ee80e09a143a 100644 --- a/sc/source/core/data/documen9.cxx +++ b/sc/source/core/data/documen9.cxx @@ -510,10 +510,6 @@ void ScDocument::Clear( bool bFromDestructor ) if (*it) (*it)->GetCondFormList()->clear(); - it = maTabs.begin(); - for (;it != maTabs.end(); ++it) - delete *it; - maTabs.clear(); pSelectionAttr.reset(); diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 37965d887f17..fd69d4b25e1f 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -123,7 +123,7 @@ using ::std::set; namespace { -std::pair<SCTAB,SCTAB> getMarkedTableRange(const std::vector<ScTable*>& rTables, const ScMarkData& rMark) +std::pair<SCTAB,SCTAB> getMarkedTableRange(const std::vector<std::unique_ptr<ScTable>>& rTables, const ScMarkData& rMark) { SCTAB nTabStart = MAXTAB; SCTAB nTabEnd = 0; @@ -175,13 +175,13 @@ void ScDocument::MakeTable( SCTAB nTab,bool _bNeedsNameCheck ) CreateValidTabName( aString ); // no doubles if (nTab < static_cast<SCTAB>(maTabs.size())) { - maTabs[nTab] = new ScTable(this, nTab, aString); + maTabs[nTab].reset( new ScTable(this, nTab, aString) ); } else { while(nTab > static_cast<SCTAB>(maTabs.size())) maTabs.push_back(nullptr); - maTabs.push_back( new ScTable(this, nTab, aString) ); + maTabs.emplace_back( new ScTable(this, nTab, aString) ); } maTabs[nTab]->SetLoadingMedium(bLoadingMedium); } @@ -477,7 +477,7 @@ void ScDocument::AppendTabOnLoad(const OUString& rName) OUString aName = rName; CreateValidTabName(aName); - maTabs.push_back( new ScTable(this, nTabCount, aName) ); + maTabs.emplace_back( new ScTable(this, nTabCount, aName) ); } void ScDocument::SetTabNameOnLoad(SCTAB nTab, const OUString& rName) @@ -496,7 +496,7 @@ void ScDocument::InvalidateStreamOnSave() TableContainer::iterator it = maTabs.begin(), itEnd = maTabs.end(); for (; it != itEnd; ++it) { - ScTable* pTab = *it; + ScTable* pTab = it->get(); if (pTab) pTab->SetStreamValid(false); } @@ -514,7 +514,7 @@ bool ScDocument::InsertTab( if (nPos == SC_TAB_APPEND || nPos >= nTabCount) { nPos = maTabs.size(); - maTabs.push_back( new ScTable(this, nTabCount, rName) ); + maTabs.emplace_back( new ScTable(this, nTabCount, rName) ); if ( bExternalDocument ) maTabs[nTabCount]->SetVisible( false ); } @@ -540,18 +540,11 @@ bool ScDocument::InsertTab( if ( pUnoBroadcaster ) pUnoBroadcaster->Broadcast( ScUpdateRefHint( URM_INSDEL, aRange, 0,0,1 ) ); - SCTAB i; TableContainer::iterator it = maTabs.begin(); for (; it != maTabs.end(); ++it) if ( *it ) (*it)->UpdateInsertTab(aCxt); - maTabs.push_back(nullptr); - for (i = nTabCount; i > nPos; i--) - { - maTabs[i] = maTabs[i - 1]; - } - - maTabs[nPos] = new ScTable(this, nPos, rName); + maTabs.emplace(maTabs.begin() + nPos, new ScTable(this, nPos, rName)); // UpdateBroadcastAreas must be called between UpdateInsertTab, // which ends listening, and StartAllListeners, to not modify @@ -612,7 +605,7 @@ bool ScDocument::InsertTabs( SCTAB nPos, const std::vector<OUString>& rNames, { for ( SCTAB i = 0; i < nNewSheets; ++i ) { - maTabs.push_back( new ScTable(this, nTabCount + i, rNames.at(i)) ); + maTabs.emplace_back( new ScTable(this, nTabCount + i, rNames.at(i)) ); } } else @@ -640,11 +633,9 @@ bool ScDocument::InsertTabs( SCTAB nPos, const std::vector<OUString>& rNames, for (; it != maTabs.end(); ++it) if ( *it ) (*it)->UpdateInsertTab(aCxt); - it = maTabs.begin(); - maTabs.insert(it+nPos,nNewSheets, nullptr); for (SCTAB i = 0; i < nNewSheets; ++i) { - maTabs[nPos + i] = new ScTable(this, nPos + i, rNames.at(i)); + maTabs.emplace(maTabs.begin() + nPos + i, new ScTable(this, nPos + i, rNames.at(i)) ); } // UpdateBroadcastAreas must be called between UpdateInsertTab, @@ -733,18 +724,16 @@ bool ScDocument::DeleteTab( SCTAB nTab ) if ( pUnoBroadcaster ) pUnoBroadcaster->Broadcast( ScUpdateRefHint( URM_INSDEL, aRange, 0,0,-1 ) ); - for (ScTable* pTab : maTabs) + for (std::unique_ptr<ScTable> & pTab : maTabs) if (pTab) pTab->UpdateDeleteTab(aCxt); - TableContainer::iterator it = maTabs.begin() + nTab; - delete *it; - maTabs.erase(it); + maTabs.erase(maTabs.begin() + nTab); // UpdateBroadcastAreas must be called between UpdateDeleteTab, // which ends listening, and StartAllListeners, to not modify // areas that are to be inserted by starting listeners. UpdateBroadcastAreas( URM_INSDEL, aRange, 0,0,-1); - it = maTabs.begin(); + TableContainer::iterator it = maTabs.begin(); for (; it != maTabs.end(); ++it) if ( *it ) (*it)->UpdateCompile(); @@ -830,19 +819,16 @@ bool ScDocument::DeleteTabs( SCTAB nTab, SCTAB nSheets ) if ( pUnoBroadcaster ) pUnoBroadcaster->Broadcast( ScUpdateRefHint( URM_INSDEL, aRange, 0,0,-1*nSheets ) ); - for (ScTable* pTab : maTabs) + for (std::unique_ptr<ScTable> & pTab : maTabs) if (pTab) pTab->UpdateDeleteTab(aCxt); - TableContainer::iterator it = maTabs.begin() + nTab; - TableContainer::iterator itEnd = it + nSheets; - std::for_each(it, itEnd, std::default_delete<ScTable>()); - maTabs.erase(it, itEnd); + maTabs.erase(maTabs.begin() + nTab, maTabs.begin() + nTab + nSheets); // UpdateBroadcastAreas must be called between UpdateDeleteTab, // which ends listening, and StartAllListeners, to not modify // areas that are to be inserted by starting listeners. UpdateBroadcastAreas( URM_INSDEL, aRange, 0,0,-1*nSheets); - it = maTabs.begin(); + TableContainer::iterator it = maTabs.begin(); for (; it != maTabs.end(); ++it) if ( *it ) (*it)->UpdateCompile(); @@ -1226,7 +1212,7 @@ namespace { struct SetDirtyIfPostponedHandler { - void operator() (ScTable* p) + void operator() (std::unique_ptr<ScTable> & p) { if (p) p->SetDirtyIfPostponed(); @@ -1235,7 +1221,7 @@ struct SetDirtyIfPostponedHandler struct BroadcastRecalcOnRefMoveHandler { - void operator() (ScTable* p) + void operator() (std::unique_ptr<ScTable> & p) { if (p) p->BroadcastRecalcOnRefMove(); @@ -1972,11 +1958,11 @@ void ScDocument::InitUndoSelected( const ScDocument* pSrcDoc, const ScMarkData& for (SCTAB nTab = 0; nTab <= rTabSelection.GetLastSelected(); nTab++) if ( rTabSelection.GetTableSelect( nTab ) ) { - ScTable* pTable = new ScTable(this, nTab, OUString(), bColInfo, bRowInfo); + std::unique_ptr<ScTable> pTable(new ScTable(this, nTab, OUString(), bColInfo, bRowInfo)); if (nTab < static_cast<SCTAB>(maTabs.size())) - maTabs[nTab] = pTable; + maTabs[nTab] = std::move(pTable); else - maTabs.push_back(pTable); + maTabs.push_back(std::move(pTable)); } else { @@ -2010,11 +1996,10 @@ void ScDocument::InitUndo( const ScDocument* pSrcDoc, SCTAB nTab1, SCTAB nTab2, maFileURL = pSrcDoc->mpShell->GetMedium()->GetURLObject().GetMainURL(INetURLObject::DecodeMechanism::ToIUri); if ( nTab2 >= static_cast<SCTAB>(maTabs.size())) - maTabs.resize(nTab2 + 1, nullptr); + maTabs.resize(nTab2 + 1); for (SCTAB nTab = nTab1; nTab <= nTab2; nTab++) { - ScTable* pTable = new ScTable(this, nTab, OUString(), bColInfo, bRowInfo); - maTabs[nTab] = pTable; + maTabs[nTab].reset(new ScTable(this, nTab, OUString(), bColInfo, bRowInfo)); } } @@ -2028,13 +2013,13 @@ void ScDocument::AddUndoTab( SCTAB nTab1, SCTAB nTab2, bool bColInfo, bool bRowI if (nTab2 >= static_cast<SCTAB>(maTabs.size())) { - maTabs.resize(nTab2+1,nullptr); + maTabs.resize(nTab2+1); } for (SCTAB nTab = nTab1; nTab <= nTab2; nTab++) if (!maTabs[nTab]) { - maTabs[nTab] = new ScTable(this, nTab, OUString(), bColInfo, bRowInfo); + maTabs[nTab].reset( new ScTable(this, nTab, OUString(), bColInfo, bRowInfo) ); } } @@ -2079,7 +2064,7 @@ void ScDocument::CopyToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1, { if (maTabs[i] && rDestDoc.maTabs[i]) maTabs[i]->CopyToTable(aCxt, nCol1, nRow1, nCol2, nRow2, nFlags, - bOnlyMarked, rDestDoc.maTabs[i], pMarks, + bOnlyMarked, rDestDoc.maTabs[i].get(), pMarks, false, bColRowFlags ); } rDestDoc.SetAutoCalc(bOldAutoCalc); @@ -2106,7 +2091,7 @@ void ScDocument::UndoToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1, { if (maTabs[i] && rDestDoc.maTabs[i]) maTabs[i]->UndoToTable(aCxt, nCol1, nRow1, nCol2, nRow2, nFlags, - bOnlyMarked, rDestDoc.maTabs[i]); + bOnlyMarked, rDestDoc.maTabs[i].get()); } if (nTab2 < MAXTAB) @@ -2165,7 +2150,7 @@ void ScDocument::UndoToDocument(const ScRange& rRange, if (maTabs[i] && rDestDoc.maTabs[i]) maTabs[i]->UndoToTable(aCxt, aNewRange.aStart.Col(), aNewRange.aStart.Row(), aNewRange.aEnd.Col(), aNewRange.aEnd.Row(), - nFlags, bOnlyMarked, rDestDoc.maTabs[i]); + nFlags, bOnlyMarked, rDestDoc.maTabs[i].get()); } if (nTab2 < static_cast<SCTAB>(maTabs.size())) @@ -2230,7 +2215,7 @@ void ScDocument::CopyToClip(const ScClipParam& rClipParam, if ( pMarks && !pMarks->GetTableSelect(i) ) continue; - maTabs[i]->CopyToClip(aCxt, rClipParam.maRanges, pClipDoc->maTabs[i]); + maTabs[i]->CopyToClip(aCxt, rClipParam.maRanges, pClipDoc->maTabs[i].get()); if (mpDrawLayer && bIncludeObjects) { @@ -2250,8 +2235,8 @@ void ScDocument::CopyStaticToDocument(const ScRange& rSrcRange, SCTAB nDestTab, if (!pDestDoc) return; - ScTable* pSrcTab = rSrcRange.aStart.Tab() < static_cast<SCTAB>(maTabs.size()) ? maTabs[rSrcRange.aStart.Tab()] : nullptr; - ScTable* pDestTab = nDestTab < static_cast<SCTAB>(pDestDoc->maTabs.size()) ? pDestDoc->maTabs[nDestTab] : nullptr; + ScTable* pSrcTab = rSrcRange.aStart.Tab() < static_cast<SCTAB>(maTabs.size()) ? maTabs[rSrcRange.aStart.Tab()].get() : nullptr; + ScTable* pDestTab = nDestTab < static_cast<SCTAB>(pDestDoc->maTabs.size()) ? pDestDoc->maTabs[nDestTab].get() : nullptr; if (!pSrcTab || !pDestTab) return; @@ -2324,7 +2309,7 @@ void ScDocument::CopyTabToClip(SCCOL nCol1, SCROW nRow1, sc::CopyToClipContext aCxt(*pClipDoc, false); if (nTab < static_cast<SCTAB>(maTabs.size()) && nTab < static_cast<SCTAB>(pClipDoc->maTabs.size())) if (maTabs[nTab] && pClipDoc->maTabs[nTab]) - maTabs[nTab]->CopyToClip(aCxt, nCol1, nRow1, nCol2, nRow2, pClipDoc->maTabs[nTab]); + maTabs[nTab]->CopyToClip(aCxt, nCol1, nRow1, nCol2, nRow2, pClipDoc->maTabs[nTab].get()); pClipDoc->GetClipParam().mbCutMode = false; } @@ -2366,7 +2351,7 @@ void ScDocument::TransposeClip( ScDocument* pTransClip, InsertDeleteFlags nFlags OSL_ENSURE( pTransClip->maTabs[i], "TransposeClip: Table not there" ); maTabs[i]->TransposeClip( aClipRange.aStart.Col(), aClipRange.aStart.Row(), aClipRange.aEnd.Col(), aClipRange.aEnd.Row(), - pTransClip->maTabs[i], nFlags, bAsLink ); + pTransClip->maTabs[i].get(), nFlags, bAsLink ); if ( mpDrawLayer && ( nFlags & InsertDeleteFlags::OBJECTS ) ) { @@ -2514,7 +2499,7 @@ ScTable* ScDocument::FetchTable( SCTAB nTab ) if (!TableExists(nTab)) return nullptr; - return maTabs[nTab]; + return maTabs[nTab].get(); } const ScTable* ScDocument::FetchTable( SCTAB nTab ) const @@ -2522,7 +2507,7 @@ const ScTable* ScDocument::FetchTable( SCTAB nTab ) const if (!TableExists(nTab)) return nullptr; - return maTabs[nTab]; + return maTabs[nTab].get(); } ScColumnsRange ScDocument::GetColumnsRange( SCTAB nTab, SCCOL nColBegin, SCCOL nColEnd) const @@ -2632,7 +2617,7 @@ void ScDocument::CopyBlockFromClip( while (!rClipTabs[nClipTab]) nClipTab = (nClipTab+1) % static_cast<SCTAB>(rClipTabs.size()); maTabs[i]->CopyFromClip( - rCxt, nCol1, nRow1, nCol2, nRow2, nDx, nDy, rClipTabs[nClipTab]); + rCxt, nCol1, nRow1, nCol2, nRow2, nDx, nDy, rClipTabs[nClipTab].get()); if (rCxt.getClipDoc()->mpDrawLayer && (rCxt.getInsertFlag() & InsertDeleteFlags::OBJECTS)) { @@ -3270,15 +3255,15 @@ void ScDocument::FillTab( const ScRange& rSrcArea, const ScMarkData& rMark, // context used for copying content to the temporary mix document. sc::CopyToDocContext aMixCxt(*pMixDoc); maTabs[i]->CopyToTable(aMixCxt, nStartCol,nStartRow, nEndCol,nEndRow, - InsertDeleteFlags::CONTENTS, false, pMixDoc->maTabs[i] ); + InsertDeleteFlags::CONTENTS, false, pMixDoc->maTabs[i].get() ); } maTabs[i]->DeleteArea( nStartCol,nStartRow, nEndCol,nEndRow, nDelFlags); maTabs[nSrcTab]->CopyToTable(aCxt, nStartCol,nStartRow, nEndCol,nEndRow, - nFlags, false, maTabs[i], nullptr, bAsLink ); + nFlags, false, maTabs[i].get(), nullptr, bAsLink ); if (bDoMix) maTabs[i]->MixData(aMixDocCxt, nStartCol,nStartRow, nEndCol,nEndRow, - nFunction, bSkipEmpty, pMixDoc->maTabs[i] ); + nFunction, bSkipEmpty, pMixDoc->maTabs[i].get() ); } SetAutoCalc( bOldAutoCalc ); @@ -3332,15 +3317,15 @@ void ScDocument::FillTabMarked( SCTAB nSrcTab, const ScMarkData& rMark, sc::CopyToDocContext aMixCxt(*pMixDoc); maTabs[i]->CopyToTable(aMixCxt, nStartCol,nStartRow, nEndCol,nEndRow, - InsertDeleteFlags::CONTENTS, true, pMixDoc->maTabs[i], &rMark ); + InsertDeleteFlags::CONTENTS, true, pMixDoc->maTabs[i].get(), &rMark ); } maTabs[i]->DeleteSelection( nDelFlags, rMark ); maTabs[nSrcTab]->CopyToTable(aCxt, nStartCol,nStartRow, nEndCol,nEndRow, - nFlags, true, maTabs[i], &rMark, bAsLink ); + nFlags, true, maTabs[i].get(), &rMark, bAsLink ); if (bDoMix) - maTabs[i]->MixMarked(aMixDocCxt, rMark, nFunction, bSkipEmpty, pMixDoc->maTabs[i]); + maTabs[i]->MixMarked(aMixDocCxt, rMark, nFunction, bSkipEmpty, pMixDoc->maTabs[i].get()); } SetAutoCalc( bOldAutoCalc ); @@ -3991,7 +3976,7 @@ void ScDocument::CompileXML() pRangeName->CompileUnresolvedXML(aCxt); std::for_each(maTabs.begin(), maTabs.end(), - [&](ScTable* pTab) + [&](std::unique_ptr<ScTable> & pTab) { if (pTab) pTab->CompileXML(aCxt, aProgress); @@ -4021,7 +4006,7 @@ bool ScDocument::CompileErrorCells(FormulaError nErrCode) TableContainer::iterator it = maTabs.begin(), itEnd = maTabs.end(); for (; it != itEnd; ++it) { - ScTable* pTab = *it; + ScTable* pTab = it->get(); if (!pTab) continue; @@ -6558,7 +6543,7 @@ void ScDocument::CreateAllNoteCaptions() TableContainer::iterator it = maTabs.begin(), itEnd = maTabs.end(); for (; it != itEnd; ++it) { - ScTable* p = *it; + ScTable* p = it->get(); if (p) p->CreateAllNoteCaptions(); } @@ -6681,7 +6666,7 @@ SCROW ScDocument::GetNotePosition( SCTAB nTab, SCCOL nCol, size_t nIndex ) const void ScDocument::GetAllNoteEntries( std::vector<sc::NoteEntry>& rNotes ) const { - for (ScTable* pTab : maTabs) + for (const std::unique_ptr<ScTable> & pTab : maTabs) { if (!pTab) continue; diff --git a/sc/source/core/data/document10.cxx b/sc/source/core/data/document10.cxx index 2de34d272730..de1122d5297f 100644 --- a/sc/source/core/data/document10.cxx +++ b/sc/source/core/data/document10.cxx @@ -292,7 +292,7 @@ void ScDocument::PreprocessAllRangeNamesUpdate( const std::map<OUString, std::un TableContainer::iterator it = maTabs.begin(), itEnd = maTabs.end(); for (; it != itEnd; ++it) { - ScTable* p = *it; + ScTable* p = it->get(); p->PreprocessRangeNameUpdate(aEndListenCxt, aCompileCxt); } } @@ -305,7 +305,7 @@ void ScDocument::PreprocessRangeNameUpdate() TableContainer::iterator it = maTabs.begin(), itEnd = maTabs.end(); for (; it != itEnd; ++it) { - ScTable* p = *it; + ScTable* p = it->get(); p->PreprocessRangeNameUpdate(aEndListenCxt, aCompileCxt); } } @@ -318,7 +318,7 @@ void ScDocument::PreprocessDBDataUpdate() TableContainer::iterator it = maTabs.begin(), itEnd = maTabs.end(); for (; it != itEnd; ++it) { - ScTable* p = *it; + ScTable* p = it->get(); p->PreprocessDBDataUpdate(aEndListenCxt, aCompileCxt); } } @@ -330,7 +330,7 @@ void ScDocument::CompileHybridFormula() TableContainer::iterator it = maTabs.begin(), itEnd = maTabs.end(); for (; it != itEnd; ++it) { - ScTable* p = *it; + ScTable* p = it->get(); p->CompileHybridFormula(aStartListenCxt, aCompileCxt); } } @@ -477,7 +477,7 @@ public: mpCxt->setColumnSet( rpColSet); } - void operator() (ScTable* p) + void operator() (std::unique_ptr<ScTable> & p) { if (p) p->StartListeners(*mpCxt, false); @@ -522,7 +522,7 @@ void ScDocument::finalizeOutlineImport() TableContainer::iterator it = maTabs.begin(), itEnd = maTabs.end(); for (; it != itEnd; ++it) { - ScTable* p = *it; + ScTable* p = it->get(); p->finalizeOutlineImport(); } } diff --git a/sc/source/core/data/documentimport.cxx b/sc/source/core/data/documentimport.cxx index d5788a0e2d03..c51acb900d81 100644 --- a/sc/source/core/data/documentimport.cxx +++ b/sc/source/core/data/documentimport.cxx @@ -161,7 +161,7 @@ bool ScDocumentImport::appendSheet(const OUString& rName) if (!ValidTab(nTabCount)) return false; - mpImpl->mrDoc.maTabs.push_back(new ScTable(&mpImpl->mrDoc, nTabCount, rName)); + mpImpl->mrDoc.maTabs.emplace_back(new ScTable(&mpImpl->mrDoc, nTabCount, rName)); return true; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits