Kaydet (Commit) 12c953fa authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in DocumentListsManager

Change-Id: Id179245161d707e27e009b6ebc53d925aae5ce0f
Reviewed-on: https://gerrit.libreoffice.org/61000
Tested-by: Jenkins
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst b1f9aa5f
...@@ -31,7 +31,6 @@ class IDocumentListsAccess ...@@ -31,7 +31,6 @@ class IDocumentListsAccess
public: public:
virtual SwList* createList( const OUString& rListId, virtual SwList* createList( const OUString& rListId,
const OUString& rDefaultListStyleName ) = 0; const OUString& rDefaultListStyleName ) = 0;
virtual void deleteList( const OUString& rListId ) = 0;
virtual SwList* getListByName( const OUString& rListId ) const = 0; virtual SwList* getListByName( const OUString& rListId ) const = 0;
virtual void createListForListStyle( const OUString& rListStyleName ) = 0; virtual void createListForListStyle( const OUString& rListStyleName ) = 0;
......
...@@ -56,30 +56,19 @@ SwList* DocumentListsManager::createList( const OUString& rListId, ...@@ -56,30 +56,19 @@ SwList* DocumentListsManager::createList( const OUString& rListId,
} }
SwList* pNewList = new SwList( sListId, *pDefaultNumRuleForNewList, m_rDoc.GetNodes() ); SwList* pNewList = new SwList( sListId, *pDefaultNumRuleForNewList, m_rDoc.GetNodes() );
maLists[sListId] = pNewList; maLists[sListId].reset(pNewList);
return pNewList; return pNewList;
} }
void DocumentListsManager::deleteList( const OUString& sListId )
{
SwList* pList = getListByName( sListId );
if ( pList )
{
maLists.erase( sListId );
delete pList;
}
}
SwList* DocumentListsManager::getListByName( const OUString& sListId ) const SwList* DocumentListsManager::getListByName( const OUString& sListId ) const
{ {
SwList* pList = nullptr; SwList* pList = nullptr;
std::unordered_map< OUString, SwList* >::const_iterator auto aListIter = maLists.find( sListId );
aListIter = maLists.find( sListId );
if ( aListIter != maLists.end() ) if ( aListIter != maLists.end() )
{ {
pList = (*aListIter).second; pList = (*aListIter).second.get();
} }
return pList; return pList;
...@@ -145,28 +134,21 @@ void DocumentListsManager::deleteListForListStyle( const OUString& sListStyleNam ...@@ -145,28 +134,21 @@ void DocumentListsManager::deleteListForListStyle( const OUString& sListStyleNam
if ( !sListId.isEmpty() ) if ( !sListId.isEmpty() )
{ {
maListStyleLists.erase( sListStyleName ); maListStyleLists.erase( sListStyleName );
deleteList( sListId ); maLists.erase( sListId );
} }
} }
void DocumentListsManager::deleteListsByDefaultListStyle( const OUString& rListStyleName ) void DocumentListsManager::deleteListsByDefaultListStyle( const OUString& rListStyleName )
{ {
std::vector< SwList* > aListsForDeletion; auto aListIter = maLists.begin();
tHashMapForLists::iterator aListIter = maLists.begin();
while ( aListIter != maLists.end() ) while ( aListIter != maLists.end() )
{ {
SwList* pList = (*aListIter).second; if ( (*aListIter).second->GetDefaultListStyleName() == rListStyleName )
if ( pList->GetDefaultListStyleName() == rListStyleName )
{ {
aListsForDeletion.push_back( pList ); aListIter = maLists.erase(aListIter);
} }
++aListIter; else
} ++aListIter;
while ( !aListsForDeletion.empty() )
{
SwList* pList = aListsForDeletion.back();
aListsForDeletion.pop_back();
deleteList( pList->GetListId() );
} }
} }
...@@ -194,16 +176,6 @@ void DocumentListsManager::trackChangeOfListStyleName( const OUString& sListStyl ...@@ -194,16 +176,6 @@ void DocumentListsManager::trackChangeOfListStyleName( const OUString& sListStyl
DocumentListsManager::~DocumentListsManager() DocumentListsManager::~DocumentListsManager()
{ {
for ( std::unordered_map< OUString, SwList* >::iterator
aListIter = maLists.begin();
aListIter != maLists.end();
++aListIter )
{
delete (*aListIter).second;
}
maLists.clear();
maListStyleLists.clear();
} }
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#define INCLUDED_SW_SOURCE_CORE_INC_DOCUMENTLISTSMANAGER_HXX #define INCLUDED_SW_SOURCE_CORE_INC_DOCUMENTLISTSMANAGER_HXX
#include <IDocumentListsAccess.hxx> #include <IDocumentListsAccess.hxx>
#include <memory>
#include <unordered_map> #include <unordered_map>
class SwList; class SwList;
...@@ -38,7 +39,6 @@ class DocumentListsManager : public IDocumentListsAccess ...@@ -38,7 +39,6 @@ class DocumentListsManager : public IDocumentListsAccess
SwList* createList( const OUString& rListId, SwList* createList( const OUString& rListId,
const OUString& rDefaultListStyleName ) override; const OUString& rDefaultListStyleName ) override;
void deleteList( const OUString& rListId ) override;
SwList* getListByName( const OUString& rListId ) const override; SwList* getListByName( const OUString& rListId ) const override;
void createListForListStyle( const OUString& rListStyleName ) override; void createListForListStyle( const OUString& rListStyleName ) override;
...@@ -57,11 +57,10 @@ class DocumentListsManager : public IDocumentListsAccess ...@@ -57,11 +57,10 @@ class DocumentListsManager : public IDocumentListsAccess
SwDoc& m_rDoc; SwDoc& m_rDoc;
typedef std::unordered_map<OUString, SwList*> tHashMapForLists;
// container to hold the lists of the text document // container to hold the lists of the text document
tHashMapForLists maLists; std::unordered_map<OUString, std::unique_ptr<SwList>> maLists;
// relation between list style and its default list // relation between list style and its default list
tHashMapForLists maListStyleLists; std::unordered_map<OUString, SwList*> maListStyleLists;
const OUString CreateUniqueListId(); const OUString CreateUniqueListId();
const OUString MakeListIdUnique( const OUString& aSuggestedUniqueListId ); const OUString MakeListIdUnique( const OUString& aSuggestedUniqueListId );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment