diff options
author | Noel Grandin <noel@peralex.com> | 2012-07-17 15:12:40 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-07-25 14:13:46 +0200 |
commit | 89bdd3ae05a30de446119159f86daf692210fcd3 (patch) | |
tree | e724997f8b5f1a06ab7542a0b5d969edd59fef42 /sw | |
parent | b09b1ed26437c6e801ce71363a4416031cb40920 (diff) |
Convert SV_DECL_PTRARR_DEL(SwRedlineSaveDatas) to std::vector
Change-Id: Ia12d7f9020ca492470cc8ff48df1cc5988c05853
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/inc/UndoCore.hxx | 8 | ||||
-rw-r--r-- | sw/source/core/undo/undobj.cxx | 38 | ||||
-rw-r--r-- | sw/source/core/undo/unredln.cxx | 4 |
3 files changed, 29 insertions, 21 deletions
diff --git a/sw/source/core/inc/UndoCore.hxx b/sw/source/core/inc/UndoCore.hxx index d05bf0b25f86..460a0b6bd2ea 100644 --- a/sw/source/core/inc/UndoCore.hxx +++ b/sw/source/core/inc/UndoCore.hxx @@ -45,8 +45,12 @@ namespace sw { class IShellCursorSupplier; } -typedef SwRedlineSaveData* SwRedlineSaveDataPtr; -SV_DECL_PTRARR_DEL( SwRedlineSaveDatas, SwRedlineSaveDataPtr, 8 ) +class SwRedlineSaveDatas : public std::vector<SwRedlineSaveData*> { +public: + ~SwRedlineSaveDatas() { DeleteAndDestroyAll(); } + + void DeleteAndDestroyAll(); +}; namespace sw { class SW_DLLPRIVATE UndoRedoContext diff --git a/sw/source/core/undo/undobj.cxx b/sw/source/core/undo/undobj.cxx index 28703e102367..a67586bf5b72 100644 --- a/sw/source/core/undo/undobj.cxx +++ b/sw/source/core/undo/undobj.cxx @@ -65,8 +65,6 @@ public: #endif }; -SV_IMPL_PTRARR( SwRedlineSaveDatas, SwRedlineSaveDataPtr ) - // This class saves the Pam as sal_uInt16s and can recompose those into a PaM SwUndRng::SwUndRng() : nSttNode( 0 ), nEndNode( 0 ), nSttCntnt( 0 ), nEndCntnt( 0 ) @@ -1032,8 +1030,7 @@ void SwRedlineSaveData::RedlineToDoc( SwPaM& rPam ) sal_Bool SwUndo::FillSaveData( const SwPaM& rRange, SwRedlineSaveDatas& rSData, sal_Bool bDelRange, sal_Bool bCopyNext ) { - if( rSData.Count() ) - rSData.DeleteAndDestroy( 0, rSData.Count() ); + rSData.DeleteAndDestroyAll(); SwRedlineSaveData* pNewData; const SwPosition *pStt = rRange.Start(), *pEnd = rRange.End(); @@ -1051,18 +1048,17 @@ sal_Bool SwUndo::FillSaveData( const SwPaM& rRange, SwRedlineSaveDatas& rSData, { pNewData = new SwRedlineSaveData( eCmpPos, *pStt, *pEnd, *pRedl, bCopyNext ); - rSData.Insert( pNewData, rSData.Count() ); + rSData.push_back( pNewData ); } } - if( rSData.Count() && bDelRange ) + if( !rSData.empty() && bDelRange ) rRange.GetDoc()->DeleteRedline( rRange, false, USHRT_MAX ); - return 0 != rSData.Count(); + return !rSData.empty(); } sal_Bool SwUndo::FillSaveDataForFmt( const SwPaM& rRange, SwRedlineSaveDatas& rSData ) { - if( rSData.Count() ) - rSData.DeleteAndDestroy( 0, rSData.Count() ); + rSData.DeleteAndDestroyAll(); SwRedlineSaveData* pNewData; const SwPosition *pStt = rRange.Start(), *pEnd = rRange.End(); @@ -1082,13 +1078,13 @@ sal_Bool SwUndo::FillSaveDataForFmt( const SwPaM& rRange, SwRedlineSaveDatas& rS { pNewData = new SwRedlineSaveData( eCmpPos, *pStt, *pEnd, *pRedl, sal_True ); - rSData.Insert( pNewData, rSData.Count() ); + rSData.push_back( pNewData ); } } } - return 0 != rSData.Count(); + return !rSData.empty(); } void SwUndo::SetSaveData( SwDoc& rDoc, const SwRedlineSaveDatas& rSData ) @@ -1097,12 +1093,12 @@ void SwUndo::SetSaveData( SwDoc& rDoc, const SwRedlineSaveDatas& rSData ) rDoc.SetRedlineMode_intern( (RedlineMode_t)(( eOld & ~nsRedlineMode_t::REDLINE_IGNORE) | nsRedlineMode_t::REDLINE_ON )); SwPaM aPam( rDoc.GetNodes().GetEndOfContent() ); - for( sal_uInt16 n = rSData.Count(); n; ) + for( sal_uInt16 n = rSData.size(); n; ) rSData[ --n ]->RedlineToDoc( aPam ); #if OSL_DEBUG_LEVEL > 0 // check redline count against count saved in RedlineSaveData object - assert((rSData.Count() == 0) || + assert(rSData.empty() || (rSData[0]->nRedlineCount == rDoc.GetRedlineTbl().Count())); // "redline count not restored properly" #endif @@ -1112,7 +1108,7 @@ void SwUndo::SetSaveData( SwDoc& rDoc, const SwRedlineSaveDatas& rSData ) sal_Bool SwUndo::HasHiddenRedlines( const SwRedlineSaveDatas& rSData ) { - for( sal_uInt16 n = rSData.Count(); n; ) + for( sal_uInt16 n = rSData.size(); n; ) if( rSData[ --n ]->GetMvSttIdx() ) return sal_True; return sal_False; @@ -1124,10 +1120,10 @@ sal_Bool SwUndo::CanRedlineGroup( SwRedlineSaveDatas& rCurr, sal_Bool bRet = sal_False; sal_uInt16 n; - if( rCurr.Count() == rCheck.Count() ) + if( rCurr.size() == rCheck.size() ) { bRet = sal_True; - for( n = 0; n < rCurr.Count(); ++n ) + for( n = 0; n < rCurr.size(); ++n ) { const SwRedlineSaveData& rSet = *rCurr[ n ]; const SwRedlineSaveData& rGet = *rCheck[ n ]; @@ -1143,7 +1139,7 @@ sal_Bool SwUndo::CanRedlineGroup( SwRedlineSaveDatas& rCurr, } if( bRet ) - for( n = 0; n < rCurr.Count(); ++n ) + for( n = 0; n < rCurr.size(); ++n ) { SwRedlineSaveData& rSet = *rCurr[ n ]; const SwRedlineSaveData& rGet = *rCheck[ n ]; @@ -1200,4 +1196,12 @@ bool IsDestroyFrameAnchoredAtChar(SwPosition const & rAnchorPos, ); } +void SwRedlineSaveDatas::DeleteAndDestroyAll() +{ + for( const_iterator it = begin(); it != end(); ++it ) + delete *it; + clear(); +} + + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/undo/unredln.cxx b/sw/source/core/undo/unredln.cxx index 4f74499ce9ec..6938d91e5724 100644 --- a/sw/source/core/undo/unredln.cxx +++ b/sw/source/core/undo/unredln.cxx @@ -90,7 +90,7 @@ SwUndoRedline::~SwUndoRedline() sal_uInt16 SwUndoRedline::GetRedlSaveCount() const { - return pRedlSaveData ? pRedlSaveData->Count() : 0; + return pRedlSaveData ? pRedlSaveData->size() : 0; } void SwUndoRedline::UndoImpl(::sw::UndoRedoContext & rContext) @@ -106,7 +106,7 @@ void SwUndoRedline::UndoImpl(::sw::UndoRedoContext & rContext) SetSaveData( *pDoc, *pRedlSaveData ); if( bHiddenRedlines ) { - pRedlSaveData->DeleteAndDestroy( 0, pRedlSaveData->Count() ); + pRedlSaveData->DeleteAndDestroyAll(); nEndExtra = pDoc->GetNodes().GetEndOfExtras().GetIndex() - nEndExtra; nSttNode += nEndExtra; |