Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


On 02/01/2011 01:57 PM, Jonathan Callen wrote:
The attached patch replaces usage of LinkList (declared as
DECLARE_LIST(LinkList, Link*) with std::list<Link>.

I used list<Link> instead of list<Link*> because 1) the elements of the
list were only ever used from within the .cxx file declaring the list
itself and 2) each element was already allocated on addition and
deallocated on removal, so I just made that more explicit by letting
std::list handle it.

As with all my patches, this is LGPLv3+/MPL.


This version of the patch uses BOOST_FOREACH to simplify a few of the loops.

-- 
Jonathan Callen
From 64ddb5ec682dd7bd2adfd8ced73f57c7e4f72f07 Mon Sep 17 00:00:00 2001
From: Jonathan Callen <abcd@gentoo.org>
Date: Tue, 1 Feb 2011 01:32:54 -0500
Subject: [PATCH] Convert tools/list.hxx usage to std::list

---
 svtools/prj/build.lst                 |    2 +-
 svtools/source/config/htmlcfg.cxx     |   19 ++++++++---------
 svtools/source/config/menuoptions.cxx |   34 +++++++++++++++-----------------
 svtools/source/config/miscopt.cxx     |   23 +++++++++------------
 4 files changed, 36 insertions(+), 42 deletions(-)

diff --git a/svtools/prj/build.lst b/svtools/prj/build.lst
index a7d8569..e8ac011 100644
--- a/svtools/prj/build.lst
+++ b/svtools/prj/build.lst
@@ -1,4 +1,4 @@
-st     svtools :       l10n svl offuh toolkit ucbhelper unotools JPEG:jpeg cppu cppuhelper 
comphelper sal sot jvmfwk NULL
+st     svtools :       l10n svl offuh toolkit ucbhelper unotools JPEG:jpeg cppu cppuhelper 
comphelper sal sot jvmfwk BOOST:boost NULL
 st     svtools                                                         usr1    -       all     
st_mkout NULL
 st     svtools\inc                                                     nmake   -       all     
st_inc NULL
 st     svtools\bmpmaker                                        nmake   -       all     st_bmp 
st_inc NULL
diff --git a/svtools/source/config/htmlcfg.cxx b/svtools/source/config/htmlcfg.cxx
index b44dfe2..18a3fdd 100644
--- a/svtools/source/config/htmlcfg.cxx
+++ b/svtools/source/config/htmlcfg.cxx
@@ -33,9 +33,10 @@
 #include <svtools/parhtml.hxx>
 #include <unotools/syslocale.hxx>
 #include <tools/debug.hxx>
-#include <tools/list.hxx>
 #include <tools/link.hxx>
 #include <sal/macros.h>
+#include <list>
+#include <boost/foreach.hpp>
 
 // -----------------------------------------------------------------------
 #define HTMLCFG_UNKNOWN_TAGS                   0x01
@@ -54,13 +55,11 @@ using namespace com::sun::star::uno;
 
 static SvxHtmlOptions* pOptions = 0;
 
