Kaydet (Commit) aa11e7ba authored tarafından Noel Grandin's avatar Noel Grandin Kaydeden (comit) Michael Stahl

Convert maList in SdrMarkList from Container to std::vector

Change-Id: I1e975805a82dcf273cde8a9deba4a7e31dbd72b2
üst 7758eaf7
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <vector> #include <vector>
#include <tools/contnr.hxx>
#include <tools/string.hxx> #include <tools/string.hxx>
#include "svx/svxdllapi.h" #include "svx/svxdllapi.h"
#include <svx/sdrobjectuser.hxx> #include <svx/sdrobjectuser.hxx>
...@@ -177,7 +176,7 @@ public: ...@@ -177,7 +176,7 @@ public:
class SVX_DLLPUBLIC SdrMarkList class SVX_DLLPUBLIC SdrMarkList
{ {
protected: protected:
Container maList; std::vector<SdrMark*> maList;
String maMarkName; String maMarkName;
String maPointName; String maPointName;
...@@ -197,7 +196,7 @@ private: ...@@ -197,7 +196,7 @@ private:
public: public:
SdrMarkList() SdrMarkList()
: maList(1024, 64, 64), : maList(),
mbPointNameOk(sal_False), mbPointNameOk(sal_False),
mbGluePointNameOk(sal_False), mbGluePointNameOk(sal_False),
mbNameOk(sal_False), mbNameOk(sal_False),
...@@ -206,7 +205,7 @@ public: ...@@ -206,7 +205,7 @@ public:
} }
SdrMarkList(const SdrMarkList& rLst) SdrMarkList(const SdrMarkList& rLst)
: maList(1024, 64, 64) : maList()
{ {
*this = rLst; *this = rLst;
} }
...@@ -225,12 +224,12 @@ public: ...@@ -225,12 +224,12 @@ public:
sal_uLong GetMarkCount() const sal_uLong GetMarkCount() const
{ {
return maList.Count(); return maList.size();
} }
SdrMark* GetMark(sal_uLong nNum) const SdrMark* GetMark(sal_uLong nNum) const
{ {
return (SdrMark*)(maList.GetObject(nNum)); return maList[nNum];
} }
sal_uLong FindObject(const SdrObject* pObj) const; sal_uLong FindObject(const SdrObject* pObj) const;
......
...@@ -229,22 +229,10 @@ sal_Bool SdrMark::operator==(const SdrMark& rMark) const ...@@ -229,22 +229,10 @@ sal_Bool SdrMark::operator==(const SdrMark& rMark) const
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
class ImpSdrMarkListSorter: public ContainerSorter static bool ImpSdrMarkListSorter(SdrMark* const& lhs, SdrMark* const& rhs)
{ {
public: SdrObject* pObj1 = lhs->GetMarkedSdrObj();
ImpSdrMarkListSorter(Container& rNewCont) SdrObject* pObj2 = rhs->GetMarkedSdrObj();
: ContainerSorter(rNewCont)
{}
virtual ~ImpSdrMarkListSorter() {}
virtual int Compare(const void* pElem1, const void* pElem2) const;
};
int ImpSdrMarkListSorter::Compare(const void* pElem1, const void* pElem2) const
{
SdrObject* pObj1 = ((SdrMark*)pElem1)->GetMarkedSdrObj();
SdrObject* pObj2 = ((SdrMark*)pElem2)->GetMarkedSdrObj();
SdrObjList* pOL1 = (pObj1) ? pObj1->GetObjList() : 0L; SdrObjList* pOL1 = (pObj1) ? pObj1->GetObjList() : 0L;
SdrObjList* pOL2 = (pObj2) ? pObj2->GetObjList() : 0L; SdrObjList* pOL2 = (pObj2) ? pObj2->GetObjList() : 0L;
...@@ -256,11 +244,11 @@ int ImpSdrMarkListSorter::Compare(const void* pElem1, const void* pElem2) const ...@@ -256,11 +244,11 @@ int ImpSdrMarkListSorter::Compare(const void* pElem1, const void* pElem2) const
sal_uInt32 nObjOrd1((pObj1) ? pObj1->GetNavigationPosition() : 0); sal_uInt32 nObjOrd1((pObj1) ? pObj1->GetNavigationPosition() : 0);
sal_uInt32 nObjOrd2((pObj2) ? pObj2->GetNavigationPosition() : 0); sal_uInt32 nObjOrd2((pObj2) ? pObj2->GetNavigationPosition() : 0);
return (nObjOrd1 < nObjOrd2 ? -1 : 1); return nObjOrd1 < nObjOrd2;
} }
else else
{ {
return ((long)pOL1 < (long)pOL2) ? -1 : 1; return (long)pOL1 < (long)pOL2;
} }
} }
...@@ -279,37 +267,37 @@ void SdrMarkList::ImpForceSort() ...@@ -279,37 +267,37 @@ void SdrMarkList::ImpForceSort()
if(!mbSorted) if(!mbSorted)
{ {
mbSorted = sal_True; mbSorted = sal_True;
sal_uLong nAnz = maList.Count(); sal_uLong nAnz = maList.size();
// remove invalid // remove invalid
if(nAnz > 0 ) if(nAnz > 0 )
{ {
SdrMark* pAkt = (SdrMark*)maList.First(); for(std::vector<SdrMark*>::iterator it = maList.begin(); it != maList.end(); )
while( pAkt )
{ {
SdrMark* pAkt = *it;
if(pAkt->GetMarkedSdrObj() == 0) if(pAkt->GetMarkedSdrObj() == 0)
{ {
maList.Remove(); it = maList.erase( it );
delete pAkt; delete pAkt;
} }
pAkt= (SdrMark*)maList.Next(); else
++it;
} }
nAnz = maList.Count(); nAnz = maList.size();
} }
if(nAnz > 1) if(nAnz > 1)
{ {
ImpSdrMarkListSorter aSort(maList); std::sort(maList.begin(), maList.end(), ImpSdrMarkListSorter);
aSort.DoSort();
// remove duplicates // remove duplicates
if(maList.Count() > 1) if(maList.size() > 1)
{ {
SdrMark* pAkt = (SdrMark*)maList.Last(); SdrMark* pAkt = maList.back();
SdrMark* pCmp = (SdrMark*)maList.Prev(); int i = maList.size() - 2;
while(i)
while(pCmp)
{ {
SdrMark* pCmp = maList[i];
if(pAkt->GetMarkedSdrObj() == pCmp->GetMarkedSdrObj() && pAkt->GetMarkedSdrObj()) if(pAkt->GetMarkedSdrObj() == pCmp->GetMarkedSdrObj() && pAkt->GetMarkedSdrObj())
{ {
// Con1/Con2 Merging // Con1/Con2 Merging
...@@ -320,7 +308,7 @@ void SdrMarkList::ImpForceSort() ...@@ -320,7 +308,7 @@ void SdrMarkList::ImpForceSort()
pAkt->SetCon2(sal_True); pAkt->SetCon2(sal_True);
// delete pCmp // delete pCmp
maList.Remove(); maList.erase(maList.begin() + i);
delete pCmp; delete pCmp;
} }
...@@ -329,7 +317,7 @@ void SdrMarkList::ImpForceSort() ...@@ -329,7 +317,7 @@ void SdrMarkList::ImpForceSort()
pAkt = pCmp; pAkt = pCmp;
} }
pCmp = (SdrMark*)maList.Prev(); --i;
} }
} }
} }
...@@ -344,7 +332,7 @@ void SdrMarkList::Clear() ...@@ -344,7 +332,7 @@ void SdrMarkList::Clear()
delete pMark; delete pMark;
} }
maList.Clear(); maList.clear();
SetNameDirty(); SetNameDirty();
} }
...@@ -356,7 +344,7 @@ void SdrMarkList::operator=(const SdrMarkList& rLst) ...@@ -356,7 +344,7 @@ void SdrMarkList::operator=(const SdrMarkList& rLst)
{ {
SdrMark* pMark = rLst.GetMark(i); SdrMark* pMark = rLst.GetMark(i);
SdrMark* pNeuMark = new SdrMark(*pMark); SdrMark* pNeuMark = new SdrMark(*pMark);
maList.Insert(pNeuMark, CONTAINER_APPEND); maList.push_back(pNeuMark);
} }
maMarkName = rLst.maMarkName; maMarkName = rLst.maMarkName;
...@@ -379,11 +367,11 @@ sal_uLong SdrMarkList::FindObject(const SdrObject* pObj) const ...@@ -379,11 +367,11 @@ sal_uLong SdrMarkList::FindObject(const SdrObject* pObj) const
// is not inserted in a object list. // is not inserted in a object list.
// Since this may be by purpose and necessary somewhere else i decided that it is // Since this may be by purpose and necessary somewhere else i decided that it is
// less dangerous to change this method then changing SdrObject::GetOrdNum(). // less dangerous to change this method then changing SdrObject::GetOrdNum().
if(pObj && maList.Count()) if(pObj && !maList.empty())
{ {
for(sal_uLong a(0L); a < maList.Count(); a++) for(sal_uLong a(0L); a < maList.size(); a++)
{ {
if(((SdrMark*)(maList.GetObject(a)))->GetMarkedSdrObj() == pObj) if(maList[a]->GetMarkedSdrObj() == pObj)
{ {
return a; return a;
} }
...@@ -396,14 +384,14 @@ sal_uLong SdrMarkList::FindObject(const SdrObject* pObj) const ...@@ -396,14 +384,14 @@ sal_uLong SdrMarkList::FindObject(const SdrObject* pObj) const
void SdrMarkList::InsertEntry(const SdrMark& rMark, sal_Bool bChkSort) void SdrMarkList::InsertEntry(const SdrMark& rMark, sal_Bool bChkSort)
{ {
SetNameDirty(); SetNameDirty();
sal_uLong nAnz(maList.Count()); sal_uLong nAnz(maList.size());
if(!bChkSort || !mbSorted || nAnz == 0) if(!bChkSort || !mbSorted || nAnz == 0)
{ {
if(!bChkSort) if(!bChkSort)
mbSorted = sal_False; mbSorted = sal_False;
maList.Insert(new SdrMark(rMark), CONTAINER_APPEND); maList.push_back(new SdrMark(rMark));
} }
else else
{ {
...@@ -424,7 +412,7 @@ void SdrMarkList::InsertEntry(const SdrMark& rMark, sal_Bool bChkSort) ...@@ -424,7 +412,7 @@ void SdrMarkList::InsertEntry(const SdrMark& rMark, sal_Bool bChkSort)
else else
{ {
SdrMark* pKopie = new SdrMark(rMark); SdrMark* pKopie = new SdrMark(rMark);
maList.Insert(pKopie, CONTAINER_APPEND); maList.push_back(pKopie);
// now check if the sort is ok // now check if the sort is ok
const SdrObjList* pLastOL = pLastObj!=0L ? pLastObj->GetObjList() : 0L; const SdrObjList* pLastOL = pLastObj!=0L ? pLastObj->GetObjList() : 0L;
...@@ -459,7 +447,7 @@ void SdrMarkList::DeleteMark(sal_uLong nNum) ...@@ -459,7 +447,7 @@ void SdrMarkList::DeleteMark(sal_uLong nNum)
if(pMark) if(pMark)
{ {
maList.Remove(nNum); maList.erase(maList.begin() + nNum);
delete pMark; delete pMark;
SetNameDirty(); SetNameDirty();
} }
...@@ -475,14 +463,14 @@ void SdrMarkList::ReplaceMark(const SdrMark& rNewMark, sal_uLong nNum) ...@@ -475,14 +463,14 @@ void SdrMarkList::ReplaceMark(const SdrMark& rNewMark, sal_uLong nNum)
delete pMark; delete pMark;
SetNameDirty(); SetNameDirty();
SdrMark* pKopie = new SdrMark(rNewMark); SdrMark* pKopie = new SdrMark(rNewMark);
maList.Replace(pKopie, nNum); maList[nNum] = pKopie;
mbSorted = sal_False; mbSorted = sal_False;
} }
} }
void SdrMarkList::Merge(const SdrMarkList& rSrcList, sal_Bool bReverse) void SdrMarkList::Merge(const SdrMarkList& rSrcList, sal_Bool bReverse)
{ {
sal_uLong nAnz(rSrcList.maList.Count()); sal_uLong nAnz(rSrcList.maList.size());
if(rSrcList.mbSorted) if(rSrcList.mbSorted)
{ {
...@@ -494,7 +482,7 @@ void SdrMarkList::Merge(const SdrMarkList& rSrcList, sal_Bool bReverse) ...@@ -494,7 +482,7 @@ void SdrMarkList::Merge(const SdrMarkList& rSrcList, sal_Bool bReverse)
{ {
for(sal_uLong i(0L); i < nAnz; i++) for(sal_uLong i(0L); i < nAnz; i++)
{ {
SdrMark* pM = (SdrMark*)(rSrcList.maList.GetObject(i)); SdrMark* pM = rSrcList.maList[i];
InsertEntry(*pM); InsertEntry(*pM);
} }
} }
...@@ -503,7 +491,7 @@ void SdrMarkList::Merge(const SdrMarkList& rSrcList, sal_Bool bReverse) ...@@ -503,7 +491,7 @@ void SdrMarkList::Merge(const SdrMarkList& rSrcList, sal_Bool bReverse)
for(sal_uLong i(nAnz); i > 0;) for(sal_uLong i(nAnz); i > 0;)
{ {
i--; i--;
SdrMark* pM = (SdrMark*)(rSrcList.maList.GetObject(i)); SdrMark* pM = rSrcList.maList[i];
InsertEntry(*pM); InsertEntry(*pM);
} }
} }
...@@ -513,18 +501,19 @@ sal_Bool SdrMarkList::DeletePageView(const SdrPageView& rPV) ...@@ -513,18 +501,19 @@ sal_Bool SdrMarkList::DeletePageView(const SdrPageView& rPV)
{ {
sal_Bool bChgd(sal_False); sal_Bool bChgd(sal_False);
for(sal_uLong i(GetMarkCount()); i > 0; ) for(std::vector<SdrMark*>::iterator it = maList.begin(); it != maList.end(); )
{ {
i--; SdrMark* pMark = *it;
SdrMark* pMark = GetMark(i);
if(pMark->GetPageView()==&rPV) if(pMark->GetPageView()==&rPV)
{ {
maList.Remove(i); it = maList.erase(it);
delete pMark; delete pMark;
SetNameDirty(); SetNameDirty();
bChgd = sal_True; bChgd = sal_True;
} }
else
++it;
} }
return bChgd; return bChgd;
...@@ -546,7 +535,7 @@ sal_Bool SdrMarkList::InsertPageView(const SdrPageView& rPV) ...@@ -546,7 +535,7 @@ sal_Bool SdrMarkList::InsertPageView(const SdrPageView& rPV)
if(bDoIt) if(bDoIt)
{ {
SdrMark* pM = new SdrMark(pObj, (SdrPageView*)&rPV); SdrMark* pM = new SdrMark(pObj, (SdrPageView*)&rPV);
maList.Insert(pM, CONTAINER_APPEND); maList.push_back(pM);
SetNameDirty(); SetNameDirty();
bChgd = sal_True; bChgd = sal_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