(I'm having trouble with logerrit)
This replaces the ScaList class used in scaddins with/source with std::vector.
Odd issues:
- I've written a wrap around to std::vector<ScaFuncData*> since the original
ScaFuncDataList class would generate its contents in the constructor and
supported looking contents up by name.
- ScaList, ScaOUStringList and ScaFuncDataList were all defined twice. This
patch has maintained doubling up the wrapper class for the moment.
--
Ryan McCoskrie
North Canterbury, New Zealand
diff --git a/scaddins/source/datefunc/datefunc.cxx b/scaddins/source/datefunc/datefunc.cxx
index 64679ff..3de398d 100644
--- a/scaddins/source/datefunc/datefunc.cxx
+++ b/scaddins/source/datefunc/datefunc.cxx
@@ -35,38 +35,6 @@ using namespace ::com::sun::star;
#define STR_FROM_ANSI( s ) OUString( s, strlen( s ), RTL_TEXTENCODING_MS_1252 )
-const sal_uInt32 ScaList::nStartSize = 16;
-const sal_uInt32 ScaList::nIncrSize = 16;
-
-ScaList::ScaList() :
- pData( new void*[ nStartSize ] ),
- nSize( nStartSize ),
- nCount( 0 ),
- nCurr( 0 )
-{
-}
-
-ScaList::~ScaList()
-{
- delete[] pData;
-}
-
-void ScaList::_Grow()
-{
- nSize += nIncrSize;
-
- void** pNewData = new void*[ nSize ];
- memcpy( pNewData, pData, nCount * sizeof( void* ) );
-
- delete[] pData;
- pData = pNewData;
-}
-
-ScaStringList::~ScaStringList()
-{
- for( OUString* pStr = First(); pStr; pStr = Next() )
- delete pStr;
-}
ScaResId::ScaResId( sal_uInt16 nId, ResMgr& rResMgr ) :
ResId( nId, rResMgr )
@@ -109,7 +77,7 @@ ScaFuncData::ScaFuncData( const ScaFuncDataBase& rBaseData, ResMgr& rResMgr ) :
const ResStringArray& rArr = aArrLoader.GetStringArray();
for( sal_uInt32 nIndex = 0; nIndex < rArr.Count(); nIndex++ )
- aCompList.Append( rArr.GetString( nIndex ) );
+ aCompList.push_back( rArr.GetString( nIndex ) );
}
ScaFuncData::~ScaFuncData()
@@ -125,31 +93,30 @@ sal_uInt16 ScaFuncData::GetStrIndex( sal_uInt16 nParam ) const
ScaFuncDataList::ScaFuncDataList( ResMgr& rResMgr ) :
- nLast( 0xFFFFFFFF )
+ nLast( contents.begin() )
{
for( sal_uInt16 nIndex = 0; nIndex < SAL_N_ELEMENTS(pFuncDataArr); nIndex++ )
- Append( new ScaFuncData( pFuncDataArr[ nIndex ], rResMgr ) );
+ contents.push_back( new ScaFuncData( pFuncDataArr[ nIndex ], rResMgr ) );
}
ScaFuncDataList::~ScaFuncDataList()
{
- for( ScaFuncData* pFData = First(); pFData; pFData = Next() )
- delete pFData;
+ for( std::vector<ScaFuncData*>::iterator it = contents.begin(); it != contents.end(); ++it )
+ delete *nLast;
}
-const ScaFuncData* ScaFuncDataList::Get( const OUString& rProgrammaticName ) const
+const ScaFuncData* ScaFuncDataList::Get( const OUString& rProgrammaticName )
{
if( aLastName == rProgrammaticName )
- return Get( nLast );
+ return *nLast;
- for( sal_uInt32 nIndex = 0; nIndex < Count(); nIndex++ )
+ for( std::vector<ScaFuncData*>::iterator it = contents.begin(); it != contents.end(); ++it )
{
- const ScaFuncData* pCurr = Get( nIndex );
- if( pCurr->Is( rProgrammaticName ) )
+ if( (*it)->Is( rProgrammaticName ) )
{
- const_cast< ScaFuncDataList* >( this )->aLastName = rProgrammaticName;
- const_cast< ScaFuncDataList* >( this )->nLast = nIndex;
- return pCurr;
+ aLastName = rProgrammaticName;
+ nLast = it;
+ return *it;
}
}
return NULL;
@@ -446,13 +413,13 @@ uno::Sequence< sheet::LocalizedName > SAL_CALL ScaDateAddIn::getCompatibilityNam
return uno::Sequence< sheet::LocalizedName >( 0 );
const ScaStringList& rStrList = pFData->GetCompNameList();
- sal_uInt32 nCount = rStrList.Count();
+ sal_uInt32 nCount = rStrList.size();
uno::Sequence< sheet::LocalizedName > aRet( nCount );
sheet::LocalizedName* pArray = aRet.getArray();
for( sal_uInt32 nIndex = 0; nIndex < nCount; nIndex++ )
- pArray[ nIndex ] = sheet::LocalizedName( GetLocale( nIndex ), *rStrList.Get( nIndex ) );
+ pArray[ nIndex ] = sheet::LocalizedName( GetLocale( nIndex ), rStrList[nIndex] );
return aRet;
}
diff --git a/scaddins/source/datefunc/datefunc.hxx b/scaddins/source/datefunc/datefunc.hxx
index 9922bdf..e2271a0 100644
--- a/scaddins/source/datefunc/datefunc.hxx
+++ b/scaddins/source/datefunc/datefunc.hxx
@@ -35,86 +35,8 @@
#include <tools/rc.hxx>
#include <tools/resary.hxx>
-class ScaList
-{
-private:
- static const sal_uInt32 nStartSize;
- static const sal_uInt32 nIncrSize;
-
- void** pData; // pointer array
- sal_uInt32 nSize; // array size
- sal_uInt32 nCount; // next index to be inserted at
- sal_uInt32 nCurr; // current pos for iterations
-
- void _Grow();
- inline void Grow();
-
-public:
- ScaList();
- virtual ~ScaList();
-
- inline sal_uInt32 Count() const { return nCount; }
-
- inline const void* GetObject( sal_uInt32 nIndex ) const
- { return (nIndex < nCount) ? pData[ nIndex ] : NULL; }
-
- inline void* First() { return nCount ? pData[ nCurr = 0 ] : NULL; }
- inline void* Next() { return (nCurr + 1 < nCount) ? pData[ ++nCurr ] : NULL; }
-
- inline void Append( void* pNew );
-};
-
-
-inline void ScaList::Grow()
-{
- if( nCount >= nSize )
- _Grow();
-}
-
-inline void ScaList::Append( void* pNew )
-{
- Grow();
- pData[ nCount++ ] = pNew;
-}
-
-
-class ScaStringList : protected ScaList
-{
-public:
- inline ScaStringList() : ScaList() {};
- virtual ~ScaStringList();
-
- using ScaList::Count;
-
- inline const OUString* Get( sal_uInt32 nIndex ) const;
-
- inline OUString* First();
- inline OUString* Next();
-
- using ScaList::Append;
- inline void Append( const OUString& rNew );
-};
-
-inline const OUString* ScaStringList::Get( sal_uInt32 nIndex ) const
-{
- return static_cast< const OUString* >( ScaList::GetObject( nIndex ) );
-}
-
-inline OUString* ScaStringList::First()
-{
- return static_cast< OUString* >( ScaList::First() );
-}
-
-inline OUString* ScaStringList::Next()
-{
- return static_cast< OUString* >( ScaList::Next() );
-}
-
-inline void ScaStringList::Append( const OUString& rNew )
-{
- ScaList::Append( new OUString( rNew ) );
-}
+typedef std::vector<OUString> ScaStringList;
class ScaResId : public ResId
@@ -236,43 +158,22 @@ public:
};
-class ScaFuncDataList : private ScaList
+class ScaFuncDataList
{
- OUString aLastName;
- sal_uInt32 nLast;
+ OUString aLastName;
+ std::vector<ScaFuncData*>::iterator nLast;
+ std::vector<ScaFuncData*> contents;
public:
ScaFuncDataList( ResMgr& rResMgr );
virtual ~ScaFuncDataList();
- using ScaList::Count;
-
- inline const ScaFuncData* Get( sal_uInt32 nIndex ) const;
- const ScaFuncData* Get( const OUString& rProgrammaticName ) const;
- inline ScaFuncData* First();
- inline ScaFuncData* Next();
+ const ScaFuncData* Get( const OUString& rProgrammaticName );
- using ScaList::Append;
- inline void Append( ScaFuncData* pNew ) { ScaList::Append( pNew ); }
+ inline void Append( ScaFuncData* pNew ) { contents.push_back( pNew ); }
};
-inline const ScaFuncData* ScaFuncDataList::Get( sal_uInt32 nIndex ) const
-{
- return static_cast< const ScaFuncData* >( ScaList::GetObject( nIndex ) );
-}
-
-inline ScaFuncData* ScaFuncDataList::First()
-{
- return static_cast< ScaFuncData* >( ScaList::First() );
-}
-
-inline ScaFuncData* ScaFuncDataList::Next()
-{
- return static_cast< ScaFuncData* >( ScaList::Next() );
-}
-
-
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL DateFunctionAddIn_CreateInstance(
const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& );
diff --git a/scaddins/source/pricing/pricing.cxx b/scaddins/source/pricing/pricing.cxx
index 21174c7..8139225 100644
--- a/scaddins/source/pricing/pricing.cxx
+++ b/scaddins/source/pricing/pricing.cxx
@@ -45,38 +45,6 @@ using namespace sca::pricing;
#define STR_FROM_ANSI( s ) OUString( s, strlen( s ), RTL_TEXTENCODING_MS_1252 )
-const sal_uInt32 ScaList::nStartSize = 16;
-const sal_uInt32 ScaList::nIncrSize = 16;
-
-ScaList::ScaList() :
- pData( new void*[ nStartSize ] ),
- nSize( nStartSize ),
- nCount( 0 ),
- nCurr( 0 )
-{
-}
-
-ScaList::~ScaList()
-{
- delete[] pData;
-}
-
-void ScaList::_Grow()
-{
- nSize += nIncrSize;
-
- void** pNewData = new void*[ nSize ];
- memcpy( pNewData, pData, nCount * sizeof( void* ) );
-
- delete[] pData;
- pData = pNewData;
-}
-
-ScaStringList::~ScaStringList()
-{
- for( OUString* pStr = First(); pStr; pStr = Next() )
- delete pStr;
-}
ScaResId::ScaResId( sal_uInt16 nId, ResMgr& rResMgr ) :
ResId( nId, rResMgr )
@@ -114,7 +82,7 @@ ScaFuncData::ScaFuncData( const ScaFuncDataBase& rBaseData, ResMgr& rResMgr ) :
const ResStringArray& rArr = aArrLoader.GetStringArray();
for( sal_uInt32 nIndex = 0; nIndex < rArr.Count(); nIndex++ )
- aCompList.Append( rArr.GetString( nIndex ) );
+ aCompList.push_back( rArr.GetString( nIndex ) );
}
ScaFuncData::~ScaFuncData()
@@ -129,32 +97,31 @@ sal_uInt16 ScaFuncData::GetStrIndex( sal_uInt16 nParam ) const
}
ScaFuncDataList::ScaFuncDataList( ResMgr& rResMgr ) :
- nLast( 0xFFFFFFFF )
+ nLast( contents.end() )
{
for( sal_uInt16 nIndex = 0; nIndex < SAL_N_ELEMENTS(pFuncDataArr); nIndex++ )
- Append( new ScaFuncData( pFuncDataArr[ nIndex ], rResMgr ) );
+ contents.push_back( new ScaFuncData( pFuncDataArr[ nIndex ], rResMgr ) );
}
ScaFuncDataList::~ScaFuncDataList()
{
- for( ScaFuncData* pFData = First(); pFData; pFData = Next() )
- delete pFData;
+ for( std::vector<ScaFuncData*>::iterator it = contents.begin(); it != contents.end(); ++it )
+ delete *it;
}
-const ScaFuncData* ScaFuncDataList::Get( const OUString& rProgrammaticName ) const
+const ScaFuncData* ScaFuncDataList::Get( const OUString& rProgrammaticName )
{
if( aLastName == rProgrammaticName ){
- return Get( nLast );
+ return *nLast;
}
- for( sal_uInt32 nIndex = 0; nIndex < Count(); nIndex++ )
+ for( std::vector<ScaFuncData*>::iterator it = contents.begin(); it != contents.end(); ++it )
{
- const ScaFuncData* pCurr = Get( nIndex );
- if( pCurr->Is( rProgrammaticName ) )
+ if( (*it)->Is( rProgrammaticName ) )
{
- const_cast< ScaFuncDataList* >( this )->aLastName = rProgrammaticName;
- const_cast< ScaFuncDataList* >( this )->nLast = nIndex;
- return pCurr;
+ aLastName = rProgrammaticName;
+ nLast = it;
+ return *it;
}
}
return NULL;
@@ -453,13 +420,13 @@ uno::Sequence< sheet::LocalizedName > SAL_CALL ScaPricingAddIn::getCompatibility
return uno::Sequence< sheet::LocalizedName >( 0 );
const ScaStringList& rStrList = pFData->GetCompNameList();
- sal_uInt32 nCount = rStrList.Count();
+ sal_uInt32 nCount = rStrList.size();
uno::Sequence< sheet::LocalizedName > aRet( nCount );
sheet::LocalizedName* pArray = aRet.getArray();
for( sal_uInt32 nIndex = 0; nIndex < nCount; nIndex++ )
- pArray[ nIndex ] = sheet::LocalizedName( GetLocale( nIndex ), *rStrList.Get( nIndex ) );
+ pArray[ nIndex ] = sheet::LocalizedName( GetLocale( nIndex ), rStrList[nIndex] );
return aRet;
}
diff --git a/scaddins/source/pricing/pricing.hxx b/scaddins/source/pricing/pricing.hxx
index 21a3c49..bd80096 100644
--- a/scaddins/source/pricing/pricing.hxx
+++ b/scaddins/source/pricing/pricing.hxx
@@ -47,87 +47,8 @@
namespace sca {
namespace pricing {
-class ScaList
-{
-private:
- static const sal_uInt32 nStartSize;
- static const sal_uInt32 nIncrSize;
-
- void** pData; // pointer array
- sal_uInt32 nSize; // array size
- sal_uInt32 nCount; // next index to be inserted at
- sal_uInt32 nCurr; // current pos for iterations
-
- void _Grow();
- inline void Grow();
-
-public:
- ScaList();
- virtual ~ScaList();
-
- inline sal_uInt32 Count() const { return nCount; }
-
- inline const void* GetObject( sal_uInt32 nIndex ) const
- { return (nIndex < nCount) ? pData[ nIndex ] : NULL; }
-
- inline void* First() { return nCount ? pData[ nCurr = 0 ] : NULL; }
- inline void* Next() { return (nCurr + 1 < nCount) ? pData[ ++nCurr ] : NULL; }
-
- inline void Append( void* pNew );
-};
-
-
-inline void ScaList::Grow()
-{
- if( nCount >= nSize )
- _Grow();
-}
-
-inline void ScaList::Append( void* pNew )
-{
- Grow();
- pData[ nCount++ ] = pNew;
-}
-
-
-class ScaStringList : protected ScaList
-{
-public:
- inline ScaStringList() : ScaList() {};
- virtual ~ScaStringList();
-
- using ScaList::Count;
-
- inline const OUString* Get( sal_uInt32 nIndex ) const;
-
- inline OUString* First();
- inline OUString* Next();
-
- using ScaList::Append;
- inline void Append( const OUString& rNew );
-};
-
-
-inline const OUString* ScaStringList::Get( sal_uInt32 nIndex ) const
-{
- return static_cast< const OUString* >( ScaList::GetObject( nIndex ) );
-}
-
-inline OUString* ScaStringList::First()
-{
- return static_cast< OUString* >( ScaList::First() );
-}
-
-inline OUString* ScaStringList::Next()
-{
- return static_cast< OUString* >( ScaList::Next() );
-}
-
-inline void ScaStringList::Append( const OUString& rNew )
-{
- ScaList::Append( new OUString( rNew ) );
-}
+typedef std::vector<OUString> ScaStringList;
class ScaResId : public ResId
{
@@ -248,42 +169,23 @@ public:
};
-class ScaFuncDataList : private ScaList
+class ScaFuncDataList
{
- OUString aLastName;
- sal_uInt32 nLast;
+ OUString aLastName;
+ std::vector<ScaFuncData*>::iterator nLast;
+ std::vector<ScaFuncData*> contents;
public:
ScaFuncDataList( ResMgr& rResMgr );
virtual ~ScaFuncDataList();
- using ScaList::Count;
-
inline const ScaFuncData* Get( sal_uInt32 nIndex ) const;
- const ScaFuncData* Get( const OUString& rProgrammaticName ) const;
- inline ScaFuncData* First();
- inline ScaFuncData* Next();
+ const ScaFuncData* Get( const OUString& rProgrammaticName );
- using ScaList::Append;
- inline void Append( ScaFuncData* pNew ) { ScaList::Append( pNew ); }
+ inline void Append( ScaFuncData* pNew ) { contents.push_back( pNew ); }
};
-inline const ScaFuncData* ScaFuncDataList::Get( sal_uInt32 nIndex ) const
-{
- return static_cast< const ScaFuncData* >( ScaList::GetObject( nIndex ) );
-}
-
-inline ScaFuncData* ScaFuncDataList::First()
-{
- return static_cast< ScaFuncData* >( ScaList::First() );
-}
-
-inline ScaFuncData* ScaFuncDataList::Next()
-{
- return static_cast< ScaFuncData* >( ScaList::Next() );
-}
-
} // namespace pricing
} // namespace sca
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice