summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2012-07-09 16:53:50 +0200
committerMichael Stahl <mstahl@redhat.com>2012-07-12 14:12:31 +0200
commit8cfdbe66c1973cec801a466209291aecc80650c6 (patch)
treeaaab5edeb7a6bf8d673e9e96fe731b6fb1be254f /sc
parent38b0ec8519c8692251c8973c724ef2097f12eefa (diff)
Convert SV_DECL_PTRARR_SORT(ScValidationEntries_Impl) to std::set
Change-Id: I2ccd12b8e9516f59a39db7c9a123b2b76a0b6c28
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/validat.hxx25
-rw-r--r--sc/source/core/data/documen2.cxx8
-rw-r--r--sc/source/core/data/documen4.cxx5
-rw-r--r--sc/source/core/data/validat.cxx51
4 files changed, 40 insertions, 49 deletions
diff --git a/sc/inc/validat.hxx b/sc/inc/validat.hxx
index b8a661ffefee..8272988db74f 100644
--- a/sc/inc/validat.hxx
+++ b/sc/inc/validat.hxx
@@ -151,10 +151,10 @@ public:
sal_Bool EqualEntries( const ScValidationData& r ) const; // for undo
- // sort (using PTRARR) by index
+ // sort (using std::set) by index
// operator== only for sorting
- sal_Bool operator ==( const ScValidationData& r ) const { return nKey == r.nKey; }
- sal_Bool operator < ( const ScValidationData& r ) const { return nKey < r.nKey; }
+ bool operator ==( const ScValidationData& r ) const { return nKey == r.nKey; }
+ bool operator < ( const ScValidationData& r ) const { return nKey < r.nKey; }
private:
/** Tries to fill the passed collection with list validation entries.
@@ -180,20 +180,21 @@ private:
// list of contitions:
//
-typedef ScValidationData* ScValidationDataPtr;
-
-SV_DECL_PTRARR_SORT(ScValidationEntries_Impl, ScValidationDataPtr, SC_COND_GROW)
+struct CompareScValidationDataPtr
+{
+ bool operator()( ScValidationData* const& lhs, ScValidationData* const& rhs ) const { return (*lhs)<(*rhs); }
+};
-class ScValidationDataList : public ScValidationEntries_Impl
+class ScValidationDataList : public std::set<ScValidationData*, CompareScValidationDataPtr>
{
public:
- ScValidationDataList() {}
- ScValidationDataList(const ScValidationDataList& rList);
- ScValidationDataList(ScDocument* pNewDoc, const ScValidationDataList& rList);
- ~ScValidationDataList() {}
+ ScValidationDataList() {}
+ ScValidationDataList(const ScValidationDataList& rList);
+ ScValidationDataList(ScDocument* pNewDoc, const ScValidationDataList& rList);
+ ~ScValidationDataList() {}
void InsertNew( ScValidationData* pNew )
- { if (!Insert(pNew)) delete pNew; }
+ { if (!insert(pNew).second) delete pNew; }
ScValidationData* GetData( sal_uInt32 nKey );
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index 6b3aa3cf287b..d537c3577f01 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -409,7 +409,9 @@ ScDocument::~ScDocument()
if (pValidationList)
{
- pValidationList->DeleteAndDestroy( 0, pValidationList->Count() );
+ for( ScValidationDataList::iterator it = pValidationList->begin(); it != pValidationList->end(); ++it )
+ delete *it;
+ pValidationList->clear();
DELETEZ(pValidationList);
}
delete pRangeName;
@@ -452,7 +454,9 @@ void ScDocument::InitClipPtrs( ScDocument* pSourceDoc )
if (pValidationList)
{
- pValidationList->DeleteAndDestroy( 0, pValidationList->Count() );
+ for(ScValidationDataList::iterator it = pValidationList->begin(); it != pValidationList->end(); ++it )
+ delete *it;
+ pValidationList->clear();
DELETEZ(pValidationList);
}
diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx
index 8eca48528ea9..41e058a48cfb 100644
--- a/sc/source/core/data/documen4.cxx
+++ b/sc/source/core/data/documen4.cxx
@@ -612,10 +612,9 @@ sal_uLong ScDocument::AddValidationEntry( const ScValidationData& rNew )
pValidationList = new ScValidationDataList;
sal_uLong nMax = 0;
- sal_uInt16 nCount = pValidationList->Count();
- for (sal_uInt16 i=0; i<nCount; i++)
+ for( ScValidationDataList::iterator it = pValidationList->begin(); it != pValidationList->end(); ++it )
{
- const ScValidationData* pData = (*pValidationList)[i];
+ const ScValidationData* pData = *it;
sal_uLong nKey = pData->GetKey();
if ( pData->EqualEntries( rNew ) )
return nKey;
diff --git a/sc/source/core/data/validat.cxx b/sc/source/core/data/validat.cxx
index c4cb9171d990..f41adffac3eb 100644
--- a/sc/source/core/data/validat.cxx
+++ b/sc/source/core/data/validat.cxx
@@ -54,11 +54,6 @@
#include <memory>
using namespace formula;
-//------------------------------------------------------------------------
-
-SV_IMPL_OP_PTRARR_SORT( ScValidationEntries_Impl, ScValidationDataPtr );
-
-//------------------------------------------------------------------------
//
// Eintrag fuer Gueltigkeit (es gibt nur eine Bedingung)
@@ -885,14 +880,12 @@ bool ScValidationData::IsListValid( ScBaseCell* pCell, const ScAddress& rPos ) c
// ============================================================================
ScValidationDataList::ScValidationDataList(const ScValidationDataList& rList) :
- ScValidationEntries_Impl()
+ std::set<ScValidationData*, CompareScValidationDataPtr>()
{
// fuer Ref-Undo - echte Kopie mit neuen Tokens!
- sal_uInt16 nCount = rList.Count();
-
- for (sal_uInt16 i=0; i<nCount; i++)
- InsertNew( rList[i]->Clone() );
+ for( iterator it = rList.begin(); it != rList.end(); ++it )
+ InsertNew( (*it)->Clone() );
//! sortierte Eintraege aus rList schneller einfuegen ???
}
@@ -902,10 +895,8 @@ ScValidationDataList::ScValidationDataList(ScDocument* pNewDoc,
{
// fuer neues Dokument - echte Kopie mit neuen Tokens!
- sal_uInt16 nCount = rList.Count();
-
- for (sal_uInt16 i=0; i<nCount; i++)
- InsertNew( rList[i]->Clone(pNewDoc) );
+ for( iterator it = rList.begin(); it != rList.end(); ++it )
+ InsertNew( (*it)->Clone(pNewDoc) );
//! sortierte Eintraege aus rList schneller einfuegen ???
}
@@ -914,10 +905,9 @@ ScValidationData* ScValidationDataList::GetData( sal_uInt32 nKey )
{
//! binaer suchen
- sal_uInt16 nCount = Count();
- for (sal_uInt16 i=0; i<nCount; i++)
- if ((*this)[i]->GetKey() == nKey)
- return (*this)[i];
+ for( iterator it = begin(); it != end(); ++it )
+ if( (*it)->GetKey() == nKey )
+ return *it;
OSL_FAIL("ScValidationDataList: Eintrag nicht gefunden");
return NULL;
@@ -925,35 +915,32 @@ ScValidationData* ScValidationDataList::GetData( sal_uInt32 nKey )
void ScValidationDataList::CompileXML()
{
- sal_uInt16 nCount = Count();
- for (sal_uInt16 i=0; i<nCount; i++)
- (*this)[i]->CompileXML();
+ for( iterator it = begin(); it != end(); ++it )
+ (*it)->CompileXML();
}
void ScValidationDataList::UpdateReference( UpdateRefMode eUpdateRefMode,
const ScRange& rRange, SCsCOL nDx, SCsROW nDy, SCsTAB nDz )
{
- sal_uInt16 nCount = Count();
- for (sal_uInt16 i=0; i<nCount; i++)
- (*this)[i]->UpdateReference( eUpdateRefMode, rRange, nDx, nDy, nDz);
+ for( iterator it = begin(); it != end(); ++it )
+ (*it)->UpdateReference( eUpdateRefMode, rRange, nDx, nDy, nDz);
}
void ScValidationDataList::UpdateMoveTab( SCTAB nOldPos, SCTAB nNewPos )
{
- sal_uInt16 nCount = Count();
- for (sal_uInt16 i=0; i<nCount; i++)
- (*this)[i]->UpdateMoveTab( nOldPos, nNewPos );
+ for( iterator it = begin(); it != end(); ++it )
+ (*it)->UpdateMoveTab( nOldPos, nNewPos );
}
sal_Bool ScValidationDataList::operator==( const ScValidationDataList& r ) const
{
// fuer Ref-Undo - interne Variablen werden nicht verglichen
- sal_uInt16 nCount = Count();
- sal_Bool bEqual = ( nCount == r.Count() );
- for (sal_uInt16 i=0; i<nCount && bEqual; i++) // Eintraege sind sortiert
- if ( !(*this)[i]->EqualEntries(*r[i]) ) // Eintraege unterschiedlich ?
- bEqual = false;
+ sal_uInt16 nCount = size();
+ sal_Bool bEqual = ( nCount == r.size() );
+ for( const_iterator it1 = begin(), it2 = r.begin(); it1 != end() && bEqual; ++it1, ++it2 ) // Eintraege sind sortiert
+ if ( !(*it1)->EqualEntries(**it2) ) // Eintraege unterschiedlich ?
+ bEqual = sal_False;
return bEqual;
}