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

loplugin:useuniqueptr in SdrMarkList

Change-Id: I36e7af3b1b74a78103c079da58ae1a820b164720
Reviewed-on: https://gerrit.libreoffice.org/53753Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 12fe7624
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <svx/sdrobjectuser.hxx> #include <svx/sdrobjectuser.hxx>
#include <tools/solar.h> #include <tools/solar.h>
#include <memory>
#include <set> #include <set>
#include <vector> #include <vector>
...@@ -134,7 +135,7 @@ public: ...@@ -134,7 +135,7 @@ public:
class SVX_DLLPUBLIC SdrMarkList final class SVX_DLLPUBLIC SdrMarkList final
{ {
std::vector<SdrMark*> maList; std::vector<std::unique_ptr<SdrMark>> maList;
OUString maMarkName; OUString maMarkName;
OUString maPointName; OUString maPointName;
......
...@@ -119,7 +119,7 @@ SdrMark& SdrMark::operator=(const SdrMark& rMark) ...@@ -119,7 +119,7 @@ SdrMark& SdrMark::operator=(const SdrMark& rMark)
return *this; return *this;
} }
static bool ImpSdrMarkListSorter(SdrMark* const& lhs, SdrMark* const& rhs) static bool ImpSdrMarkListSorter(std::unique_ptr<SdrMark> const& lhs, std::unique_ptr<SdrMark> const& rhs)
{ {
SdrObject* pObj1 = lhs->GetMarkedSdrObj(); SdrObject* pObj1 = lhs->GetMarkedSdrObj();
SdrObject* pObj2 = rhs->GetMarkedSdrObj(); SdrObject* pObj2 = rhs->GetMarkedSdrObj();
...@@ -161,13 +161,11 @@ void SdrMarkList::ImpForceSort() ...@@ -161,13 +161,11 @@ void SdrMarkList::ImpForceSort()
// remove invalid // remove invalid
if(nCount > 0 ) if(nCount > 0 )
{ {
for(std::vector<SdrMark*>::iterator it = maList.begin(); it != maList.end(); ) for(auto it = maList.begin(); it != maList.end(); )
{ {
SdrMark* pCurrent = *it; if(it->get()->GetMarkedSdrObj() == nullptr)
if(pCurrent->GetMarkedSdrObj() == nullptr)
{ {
it = maList.erase( it ); it = maList.erase( it );
delete pCurrent;
} }
else else
++it; ++it;
...@@ -182,11 +180,11 @@ void SdrMarkList::ImpForceSort() ...@@ -182,11 +180,11 @@ void SdrMarkList::ImpForceSort()
// remove duplicates // remove duplicates
if(maList.size() > 1) if(maList.size() > 1)
{ {
SdrMark* pCurrent = maList.back(); SdrMark* pCurrent = maList.back().get();
for (size_t count = maList.size() - 1; count; --count) for (size_t count = maList.size() - 1; count; --count)
{ {
size_t i = count - 1; size_t i = count - 1;
SdrMark* pCmp = maList[i]; SdrMark* pCmp = maList[i].get();
assert(pCurrent->GetMarkedSdrObj()); assert(pCurrent->GetMarkedSdrObj());
if(pCurrent->GetMarkedSdrObj() == pCmp->GetMarkedSdrObj()) if(pCurrent->GetMarkedSdrObj() == pCmp->GetMarkedSdrObj())
{ {
...@@ -199,8 +197,6 @@ void SdrMarkList::ImpForceSort() ...@@ -199,8 +197,6 @@ void SdrMarkList::ImpForceSort()
// delete pCmp // delete pCmp
maList.erase(maList.begin() + i); maList.erase(maList.begin() + i);
delete pCmp;
} }
else else
{ {
...@@ -214,10 +210,6 @@ void SdrMarkList::ImpForceSort() ...@@ -214,10 +210,6 @@ void SdrMarkList::ImpForceSort()
void SdrMarkList::Clear() void SdrMarkList::Clear()
{ {
for (auto const& elem : maList)
{
delete elem;
}
maList.clear(); maList.clear();
mbSorted = true; //we're empty, so can be considered sorted mbSorted = true; //we're empty, so can be considered sorted
SetNameDirty(); SetNameDirty();
...@@ -230,8 +222,7 @@ SdrMarkList& SdrMarkList::operator=(const SdrMarkList& rLst) ...@@ -230,8 +222,7 @@ SdrMarkList& SdrMarkList::operator=(const SdrMarkList& rLst)
for(size_t i = 0; i < rLst.GetMarkCount(); ++i) for(size_t i = 0; i < rLst.GetMarkCount(); ++i)
{ {
SdrMark* pMark = rLst.GetMark(i); SdrMark* pMark = rLst.GetMark(i);
SdrMark* pNewMark = new SdrMark(*pMark); maList.emplace_back(new SdrMark(*pMark));
maList.push_back(pNewMark);
} }
maMarkName = rLst.maMarkName; maMarkName = rLst.maMarkName;
...@@ -245,7 +236,7 @@ SdrMarkList& SdrMarkList::operator=(const SdrMarkList& rLst) ...@@ -245,7 +236,7 @@ SdrMarkList& SdrMarkList::operator=(const SdrMarkList& rLst)
SdrMark* SdrMarkList::GetMark(size_t nNum) const SdrMark* SdrMarkList::GetMark(size_t nNum) const
{ {
return (nNum < maList.size()) ? maList[nNum] : nullptr; return (nNum < maList.size()) ? maList[nNum].get() : nullptr;
} }
size_t SdrMarkList::FindObject(const SdrObject* pObj) const size_t SdrMarkList::FindObject(const SdrObject* pObj) const
...@@ -283,7 +274,7 @@ void SdrMarkList::InsertEntry(const SdrMark& rMark, bool bChkSort) ...@@ -283,7 +274,7 @@ void SdrMarkList::InsertEntry(const SdrMark& rMark, bool bChkSort)
if(!bChkSort) if(!bChkSort)
mbSorted = false; mbSorted = false;
maList.push_back(new SdrMark(rMark)); maList.emplace_back(new SdrMark(rMark));
} }
else else
{ {
...@@ -303,8 +294,7 @@ void SdrMarkList::InsertEntry(const SdrMark& rMark, bool bChkSort) ...@@ -303,8 +294,7 @@ void SdrMarkList::InsertEntry(const SdrMark& rMark, bool bChkSort)
} }
else else
{ {
SdrMark* pCopy = new SdrMark(rMark); maList.emplace_back(new SdrMark(rMark));
maList.push_back(pCopy);
// now check if the sort is ok // now check if the sort is ok
const SdrObjList* pLastOL = pLastObj!=nullptr ? pLastObj->getParentOfSdrObject() : nullptr; const SdrObjList* pLastOL = pLastObj!=nullptr ? pLastObj->getParentOfSdrObject() : nullptr;
...@@ -338,7 +328,6 @@ void SdrMarkList::DeleteMark(size_t nNum) ...@@ -338,7 +328,6 @@ void SdrMarkList::DeleteMark(size_t nNum)
if(pMark) if(pMark)
{ {
maList.erase(maList.begin() + nNum); maList.erase(maList.begin() + nNum);
delete pMark;
if (maList.empty()) if (maList.empty())
mbSorted = true; //we're empty, so can be considered sorted mbSorted = true; //we're empty, so can be considered sorted
SetNameDirty(); SetNameDirty();
...@@ -352,10 +341,8 @@ void SdrMarkList::ReplaceMark(const SdrMark& rNewMark, size_t nNum) ...@@ -352,10 +341,8 @@ void SdrMarkList::ReplaceMark(const SdrMark& rNewMark, size_t nNum)
if(pMark) if(pMark)
{ {
delete pMark;
SetNameDirty(); SetNameDirty();
SdrMark* pCopy = new SdrMark(rNewMark); maList[nNum].reset(new SdrMark(rNewMark));
maList[nNum] = pCopy;
mbSorted = false; mbSorted = false;
} }
} }
...@@ -374,7 +361,7 @@ void SdrMarkList::Merge(const SdrMarkList& rSrcList, bool bReverse) ...@@ -374,7 +361,7 @@ void SdrMarkList::Merge(const SdrMarkList& rSrcList, bool bReverse)
{ {
for(size_t i = 0; i < nCount; ++i) for(size_t i = 0; i < nCount; ++i)
{ {
SdrMark* pM = rSrcList.maList[i]; SdrMark* pM = rSrcList.maList[i].get();
InsertEntry(*pM); InsertEntry(*pM);
} }
} }
...@@ -383,7 +370,7 @@ void SdrMarkList::Merge(const SdrMarkList& rSrcList, bool bReverse) ...@@ -383,7 +370,7 @@ void SdrMarkList::Merge(const SdrMarkList& rSrcList, bool bReverse)
for(size_t i = nCount; i > 0;) for(size_t i = nCount; i > 0;)
{ {
--i; --i;
SdrMark* pM = rSrcList.maList[i]; SdrMark* pM = rSrcList.maList[i].get();
InsertEntry(*pM); InsertEntry(*pM);
} }
} }
...@@ -393,14 +380,13 @@ bool SdrMarkList::DeletePageView(const SdrPageView& rPV) ...@@ -393,14 +380,13 @@ bool SdrMarkList::DeletePageView(const SdrPageView& rPV)
{ {
bool bChgd(false); bool bChgd(false);
for(std::vector<SdrMark*>::iterator it = maList.begin(); it != maList.end(); ) for(auto it = maList.begin(); it != maList.end(); )
{ {
SdrMark* pMark = *it; SdrMark* pMark = it->get();
if(pMark->GetPageView()==&rPV) if(pMark->GetPageView()==&rPV)
{ {
it = maList.erase(it); it = maList.erase(it);
delete pMark;
SetNameDirty(); SetNameDirty();
bChgd = true; bChgd = true;
} }
...@@ -425,8 +411,7 @@ bool SdrMarkList::InsertPageView(const SdrPageView& rPV) ...@@ -425,8 +411,7 @@ bool SdrMarkList::InsertPageView(const SdrPageView& rPV)
if(bDoIt) if(bDoIt)
{ {
SdrMark* pM = new SdrMark(pObj, const_cast<SdrPageView*>(&rPV)); maList.emplace_back(new SdrMark(pObj, const_cast<SdrPageView*>(&rPV)));
maList.push_back(pM);
SetNameDirty(); SetNameDirty();
bChgd = true; bChgd = true;
} }
......
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