diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2012-01-31 14:34:00 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2012-01-31 21:38:57 -0500 |
commit | 5d24ffdcbeeed0bcc51ecff3b18bfa5ba07d6c1c (patch) | |
tree | 9c1e01ffca9046edc17369aaaa1691a2a7fa6a6d /svx | |
parent | af2cf56599fd23485bf570f44f65399fad681eba (diff) |
Container to ptr_vector.
Diffstat (limited to 'svx')
-rw-r--r-- | svx/inc/svx/svdobj.hxx | 16 | ||||
-rw-r--r-- | svx/source/svdraw/svdobj.cxx | 51 |
2 files changed, 39 insertions, 28 deletions
diff --git a/svx/inc/svx/svdobj.hxx b/svx/inc/svx/svdobj.hxx index 445ba6044313..55dabc83de93 100644 --- a/svx/inc/svx/svdobj.hxx +++ b/svx/inc/svx/svdobj.hxx @@ -47,6 +47,8 @@ #include "svx/svxdllapi.h" #include "svx/shapeproperty.hxx" +#include <boost/ptr_container/ptr_vector.hpp> + //************************************************************ // Vorausdeklarationen //************************************************************ @@ -244,17 +246,19 @@ public: class SdrObjUserDataList { - Container aList; + typedef boost::ptr_vector<SdrObjUserData> ListType; + ListType maList; public: SdrObjUserDataList(); ~SdrObjUserDataList(); - void Clear(); - sal_uInt16 GetUserDataCount() const; - SdrObjUserData* GetUserData(sal_uInt16 nNum) const; - void InsertUserData(SdrObjUserData* pData, sal_uInt16 nPos=0xFFFF); - void DeleteUserData(sal_uInt16 nNum); + size_t GetUserDataCount() const; + const SdrObjUserData* GetUserData(size_t nNum) const; + SdrObjUserData* GetUserData(size_t nNum); + void InsertUserData(SdrObjUserData* pData, size_t nPos); + void AppendUserData(SdrObjUserData* pData); + void DeleteUserData(size_t nNum); }; //************************************************************ diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index 0858a8ad3de9..57a8de52ba5d 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -217,38 +217,37 @@ XubString SdrObjUserData::GetMacroPopupComment(const SdrObjMacroHitRec& /*rRec*/ return String(); } -SdrObjUserDataList::SdrObjUserDataList() : - aList(1024,4,4) {} +SdrObjUserDataList::SdrObjUserDataList() {} +SdrObjUserDataList::~SdrObjUserDataList() {} -SdrObjUserDataList::~SdrObjUserDataList() { Clear(); } +size_t SdrObjUserDataList::GetUserDataCount() const +{ + return static_cast<sal_uInt16>(maList.size()); +} -void SdrObjUserDataList::Clear() +const SdrObjUserData* SdrObjUserDataList::GetUserData(size_t nNum) const { - sal_uInt16 nAnz=GetUserDataCount(); - for (sal_uInt16 i=0; i<nAnz; i++) { - delete GetUserData(i); - } - aList.Clear(); + return &maList.at(nNum); } -sal_uInt16 SdrObjUserDataList::GetUserDataCount() const +SdrObjUserData* SdrObjUserDataList::GetUserData(size_t nNum) { - return sal_uInt16(aList.Count()); + return &maList.at(nNum); } -SdrObjUserData* SdrObjUserDataList::GetUserData(sal_uInt16 nNum) const +void SdrObjUserDataList::InsertUserData(SdrObjUserData* pData, size_t nPos) { - return (SdrObjUserData*)aList.GetObject(nNum); + maList.insert(maList.begin()+nPos, pData); } -void SdrObjUserDataList::InsertUserData(SdrObjUserData* pData, sal_uInt16 nPos) +void SdrObjUserDataList::AppendUserData(SdrObjUserData* pData) { - aList.Insert(pData,nPos); + maList.push_back(pData); } -void SdrObjUserDataList::DeleteUserData(sal_uInt16 nNum) +void SdrObjUserDataList::DeleteUserData(size_t nNum) { - delete (SdrObjUserData*)aList.Remove(nNum); + maList.erase(maList.begin()+nNum); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -301,7 +300,7 @@ SdrObjPlusData* SdrObjPlusData::Clone(SdrObject* pObj1) const for (sal_uInt16 i=0; i<nAnz; i++) { SdrObjUserData* pNeuUserData=pUserDataList->GetUserData(i)->Clone(pObj1); if (pNeuUserData!=NULL) { - pNeuPlusData->pUserDataList->InsertUserData(pNeuUserData); + pNeuPlusData->pUserDataList->AppendUserData(pNeuUserData); } else { OSL_FAIL("SdrObjPlusData::Clone(): UserData.Clone() returns NULL."); } @@ -2673,11 +2672,19 @@ SdrObjUserData* SdrObject::GetUserData(sal_uInt16 nNum) const void SdrObject::InsertUserData(SdrObjUserData* pData, sal_uInt16 nPos) { - if (pData!=NULL) { + if (pData!=NULL) + { ImpForcePlusData(); - if (pPlusData->pUserDataList==NULL) pPlusData->pUserDataList=new SdrObjUserDataList; - pPlusData->pUserDataList->InsertUserData(pData,nPos); - } else { + if (!pPlusData->pUserDataList) + pPlusData->pUserDataList = new SdrObjUserDataList; + + if (nPos == 0xFFFF) + pPlusData->pUserDataList->AppendUserData(pData); + else + pPlusData->pUserDataList->InsertUserData(pData, nPos); + } + else + { OSL_FAIL("SdrObject::InsertUserData(): pData is NULL pointer."); } } |