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

Reply via email to