-DECLARE_LIST( LinkList, Link * )
-
 #define C2U(cChar) OUString::createFromAscii(cChar)
 
 struct HtmlOptions_Impl
 {
-    LinkList    aList;
+    ::std::list<Link> aList;
     sal_Int32  nFlags;
     sal_Int32  nExportMode;
     sal_Int32  aFontSizeArr[HTML_FONT_COUNT];
@@ -268,16 +267,16 @@ void      SvxHtmlOptions::Commit()
 
 void SvxHtmlOptions::AddListenerLink( const Link& rLink )
 {
-    pImp->aList.Insert( new Link( rLink ) );
+    pImp->aList.push_back( rLink );
 }
 
 void SvxHtmlOptions::RemoveListenerLink( const Link& rLink )
 {
-    for ( USHORT n=0; n<pImp->aList.Count(); n++ )
+    for ( ::std::list<Link>::iterator iter = pImp->aList.begin(); iter != pImp->aList.end(); 
++iter )
     {
-        if ( (*pImp->aList.GetObject(n) ) == rLink )
+        if ( *iter == rLink )
         {
-            delete pImp->aList.Remove(n);
+            pImp->aList.erase(iter);
             break;
         }
     }
@@ -285,8 +284,8 @@ void SvxHtmlOptions::RemoveListenerLink( const Link& rLink )
 
 void SvxHtmlOptions::CallListeners()
 {
-    for ( USHORT n = 0; n < pImp->aList.Count(); ++n )
-        pImp->aList.GetObject(n)->Call( this );
+    BOOST_FOREACH(const Link& link, pImp->aList)
+        link.Call( this );
 }
 
 
diff --git a/svtools/source/config/menuoptions.cxx b/svtools/source/config/menuoptions.cxx
index e0b57c5..48e7678 100644
--- a/svtools/source/config/menuoptions.cxx
+++ b/svtools/source/config/menuoptions.cxx
@@ -40,6 +40,9 @@
 #include <rtl/logfile.hxx>
 #include "itemholder2.hxx"
 
+#include <list>
+#include <boost/foreach.hpp>
+
 
//_________________________________________________________________________________________________________________
 //     namespaces
 
//_________________________________________________________________________________________________________________
@@ -71,8 +74,6 @@ using namespace ::com::sun::star::uno ;
 #define PROPERTYCOUNT                           4
 
 #include <tools/link.hxx>
-#include <tools/list.hxx>
-DECLARE_LIST( LinkList, Link * )
 
 
//_________________________________________________________________________________________________________________
 //     private declarations!
@@ -85,7 +86,7 @@ class SvtMenuOptions_Impl : public ConfigItem
     
//-------------------------------------------------------------------------------------------------------------
 
     private:
-        LinkList    aList;
+        ::std::list<Link> aList;
         sal_Bool       m_bDontHideDisabledEntries                      ;       /// cache 
"DontHideDisabledEntries" of Menu section
         sal_Bool       m_bFollowMouse                                          ;       /// cache 
"FollowMouse" of Menu section
         sal_Int16      m_nMenuIcons                                            ;       /// cache 
"MenuIcons" of Menu section
@@ -171,8 +172,8 @@ class SvtMenuOptions_Impl : public ConfigItem
                     {
                         m_bDontHideDisabledEntries = bState;
                         SetModified();
-                        for ( USHORT n=0; n<aList.Count(); n++ )
-                            aList.GetObject(n)->Call( this );
+                        BOOST_FOREACH(const Link& link, aList)
+                            link.Call( this );
                         Commit();
                     }
 
@@ -180,8 +181,8 @@ class SvtMenuOptions_Impl : public ConfigItem
                     {
                         m_bFollowMouse = bState;
                         SetModified();
-                        for ( USHORT n=0; n<aList.Count(); n++ )
-                            aList.GetObject(n)->Call( this );
+                        BOOST_FOREACH(const Link& link, aList)
+                            link.Call( this );
                         Commit();
                     }
 
@@ -189,8 +190,8 @@ class SvtMenuOptions_Impl : public ConfigItem
                     {
                         m_nMenuIcons = nState;
                         SetModified();
-                        for ( USHORT n=0; n<aList.Count(); n++ )
-                            aList.GetObject(n)->Call( this );
+                        BOOST_FOREACH(const Link& link, aList)
+                            link.Call( this );
                         Commit();
                     }
 
@@ -300,9 +301,6 @@ SvtMenuOptions_Impl::~SvtMenuOptions_Impl()
     {
         Commit();
     }
-
-    for ( USHORT n=0; n<aList.Count(); )
-        delete aList.Remove(n);
 }
 
 
//*****************************************************************************************************************
@@ -353,8 +351,8 @@ void SvtMenuOptions_Impl::Notify( const Sequence< OUString >& seqPropertyNames )
     if ( bMenuSettingsChanged )
         m_nMenuIcons = bSystemMenuIcons ? 2 : bMenuIcons;
 
-    for ( USHORT n=0; n<aList.Count(); n++ )
-        aList.GetObject(n)->Call( this );
+    BOOST_FOREACH(const Link& link, aList)
+        link.Call( this );
 }
 
 
