summaryrefslogtreecommitdiff
path: root/basic
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2012-02-27 16:26:41 +0200
committerTor Lillqvist <tml@iki.fi>2012-03-05 12:57:08 +0200
commit8d4fe3ed1fcd826200e2611e7743b755eff923a6 (patch)
treee31db9dfb6bc9037296d587f7969f94a3007b2fa /basic
parent695f0be4d184f4845cb2fedb1d64bb0597f52be4 (diff)
Convert SbxFactory from SV_DECL_PTRARR_DEL to boost::ptr_vector
Diffstat (limited to 'basic')
-rw-r--r--basic/inc/basic/sbxbase.hxx3
-rw-r--r--basic/source/sbx/sbxbase.cxx25
-rw-r--r--basic/source/sbx/sbxscan.cxx1
3 files changed, 14 insertions, 15 deletions
diff --git a/basic/inc/basic/sbxbase.hxx b/basic/inc/basic/sbxbase.hxx
index 55341fa56cf4..e760c4f76056 100644
--- a/basic/inc/basic/sbxbase.hxx
+++ b/basic/inc/basic/sbxbase.hxx
@@ -33,12 +33,13 @@
#include "svl/svarray.hxx"
#include <basic/sbxdef.hxx>
#include "basicdllapi.h"
+#include <boost/ptr_container/ptr_vector.hpp>
class SbxFactory;
class SbxVariable;
class SbxBasicFormater;
-SV_DECL_PTRARR_DEL(SbxFacs,SbxFactory*,5)
+typedef boost::ptr_vector<SbxFactory> SbxFacs;
// AppData structure for SBX:
struct SbxAppData
diff --git a/basic/source/sbx/sbxbase.cxx b/basic/source/sbx/sbxbase.cxx
index e2987d0724cf..048ea3c046c4 100644
--- a/basic/source/sbx/sbxbase.cxx
+++ b/basic/source/sbx/sbxbase.cxx
@@ -36,11 +36,10 @@
#include <rtl/instance.hxx>
#include <rtl/oustringostreaminserter.hxx>
#include <sal/log.hxx>
+#include <boost/foreach.hpp>
// AppData-Structure for SBX:
-SV_IMPL_PTRARR(SbxFacs,SbxFactory*);
-
TYPEINIT0(SbxBase)
namespace
@@ -147,28 +146,27 @@ void SbxBase::ResetError()
void SbxBase::AddFactory( SbxFactory* pFac )
{
SbxAppData& r = GetSbxData_Impl();
- const SbxFactory* pTemp = pFac;
// From 1996-03-06: take the HandleLast-Flag into account
- sal_uInt16 nPos = r.aFacs.Count(); // Insert position
+ sal_uInt16 nPos = r.aFacs.size(); // Insert position
if( !pFac->IsHandleLast() ) // Only if not self HandleLast
{
// Rank new factory in front of factories with HandleLast
while( nPos > 0 &&
- (static_cast<SbxFactory*>(r.aFacs.GetObject( nPos-1 )))->IsHandleLast() )
+ r.aFacs[ nPos-1 ].IsHandleLast() )
nPos--;
}
- r.aFacs.Insert( pTemp, nPos );
+ r.aFacs.insert( r.aFacs.begin() + nPos, pFac );
}
void SbxBase::RemoveFactory( SbxFactory* pFac )
{
SbxAppData& r = GetSbxData_Impl();
- for( sal_uInt16 i = 0; i < r.aFacs.Count(); i++ )
+ for(SbxFacs::iterator it = r.aFacs.begin(); it != r.aFacs.end(); ++it)
{
- if( r.aFacs.GetObject( i ) == pFac )
+ if( &(*it) == pFac )
{
- r.aFacs.Remove( i, 1 ); break;
+ r.aFacs.release( it ).release(); break;
}
}
}
@@ -200,10 +198,9 @@ SbxBase* SbxBase::Create( sal_uInt16 nSbxId, sal_uInt32 nCreator )
// Unknown type: go over the factories!
SbxAppData& r = GetSbxData_Impl();
SbxBase* pNew = NULL;
- for( sal_uInt16 i = 0; i < r.aFacs.Count(); i++ )
+ BOOST_FOREACH(SbxFactory& rFac, r.aFacs)
{
- SbxFactory* pFac = r.aFacs.GetObject( i );
- pNew = pFac->Create( nSbxId, nCreator );
+ pNew = rFac.Create( nSbxId, nCreator );
if( pNew )
break;
}
@@ -215,9 +212,9 @@ SbxObject* SbxBase::CreateObject( const rtl::OUString& rClass )
{
SbxAppData& r = GetSbxData_Impl();
SbxObject* pNew = NULL;
- for( sal_uInt16 i = 0; i < r.aFacs.Count(); i++ )
+ BOOST_FOREACH(SbxFactory& rFac, r.aFacs)
{
- pNew = r.aFacs.GetObject( i )->CreateObject( rClass );
+ pNew = rFac.CreateObject( rClass );
if( pNew )
break;
}
diff --git a/basic/source/sbx/sbxscan.cxx b/basic/source/sbx/sbxscan.cxx
index 18bb46d57965..a25337709e83 100644
--- a/basic/source/sbx/sbxscan.cxx
+++ b/basic/source/sbx/sbxscan.cxx
@@ -43,6 +43,7 @@
#include "sbxres.hxx"
#include <basic/sbxbase.hxx>
+#include <basic/sbxfac.hxx>
#include <basic/sbxform.hxx>
#include <svtools/svtools.hrc>