>From dcb00e7ca3c52d3c371eeb614629e3bcb4861e8b Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Mon, 27 Feb 2012 16:26:41 +0200 Subject: [PATCH] Convert SbxFactory from SV_DECL_PTRARR_DEL to boost::ptr_vector --- basic/inc/basic/sbxbase.hxx | 3 ++- basic/source/sbx/sbxbase.cxx | 25 +++++++++++-------------- basic/source/sbx/sbxscan.cxx | 1 + 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/basic/inc/basic/sbxbase.hxx b/basic/inc/basic/sbxbase.hxx index 55341fa..e760c4f 100644 --- a/basic/inc/basic/sbxbase.hxx +++ b/basic/inc/basic/sbxbase.hxx @@ -33,12 +33,13 @@ #include "svl/svarray.hxx" #include #include "basicdllapi.h" +#include class SbxFactory; class SbxVariable; class SbxBasicFormater; -SV_DECL_PTRARR_DEL(SbxFacs,SbxFactory*,5) +typedef boost::ptr_vector SbxFacs; // AppData structure for SBX: struct SbxAppData diff --git a/basic/source/sbx/sbxbase.cxx b/basic/source/sbx/sbxbase.cxx index e2987d0..048ea3c 100644 --- a/basic/source/sbx/sbxbase.cxx +++ b/basic/source/sbx/sbxbase.cxx @@ -36,11 +36,10 @@ #include #include #include +#include // 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(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 18bb46d..a253377 100644 --- a/basic/source/sbx/sbxscan.cxx +++ b/basic/source/sbx/sbxscan.cxx @@ -43,6 +43,7 @@ #include "sbxres.hxx" #include +#include #include #include -- 1.7.5.4