Ping?
On 2012-02-27 16:31, Noel Grandin wrote:
Hi
License is on file.
Regards, Noel Grandin
Disclaimer: http://www.peralex.com/disclaimer.html
From dcb00e7ca3c52d3c371eeb614629e3bcb4861e8b Mon Sep 17 00:00:00 2001
From: Noel Grandin <noel@peralex.com>
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 <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 e2987d0..048ea3c 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 18bb46d..a253377 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>
--
1.7.5.4
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.