diff options
author | Noel Grandin <noel@peralex.com> | 2012-06-22 17:45:36 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-06-25 20:13:19 +0200 |
commit | afa691c22026e0b525e6ce76c6f8a2333d7f2202 (patch) | |
tree | 7bf6673642163aab153c8139045015edc29f1a99 /sw | |
parent | 3a6664c1448c94d337a28bb12da8c0cf4f526988 (diff) |
Convert class _SplitTable_Para from using Svptrarr to std::map
Along the way, clean up the code. Using a map is much clearer
than using co-ordinated arrays.
Change-Id: Ic736791e202572cbf7f919f06492d90823537b01
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/docnode/ndtbl.cxx | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx index fc308e3e0d9c..9ea554855fba 100644 --- a/sw/source/core/docnode/ndtbl.cxx +++ b/sw/source/core/docnode/ndtbl.cxx @@ -3291,25 +3291,22 @@ sal_Bool lcl_ChgTblSize( SwTable& rTbl ) class _SplitTable_Para { - SvPtrarr aSrc, aDest; + std::map<SwFrmFmt*, SwFrmFmt*> aSrcDestMap; SwTableNode* pNewTblNd; SwTable& rOldTbl; public: _SplitTable_Para( SwTableNode* pNew, SwTable& rOld ) - : aSrc( 16 ), aDest( 16 ), pNewTblNd( pNew ), rOldTbl( rOld ) + : aSrcDestMap(), pNewTblNd( pNew ), rOldTbl( rOld ) {} - sal_uInt16 SrcFmt_GetPos( void* pFmt ) const - { return aSrc.GetPos( pFmt ); } - - void DestFmt_Insert( void* pFmt ) - { aDest.Insert( pFmt, aDest.Count() ); } - - void SrcFmt_Insert( void* pFmt ) - { aSrc.Insert( pFmt, aSrc.Count() ); } + SwFrmFmt* GetDestFmt( SwFrmFmt* pSrcFmt ) const + { + std::map<SwFrmFmt*, SwFrmFmt*>::const_iterator it = aSrcDestMap.find( pSrcFmt ); + return it == aSrcDestMap.end() ? NULL : it->second; + } - SwFrmFmt* DestFmt_Get( sal_uInt16 nPos ) const - { return (SwFrmFmt*)aDest[ nPos ]; } + void InsertSrcDest( SwFrmFmt* pSrcFmt, SwFrmFmt* pDestFmt ) + { aSrcDestMap[ pSrcFmt ] = pDestFmt; } void ChgBox( SwTableBox* pBox ) { @@ -3324,14 +3321,13 @@ static void lcl_SplitTable_CpyBox( SwTableBox* pBox, _SplitTable_Para* pPara ); static void lcl_SplitTable_CpyLine( SwTableLine* pLn, _SplitTable_Para* pPara ) { SwFrmFmt *pSrcFmt = pLn->GetFrmFmt(); - sal_uInt16 nPos = pPara->SrcFmt_GetPos( pSrcFmt ); - if( USHRT_MAX == nPos ) + SwTableLineFmt* pDestFmt = (SwTableLineFmt*) pPara->GetDestFmt( pSrcFmt ); + if( pDestFmt == NULL ) { - pPara->DestFmt_Insert( pLn->ClaimFrmFmt() ); - pPara->SrcFmt_Insert( pSrcFmt ); + pPara->InsertSrcDest( pSrcFmt, pLn->ClaimFrmFmt() ); } else - pLn->ChgFrmFmt( (SwTableLineFmt*)pPara->DestFmt_Get( nPos ) ); + pLn->ChgFrmFmt( pDestFmt ); for( SwTableBoxes::iterator it = pLn->GetTabBoxes().begin(); it != pLn->GetTabBoxes().end(); ++it) @@ -3341,14 +3337,13 @@ static void lcl_SplitTable_CpyLine( SwTableLine* pLn, _SplitTable_Para* pPara ) static void lcl_SplitTable_CpyBox( SwTableBox* pBox, _SplitTable_Para* pPara ) { SwFrmFmt *pSrcFmt = pBox->GetFrmFmt(); - sal_uInt16 nPos = pPara->SrcFmt_GetPos( pSrcFmt ); - if( USHRT_MAX == nPos ) + SwTableBoxFmt* pDestFmt = (SwTableBoxFmt*)pPara->GetDestFmt( pSrcFmt ); + if( pDestFmt == NULL ) { - pPara->DestFmt_Insert( pBox->ClaimFrmFmt() ); - pPara->SrcFmt_Insert( pSrcFmt ); + pPara->InsertSrcDest( pSrcFmt, pBox->ClaimFrmFmt() ); } else - pBox->ChgFrmFmt( (SwTableBoxFmt*)pPara->DestFmt_Get( nPos ) ); + pBox->ChgFrmFmt( pDestFmt ); if( pBox->GetSttNd() ) pPara->ChgBox( pBox ); |