-/*!
- * Template class used for iteration on vector of elements which can resize
- * during iteration. The iterator returns only elements present upon its creation.
- */
-template <class ELEM, typename TSET> class MySetIterator : public SMDS_Iterator<ELEM>
-{
-protected:
- int _iCur, _iEnd, _iDelta;
- const TSET& _table;
-public:
- MySetIterator(const TSET& table, bool reverse): _table( table )
- {
- if ( reverse )
- {
- _iCur = _table.size()-1;
- _iEnd = -1;
- _iDelta = -1;
- }
- else
- {
- _iCur = 0;
- _iEnd = _table.size();
- _iDelta = 1;
- }
- if ( more() && !_table[ _iCur ])
- next();
- }
-
- virtual bool more()
- {
- return ( _iEnd - _iCur ) * _iDelta > 0;
- }
-
- virtual ELEM next()
- {
- ELEM e = more() ? _table[ _iCur ] : 0;
- _iCur += _iDelta;
- while ( more() && !_table[ _iCur ])
- _iCur += _iDelta;
- return e;
- }
-};
-