//*****************************************************************************************************************
@@ -417,16 +415,16 @@ Sequence< OUString > SvtMenuOptions_Impl::impl_GetPropertyNames()
 
 void SvtMenuOptions_Impl::AddListenerLink( const Link& rLink )
 {
-    aList.Insert( new Link( rLink ) );
+    aList.push_back( rLink );
 }
 
 void SvtMenuOptions_Impl::RemoveListenerLink( const Link& rLink )
 {
-    for ( USHORT n=0; n<aList.Count(); n++ )
+    for ( ::std::list<Link>::iterator iter = aList.begin(); iter != aList.end(); ++iter )
     {
-        if ( (*aList.GetObject(n) ) == rLink )
+        if ( *iter == rLink )
         {
-            delete aList.Remove(n);
+            aList.erase(iter);
             break;
         }
     }
diff --git a/svtools/source/config/miscopt.cxx b/svtools/source/config/miscopt.cxx
index f5aa5db..14c302c 100644
--- a/svtools/source/config/miscopt.cxx
+++ b/svtools/source/config/miscopt.cxx
@@ -39,7 +39,6 @@
 #include <com/sun/star/uno/Any.hxx>
 #include <com/sun/star/uno/Sequence.hxx>
 #include <tools/link.hxx>
-#include <tools/list.hxx>
 #include <tools/wldcrd.hxx>
 #include <tools/urlobj.hxx>
 
@@ -49,6 +48,9 @@
 #include <imgdef.hxx>
 #include <vcl/svapp.hxx>
 
+#include <list>
+#include <boost/foreach.hpp>
+
 
//_________________________________________________________________________________________________________________
 //     namespaces
 
//_________________________________________________________________________________________________________________
@@ -94,8 +96,6 @@ using namespace ::com::sun::star;
 
 #define VCL_TOOLBOX_STYLE_FLAT                         ((USHORT)0x0004) // from <vcl/toolbox.hxx>
 
-DECLARE_LIST( LinkList, Link * )
-
 
//_________________________________________________________________________________________________________________
 //     private declarations!
 
//_________________________________________________________________________________________________________________
@@ -107,7 +107,7 @@ class SvtMiscOptions_Impl : public ConfigItem
     
//-------------------------------------------------------------------------------------------------------------
 
     private:
-    LinkList    aList;
+    ::std::list<Link> aList;
     sal_Bool    m_bUseSystemFileDialog;
     sal_Bool    m_bIsUseSystemFileDialogRO;
     sal_Bool    m_bTryODMADialog;
@@ -469,9 +469,6 @@ SvtMiscOptions_Impl::~SvtMiscOptions_Impl()
     {
         Commit();
     }
-
-    for ( USHORT n=0; n<aList.Count(); )
-        delete aList.Remove(n);
 }
 
 static int lcl_MapPropertyName( const ::rtl::OUString rCompare,
@@ -580,16 +577,16 @@ void SvtMiscOptions_Impl::Load( const Sequence< OUString >& rPropertyNames )
 
 void SvtMiscOptions_Impl::AddListenerLink( const Link& rLink )
 {
-    aList.Insert( new Link( rLink ) );
+    aList.push_back( rLink );
 }
 
 void SvtMiscOptions_Impl::RemoveListenerLink( const Link& rLink )
 {
-    for ( USHORT n=0; n<aList.Count(); n++ )
+    for ( ::std::list<Link>::iterator iter = aList.begin(); iter != aList.end(); ++iter )
     {
-        if ( (*aList.GetObject(n) ) == rLink )
+        if ( *iter == rLink )
         {
-            delete aList.Remove(n);
+            aList.erase(iter);
             break;
         }
     }
@@ -597,8 +594,8 @@ void SvtMiscOptions_Impl::RemoveListenerLink( const Link& rLink )
 
 void SvtMiscOptions_Impl::CallListeners()
 {
-    for ( USHORT n = 0; n < aList.Count(); ++n )
-        aList.GetObject(n)->Call( this );
+    BOOST_FOREACH(const Link& link, aList)
+        link.Call( this );
 }
 
 void SvtMiscOptions_Impl::SetToolboxStyle( sal_Int16 nStyle, bool _bSetModified )
-- 
1.7.4.rc3

Attachment: signature.asc
Description: OpenPGP digital signature


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.