diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2013-09-06 11:37:53 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2013-09-07 12:55:44 +0200 |
commit | 8d36b558beb0c88d186b027f16c5d7d2da3afa59 (patch) | |
tree | 7d5eacb273fd8af322d349691ec52816d37c8052 /sc | |
parent | 3faefaafa6c7e4b01fe85496f4f288b19c1caebd (diff) |
inheriting from a standard container is a bad idea
Change-Id: I3346d38c720158ba37456c689e7d7f83bef3079c
Diffstat (limited to 'sc')
-rw-r--r-- | sc/inc/validat.hxx | 19 | ||||
-rw-r--r-- | sc/source/core/data/validat.cxx | 34 |
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: */ |