summaryrefslogtreecommitdiffstats
path: root/sw
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2012-06-22 17:45:36 +0200
committerMichael Stahl <mstahl@redhat.com>2012-06-25 20:13:19 +0200
commitafa691c22026e0b525e6ce76c6f8a2333d7f2202 (patch)
tree7bf6673642163aab153c8139045015edc29f1a99 /sw
parentConvert code from Svptrarr to std::vector (diff)
downloadcore-afa691c22026e0b525e6ce76c6f8a2333d7f2202.tar.gz
core-afa691c22026e0b525e6ce76c6f8a2333d7f2202.zip
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.cxx39
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 );