summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2013-09-06 11:37:53 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2013-09-07 12:55:44 +0200
commit8d36b558beb0c88d186b027f16c5d7d2da3afa59 (patch)
tree7d5eacb273fd8af322d349691ec52816d37c8052 /sc
parent3faefaafa6c7e4b01fe85496f4f288b19c1caebd (diff)
inheriting from a standard container is a bad idea
Change-Id: I3346d38c720158ba37456c689e7d7f83bef3079c
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/validat.hxx19
-rw-r--r--sc/source/core/data/validat.cxx34
2 files changed, 46 insertions, 7 deletions
diff --git a/sc/inc/validat.hxx b/sc/inc/validat.hxx
index 64aa5975cf5d..9dd83f24ab24 100644
--- a/sc/inc/validat.hxx
+++ b/sc/inc/validat.hxx
@@ -183,16 +183,28 @@ struct CompareScValidationDataPtr
bool operator()( ScValidationData* const& lhs, ScValidationData* const& rhs ) const { return (*lhs)<(*rhs); }
};
-class ScValidationDataList : public std::set<ScValidationData*, CompareScValidationDataPtr>
+class ScValidationDataList
{
+private:
+ typedef std::set<ScValidationData*, CompareScValidationDataPtr> ScValidationDataListDataType;
+ ScValidationDataListDataType maData;
+
public:
ScValidationDataList() {}
ScValidationDataList(const ScValidationDataList& rList);
ScValidationDataList(ScDocument* pNewDoc, const ScValidationDataList& rList);
~ScValidationDataList() {}
+ typedef ScValidationDataListDataType::iterator iterator;
+ typedef ScValidationDataListDataType::const_iterator const_iterator;
+
+ iterator begin();
+ const_iterator begin() const;
+ iterator end();
+ const_iterator end() const;
+
void InsertNew( ScValidationData* pNew )
- { if (!insert(pNew).second) delete pNew; }
+ { if (!maData.insert(pNew).second) delete pNew; }
ScValidationData* GetData( sal_uInt32 nKey );
@@ -203,6 +215,9 @@ public:
void UpdateMoveTab( sc::RefUpdateMoveTabContext& rCxt );
sal_Bool operator==( const ScValidationDataList& r ) const; // for ref-undo
+
+ void clear();
+
};
#endif
diff --git a/sc/source/core/data/validat.cxx b/sc/source/core/data/validat.cxx
index d6342e010a0f..3304e732fd9f 100644
--- a/sc/source/core/data/validat.cxx
+++ b/sc/source/core/data/validat.cxx
@@ -899,8 +899,7 @@ bool ScValidationData::IsListValid( ScRefCellValue& rCell, const ScAddress& rPos
// ============================================================================
// ============================================================================
-ScValidationDataList::ScValidationDataList(const ScValidationDataList& rList) :
- std::set<ScValidationData*, CompareScValidationDataPtr>()
+ScValidationDataList::ScValidationDataList(const ScValidationDataList& rList)
{
// fuer Ref-Undo - echte Kopie mit neuen Tokens!
@@ -971,13 +970,38 @@ sal_Bool ScValidationDataList::operator==( const ScValidationDataList& r ) const
{
// fuer Ref-Undo - interne Variablen werden nicht verglichen
- sal_uInt16 nCount = size();
- sal_Bool bEqual = ( nCount == r.size() );
+ size_t nCount = maData.size();
+ bool bEqual = ( nCount == r.maData.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;
+ bEqual = false;
return bEqual;
}
+ScValidationDataList::iterator ScValidationDataList::begin()
+{
+ return maData.begin();
+}
+
+ScValidationDataList::const_iterator ScValidationDataList::begin() const
+{
+ return maData.begin();
+}
+
+ScValidationDataList::iterator ScValidationDataList::end()
+{
+ return maData.end();
+}
+
+ScValidationDataList::const_iterator ScValidationDataList::end() const
+{
+ return maData.end();
+}
+
+void ScValidationDataList::clear()
+{
+ maData.clear();
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */