scaddins/source/analysis/analysis.cxx | 57 +++++++++++++++------------- scaddins/source/analysis/analysis.hxx | 1 scaddins/source/analysis/analysishelper.cxx | 35 ----------------- scaddins/source/analysis/analysishelper.hxx | 34 +++------------- 4 files changed, 41 insertions(+), 86 deletions(-)
New commits: commit 3f4482ebc2c3b260d42422efbee92c4210e35767 Author: Ian <ian.gil...@gmail.com> Date: Wed Aug 12 16:06:46 2015 +0100 Removed another FuncDataList collection This time the existing collection used a vector internally and mapped operations onto its standard interface. Removing it in favour of a raw typedef'd vector and find_if reduces the volume of code and simplifies the lookup mechanism. Change-Id: I86fdb85773577019073803c2fc249d04196afe31 Reviewed-on: https://gerrit.libreoffice.org/17680 Reviewed-by: David Tardon <dtar...@redhat.com> Tested-by: David Tardon <dtar...@redhat.com> diff --git a/scaddins/source/analysis/analysis.cxx b/scaddins/source/analysis/analysis.cxx index 08ac862..5bece71 100644 --- a/scaddins/source/analysis/analysis.cxx +++ b/scaddins/source/analysis/analysis.cxx @@ -31,6 +31,7 @@ #include <string.h> #include <tools/resmgr.hxx> #include <tools/rcid.h> +#include <algorithm> #include <cmath> #define ADDIN_SERVICE "com.sun.star.sheet.AddIn" @@ -127,9 +128,14 @@ void AnalysisAddIn::InitData() delete pFD; if( pResMgr ) - pFD = new FuncDataList( *pResMgr ); + { + pFD = new FuncDataList; + InitFuncDataList( *pFD, *pResMgr ); + } else + { pFD = NULL; + } if( pDefLocales ) { @@ -278,11 +284,11 @@ OUString SAL_CALL AnalysisAddIn::getDisplayFunctionName( const OUString& aProgra { OUString aRet; - const FuncData* p = pFD->Get( aProgrammaticName ); - if( p ) + auto it = std::find_if(pFD->begin(), pFD->end(), FindFuncData( aProgrammaticName ) ); + if( it != pFD->end() ) { - aRet = GetDisplFuncStr( p->GetUINameID() ); - if( p->IsDouble() ) + aRet = GetDisplFuncStr( it->GetUINameID() ); + if( it->IsDouble() ) aRet += "_ADD"; } else @@ -297,9 +303,9 @@ OUString SAL_CALL AnalysisAddIn::getFunctionDescription( const OUString& aProgra { OUString aRet; - const FuncData* p = pFD->Get( aProgrammaticName ); - if( p ) - aRet = GetFuncDescrStr( p->GetDescrID(), 1 ); + auto it = std::find_if(pFD->begin(), pFD->end(), FindFuncData( aProgrammaticName ) ); + if( it != pFD->end() ) + aRet = GetFuncDescrStr( it->GetDescrID(), 1 ); return aRet; } @@ -308,12 +314,12 @@ OUString SAL_CALL AnalysisAddIn::getDisplayArgumentName( const OUString& aName, { OUString aRet; - const FuncData* p = pFD->Get( aName ); - if( p && nArg <= 0xFFFF ) + auto it = std::find_if(pFD->begin(), pFD->end(), FindFuncData( aName ) ); + if( it != pFD->end() && nArg <= 0xFFFF ) { - sal_uInt16 nStr = p->GetStrIndex( sal_uInt16( nArg ) ); + sal_uInt16 nStr = it->GetStrIndex( sal_uInt16( nArg ) ); if( nStr ) - aRet = GetFuncDescrStr( p->GetDescrID(), nStr ); + aRet = GetFuncDescrStr( it->GetDescrID(), nStr ); else aRet = "internal"; } @@ -325,12 +331,12 @@ OUString SAL_CALL AnalysisAddIn::getArgumentDescription( const OUString& aName, { OUString aRet; - const FuncData* p = pFD->Get( aName ); - if( p && nArg <= 0xFFFF ) + auto it = std::find_if(pFD->begin(), pFD->end(), FindFuncData( aName ) ); + if( it != pFD->end() && nArg <= 0xFFFF ) { - sal_uInt16 nStr = p->GetStrIndex( sal_uInt16( nArg ) ); + sal_uInt16 nStr = it->GetStrIndex( sal_uInt16( nArg ) ); if( nStr ) - aRet = GetFuncDescrStr( p->GetDescrID(), nStr + 1 ); + aRet = GetFuncDescrStr( it->GetDescrID(), nStr + 1 ); else aRet = "for internal use only"; } @@ -344,11 +350,11 @@ OUString SAL_CALL AnalysisAddIn::getProgrammaticCategoryName( const OUString& aN { // return non-translated strings // return OUString( "Add-In" ); - const FuncData* p = pFD->Get( aName ); + auto it = std::find_if(pFD->begin(), pFD->end(), FindFuncData( aName ) ); OUString aRet; - if( p ) + if( it != pFD->end() ) { - switch( p->GetCategory() ) + switch( it->GetCategory() ) { case FDCat_DateTime: aRet = "Date&Time"; break; case FDCat_Finance: aRet = "Financial"; break; @@ -369,11 +375,11 @@ OUString SAL_CALL AnalysisAddIn::getDisplayCategoryName( const OUString& aProgra { // return translated strings, not used for predefined categories // return OUString( "Add-In" ); - const FuncData* p = pFD->Get( aProgrammaticFunctionName ); + auto it = std::find_if(pFD->begin(), pFD->end(), FindFuncData( aProgrammaticFunctionName ) ); OUString aRet; - if( p ) + if( it != pFD->end() ) { - switch( p->GetCategory() ) + switch( it->GetCategory() ) { case FDCat_DateTime: aRet = "Date&Time"; break; case FDCat_Finance: aRet = "Financial"; break; @@ -418,12 +424,11 @@ inline const lang::Locale& AnalysisAddIn::GetLocale( sal_uInt32 nInd ) uno::Sequence< sheet::LocalizedName > SAL_CALL AnalysisAddIn::getCompatibilityNames( const OUString& aProgrammaticName ) throw( uno::RuntimeException, std::exception ) { - const FuncData* p = pFD->Get( aProgrammaticName ); - - if( !p ) + auto it = std::find_if(pFD->begin(), pFD->end(), FindFuncData( aProgrammaticName ) ); + if( it == pFD->end() ) return uno::Sequence< sheet::LocalizedName >( 0 ); - const std::vector<OUString>& r = p->GetCompNameList(); + const std::vector<OUString>& r = it->GetCompNameList(); sal_uInt32 nCount = r.size(); uno::Sequence< sheet::LocalizedName > aRet( nCount ); diff --git a/scaddins/source/analysis/analysis.hxx b/scaddins/source/analysis/analysis.hxx index 79cd750..f8b4593 100644 --- a/scaddins/source/analysis/analysis.hxx +++ b/scaddins/source/analysis/analysis.hxx @@ -36,7 +36,6 @@ #include "analysishelper.hxx" namespace sca { namespace analysis { - class FuncDataList; class ConvertDataList; } } class ResMgr; diff --git a/scaddins/source/analysis/analysishelper.cxx b/scaddins/source/analysis/analysishelper.cxx index 8c1e891..1300c8e 100644 --- a/scaddins/source/analysis/analysishelper.cxx +++ b/scaddins/source/analysis/analysishelper.cxx @@ -1430,41 +1430,10 @@ sal_uInt16 FuncData::GetStrIndex( sal_uInt16 nParamNum ) const } -FuncDataList::FuncDataList( ResMgr& rResMgr ) - : nLast(0) +void InitFuncDataList( FuncDataList& rList, ResMgr& rResMgr ) { for( sal_uInt16 n = 0 ; n < SAL_N_ELEMENTS(pFuncDatas) ; n++ ) - Append( new FuncData( pFuncDatas[ n ], rResMgr ) ); -} - - -FuncDataList::~FuncDataList() -{ - for( std::vector<FuncData*>::iterator it = maVector.begin(); it != maVector.end(); ++it ) - delete *it; -} - - -const FuncData* FuncDataList::Get( const OUString& aProgrammaticName ) const -{ - if( aLastName == aProgrammaticName ) - return Get( nLast ); - - const_cast<FuncDataList*>(this)->aLastName = aProgrammaticName; - - sal_uInt32 nE = Count(); - for( sal_uInt32 n = 0 ; n < nE ; n++ ) - { - const FuncData* p = Get( n ); - if( p->Is( aProgrammaticName ) ) - { - const_cast<FuncDataList*>(this)->nLast = n; - return p; - } - } - - const_cast<FuncDataList*>(this)->nLast = 0xFFFFFFFF; - return NULL; + rList.push_back( FuncData( pFuncDatas[ n ], rResMgr ) ); } diff --git a/scaddins/source/analysis/analysishelper.hxx b/scaddins/source/analysis/analysishelper.hxx index d82af30..c44ca47 100644 --- a/scaddins/source/analysis/analysishelper.hxx +++ b/scaddins/source/analysis/analysishelper.hxx @@ -201,22 +201,16 @@ public: inline FDCategory GetCategory() const; }; +typedef std::vector< FuncData > FuncDataList; -class FuncDataList -{ - OUString aLastName; - sal_uInt32 nLast; - std::vector<FuncData*> maVector; -public: - FuncDataList( ResMgr& ); - virtual ~FuncDataList(); - - inline void Append( FuncData* pNew ); - inline const FuncData* Get( sal_uInt32 nIndex ) const; - inline sal_uInt32 Count() const - { return maVector.size(); } +void InitFuncDataList ( FuncDataList& rList, ResMgr& rResMgr ); - const FuncData* Get( const OUString& aProgrammaticName ) const; +// Predicate for use with std::find_if +struct FindFuncData +{ + const OUString& m_rId; + explicit FindFuncData( const OUString& rId ) : m_rId(rId) {} + bool operator() ( FuncData& rCandidate ) const { return rCandidate.Is(m_rId); } }; class AnalysisResId : public ResId @@ -589,18 +583,6 @@ inline FDCategory FuncData::GetCategory() const } -inline void FuncDataList::Append( FuncData* p ) -{ - maVector.push_back( p ); -} - - -inline const FuncData* FuncDataList::Get( sal_uInt32 n ) const -{ - return maVector[n]; -} - - inline Complex::Complex( double fReal, double fImag, sal_Unicode cC ) : r( fReal ), i( fImag ), c( cC ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits