diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-06-26 15:03:32 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-06-27 13:51:58 +0200 |
commit | e5c8f2ba40223b67c7205b6f06da3aa344ed0e97 (patch) | |
tree | 26624af238b85d4b43ebcbda34a63d8edf77586f /sc | |
parent | b9652803096b68a33702601aac52e78c8a4250c6 (diff) |
loplugin:useuniqueptr in ScUnoAddInCollection
Change-Id: Ic38eab88f68952549af3417c3e85020877c95446
Reviewed-on: https://gerrit.libreoffice.org/56498
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/inc/addincol.hxx | 8 | ||||
-rw-r--r-- | sc/source/core/tool/addincol.cxx | 57 |
2 files changed, 28 insertions, 37 deletions
diff --git a/sc/inc/addincol.hxx b/sc/inc/addincol.hxx index e22a6c056f9d..46de0b84c7ef 100644 --- a/sc/inc/addincol.hxx +++ b/sc/inc/addincol.hxx @@ -135,10 +135,10 @@ class SC_DLLPUBLIC ScUnoAddInCollection { private: long nFuncCount; - ScUnoAddInFuncData** ppFuncData; - ScAddInHashMap* pExactHashMap; ///< exact internal name - ScAddInHashMap* pNameHashMap; ///< internal name upper - ScAddInHashMap* pLocalHashMap; ///< localized name upper + std::unique_ptr<std::unique_ptr<ScUnoAddInFuncData>[]> ppFuncData; + std::unique_ptr<ScAddInHashMap> pExactHashMap; ///< exact internal name + std::unique_ptr<ScAddInHashMap> pNameHashMap; ///< internal name upper + std::unique_ptr<ScAddInHashMap> pLocalHashMap; ///< localized name upper bool bInitialized; void Initialize(); diff --git a/sc/source/core/tool/addincol.cxx b/sc/source/core/tool/addincol.cxx index 62b0a2f96192..d5a27f22d4e3 100644 --- a/sc/source/core/tool/addincol.cxx +++ b/sc/source/core/tool/addincol.cxx @@ -231,21 +231,14 @@ ScUnoAddInCollection::ScUnoAddInCollection() : ScUnoAddInCollection::~ScUnoAddInCollection() { - Clear(); } void ScUnoAddInCollection::Clear() { - DELETEZ( pExactHashMap ); - DELETEZ( pNameHashMap ); - DELETEZ( pLocalHashMap ); - if ( ppFuncData ) - { - for ( long i=0; i<nFuncCount; i++ ) - delete ppFuncData[i]; - delete[] ppFuncData; - } - ppFuncData = nullptr; + pExactHashMap.reset(); + pNameHashMap.reset(); + pLocalHashMap.reset(); + ppFuncData.reset(); nFuncCount = 0; bInitialized = false; @@ -386,22 +379,21 @@ void ScUnoAddInCollection::ReadConfiguration() nFuncCount = nNewCount+nOld; if ( nOld ) { - ScUnoAddInFuncData** ppNew = new ScUnoAddInFuncData*[nFuncCount]; + std::unique_ptr<std::unique_ptr<ScUnoAddInFuncData>[]> ppNew(new std::unique_ptr<ScUnoAddInFuncData>[nFuncCount]); for (long i=0; i<nOld; i++) - ppNew[i] = ppFuncData[i]; - delete[] ppFuncData; - ppFuncData = ppNew; + ppNew[i] = std::move(ppFuncData[i]); + ppFuncData = std::move(ppNew); } else - ppFuncData = new ScUnoAddInFuncData*[nFuncCount]; + ppFuncData.reset( new std::unique_ptr<ScUnoAddInFuncData>[nFuncCount] ); //TODO: adjust bucket count? if ( !pExactHashMap ) - pExactHashMap = new ScAddInHashMap; + pExactHashMap.reset( new ScAddInHashMap ); if ( !pNameHashMap ) - pNameHashMap = new ScAddInHashMap; + pNameHashMap.reset( new ScAddInHashMap ); if ( !pLocalHashMap ) - pLocalHashMap = new ScAddInHashMap; + pLocalHashMap.reset( new ScAddInHashMap ); //TODO: get the function information in a single call for all functions? @@ -552,7 +544,7 @@ void ScUnoAddInCollection::ReadConfiguration() pData->SetCompNames( aCompNames ); - ppFuncData[nFuncPos+nOld] = pData; + ppFuncData[nFuncPos+nOld].reset(pData); pExactHashMap->emplace( pData->GetOriginalName(), @@ -610,7 +602,7 @@ bool ScUnoAddInCollection::GetCalcName( const OUString& rExcelName, OUString& rR for (long i=0; i<nFuncCount; i++) { - ScUnoAddInFuncData* pFuncData = ppFuncData[i]; + ScUnoAddInFuncData* pFuncData = ppFuncData[i].get(); if ( pFuncData ) { const ::std::vector<ScUnoAddInFuncData::LocalizedName>& rNames = pFuncData->GetCompNames(); @@ -768,22 +760,21 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>& nFuncCount = nNewCount+nOld; if ( nOld ) { - ScUnoAddInFuncData** ppNew = new ScUnoAddInFuncData*[nFuncCount]; + std::unique_ptr<std::unique_ptr<ScUnoAddInFuncData>[]> ppNew(new std::unique_ptr<ScUnoAddInFuncData>[nFuncCount]); for (long i=0; i<nOld; i++) - ppNew[i] = ppFuncData[i]; - delete[] ppFuncData; - ppFuncData = ppNew; + ppNew[i] = std::move(ppFuncData[i]); + ppFuncData = std::move(ppNew); } else - ppFuncData = new ScUnoAddInFuncData*[nFuncCount]; + ppFuncData.reset(new std::unique_ptr<ScUnoAddInFuncData>[nFuncCount]); //TODO: adjust bucket count? if ( !pExactHashMap ) - pExactHashMap = new ScAddInHashMap; + pExactHashMap.reset( new ScAddInHashMap ); if ( !pNameHashMap ) - pNameHashMap = new ScAddInHashMap; + pNameHashMap.reset( new ScAddInHashMap ); if ( !pLocalHashMap ) - pLocalHashMap = new ScAddInHashMap; + pLocalHashMap.reset( new ScAddInHashMap ); const uno::Reference<reflection::XIdlMethod>* pArray = aMethods.getConstArray(); for (long nFuncPos=0; nFuncPos<nNewCount; nFuncPos++) @@ -932,14 +923,14 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>& OSL_ENSURE( nDestPos==nVisibleCount, "wrong count" ); } - ppFuncData[nFuncPos+nOld] = new ScUnoAddInFuncData( + ppFuncData[nFuncPos+nOld].reset( new ScUnoAddInFuncData( aFuncName, aLocalName, aDescription, nCategory, sHelpId, xFunc, aObject, - nVisibleCount, pVisibleArgs.get(), nCallerPos ); + nVisibleCount, pVisibleArgs.get(), nCallerPos ) ); const ScUnoAddInFuncData* pData = - ppFuncData[nFuncPos+nOld]; + ppFuncData[nFuncPos+nOld].get(); pExactHashMap->emplace( pData->GetOriginalName(), pData ); @@ -1181,7 +1172,7 @@ const ScUnoAddInFuncData* ScUnoAddInCollection::GetFuncData( long nIndex ) Initialize(); if (nIndex < nFuncCount) - return ppFuncData[nIndex]; + return ppFuncData[nIndex].get(); return nullptr; } |