Rev 112 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#ifndef __LIST_H__#define __LIST_H__#include "../spkdll.h"#include <vector>//namespace SPK {namespace Utils {template <class T>class SPKEXPORT CList{private:std::vector<T *> *_lItems;bool _bDontClear;typename std::vector<T *>::iterator _pItr;public:CList(bool bDontClear = false);~CList();void clear();T *push_back(T *pItem);typename std::vector<T *>::iterator begin();typename std::vector<T *>::iterator end();T *first();T *next();bool empty() const;};///////////////////////////////////////////////////////////////////////////template<class T>CList<T>::CList(bool bDontClear) : _bDontClear(bDontClear){_lItems = new std::vector<T *>();_pItr = _lItems->end();}template <class T>CList<T>::~CList(){clear();delete _lItems;}template <class T>void CList<T>::clear(){if ( !_bDontClear ) {for(std::vector<T *>::iterator itr = _lItems->begin(); itr != _lItems->end(); itr++) {delete *itr;}}_lItems->clear();}template <class T>T *CList<T>::push_back(T *pItem){_lItems->push_back(pItem);return pItem;}template <class T>typename std::vector<T *>::iterator CList<T>::begin(){return _lItems->begin();}template <class T>typename std::vector<T *>::iterator CList<T>::end(){return _lItems->end();}template <class T>T *CList<T>::first(){if ( _lItems->empty() ) return NULL;_pItr = _lItems->begin();return *_pItr;}template <class T>T *CList<T>::next(){if ( _lItems->empty() ) return NULL;if ( _pItr == _lItems->end() ) return NULL;++_pItr;if ( _pItr == _lItems->end() ) return NULL;return *_pItr;}template <class T>bool CList<T>::empty() const{return _lItems->empty();}}//}#endif //__LIST_H__