summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2012-01-31 14:34:00 -0500
committerKohei Yoshida <kohei.yoshida@suse.com>2012-01-31 21:38:57 -0500
commit5d24ffdcbeeed0bcc51ecff3b18bfa5ba07d6c1c (patch)
tree9c1e01ffca9046edc17369aaaa1691a2a7fa6a6d /svx
parentaf2cf56599fd23485bf570f44f65399fad681eba (diff)
Container to ptr_vector.
Diffstat (limited to 'svx')
-rw-r--r--svx/inc/svx/svdobj.hxx16
-rw-r--r--svx/source/svdraw/svdobj.cxx51
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.");
}
}