[Libreoffice-commits] .: sw/source
Michael Stahl
mst at kemper.freedesktop.org
Mon Jun 25 13:47:16 PDT 2012
sw/source/core/docnode/ndtbl.cxx | 45 +++++++++++++++++----------------------
1 file changed, 20 insertions(+), 25 deletions(-)
New commits:
commit ff27d84e08951660edb77938db6ee7dbf806f4f8
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon Jun 25 22:45:07 2012 +0200
change lcl_SetDfltBoxAttr to use a std::map
Should hopefully fix the tinderbox breakage due to C++11 syntax as well.
Change-Id: I2805b7aae5fd1639177aa9d319652148f347393e
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 9ea5548..3e4ddc2 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -143,36 +143,31 @@ void lcl_SetDfltBoxAttr( SwFrmFmt& rFmt, sal_uInt8 nId )
rFmt.SetFmtAttr( aBox );
}
-typedef struct {
- SwFrmFmt* pBoxFrmFmt;
- SwTableBoxFmt* pTableBoxFmt;
-} DfltBoxAttrTmp;
-typedef std::vector<DfltBoxAttrTmp> DfltBoxAttrTmpVec;
-typedef std::vector<DfltBoxAttrTmpVec*> DfltBoxAttrTmpVecVec;
-
-void lcl_SetDfltBoxAttr( SwTableBox& rBox, DfltBoxAttrTmpVecVec &rBoxFmtArr, sal_uInt8 nId,
- const SwTableAutoFmt* pAutoFmt = 0 )
+typedef std::map<SwFrmFmt *, SwTableBoxFmt *> DfltBoxAttrMap_t;
+typedef std::vector<DfltBoxAttrMap_t *> DfltBoxAttrList_t;
+
+static void
+lcl_SetDfltBoxAttr(SwTableBox& rBox, DfltBoxAttrList_t & rBoxFmtArr,
+ sal_uInt8 const nId, SwTableAutoFmt const*const pAutoFmt = 0)
{
- DfltBoxAttrTmpVec* pArr = rBoxFmtArr[ nId ];
- if( !pArr )
+ DfltBoxAttrMap_t * pMap = rBoxFmtArr[ nId ];
+ if (!pMap)
{
- pArr = new DfltBoxAttrTmpVec;
- rBoxFmtArr[ nId ] = pArr;
+ pMap = new DfltBoxAttrMap_t;
+ rBoxFmtArr[ nId ] = pMap;
}
SwTableBoxFmt* pNewTableBoxFmt = 0;
SwFrmFmt* pBoxFrmFmt = rBox.GetFrmFmt();
- for( sal_uInt16 n = 0; n < pArr->size(); ++n )
- if( (*pArr)[n].pBoxFrmFmt == pBoxFrmFmt )
- {
- pNewTableBoxFmt = (*pArr)[n].pTableBoxFmt;
- break;
- }
-
- if( !pNewTableBoxFmt )
+ DfltBoxAttrMap_t::iterator const iter(pMap->find(pBoxFrmFmt));
+ if (pMap->end() != iter)
+ {
+ pNewTableBoxFmt = iter->second;
+ }
+ else
{
SwDoc* pDoc = pBoxFrmFmt->GetDoc();
- // das Format ist also nicht vorhanden, also neu erzeugen
+ // format does not exist, so create it
pNewTableBoxFmt = pDoc->MakeTableBoxFmt();
pNewTableBoxFmt->SetFmtAttr( pBoxFrmFmt->GetAttrSet().Get( RES_FRM_SIZE ) );
@@ -183,7 +178,7 @@ void lcl_SetDfltBoxAttr( SwTableBox& rBox, DfltBoxAttrTmpVecVec &rBoxFmtArr, sal
else
::lcl_SetDfltBoxAttr( *pNewTableBoxFmt, nId );
- pArr->push_back( { pBoxFrmFmt, pNewTableBoxFmt } );
+ (*pMap)[pBoxFrmFmt] = pNewTableBoxFmt;
}
rBox.ChgFrmFmt( pNewTableBoxFmt );
}
@@ -763,11 +758,11 @@ const SwTable* SwDoc::TextToTable( const SwInsertTableOptions& rInsTblOpts,
if( pTAFmt || ( rInsTblOpts.mnInsMode & tabopts::DEFAULT_BORDER) )
{
sal_uInt8 nBoxArrLen = pTAFmt ? 16 : 4;
- boost::scoped_ptr< DfltBoxAttrTmpVecVec > aBoxFmtArr1;
+ boost::scoped_ptr< DfltBoxAttrList_t > aBoxFmtArr1;
boost::scoped_ptr< std::vector<SwTableBoxFmt*> > aBoxFmtArr2;
if( bUseBoxFmt )
{
- aBoxFmtArr1.reset(new DfltBoxAttrTmpVecVec( nBoxArrLen, NULL ));
+ aBoxFmtArr1.reset(new DfltBoxAttrList_t( nBoxArrLen, NULL ));
}
else
{
More information about the Libreoffice-commits
mailing list