sw/source/core/docnode/ndtbl.cxx | 45 +++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 25 deletions(-)
New commits: commit ff27d84e08951660edb77938db6ee7dbf806f4f8 Author: Michael Stahl <mst...@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 { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits