inline operator bool();
inline bool operator!();
-// added methods for autodelete implementation
- inline void setAutoDelete(bool b);
- inline bool isAutoDelete();
-
// added compare struct ... to sort
struct less;
private:
iterator cur;
- bool autoDelete;
-
public:
iterator ePtrList<T>::begin()
{
{
// Remove the item it, if auto-deletion is enabled, than the list call delete for this item
// If current is equal to the item that was removed, current is set to the next item in the list
- if (autoDelete && *it)
- delete *it;
-
if (cur == it)
return cur = std::list<T*>::erase(it);
else
/////////////////// Default Constructor /////////////////////////////
template <class T>
ePtrList<T>::ePtrList()
- :cur(std::list<T*>::begin()), autoDelete(false)
+ :cur(std::list<T*>::begin())
{
}
/////////////////// Copy Constructor /////////////////////////////
template <class T>
ePtrList<T>::ePtrList(const ePtrList& e)
- :std::list<T*>(e), cur(e.cur), autoDelete( false )
+ :std::list<T*>(e), cur(e.cur)
{
- if ( e.autoDelete )
- if ( e.size() )
- eDebug("Warning !! We make a Copy of a non empty ePtrList, with autoDelete enabled"
- "We disable autoDelete in the new ePtrList !!");
- else
- autoDelete=true;
}
/////////////////// ePtrList Destructor /////////////////////////////
template <class T>
inline ePtrList<T>::~ePtrList()
{
-// if autoDelete is enabled, delete is called for all elements in the list
- if (autoDelete)
- for (std_list_T_iterator it(std::list<T*>::begin()); it != std::list<T*>::end(); it++)
- delete *it;
}
-
/////////////////// ePtrList sort() /////////////////////////
template <class T>
inline void ePtrList<T>::sort()
}
template <class T>
-void ePtrList<T>::setAutoDelete(bool b)
-{
-// switched autoDelete on or off
-// if autoDelete is true, than the pointer list controls the heap memory behind the pointer itself
-// the list calls delete for the item before it removed from the list
- autoDelete=b;
-}
-
-template <class T>
-bool ePtrList<T>::isAutoDelete()
-{
-// returns a bool that contains the state of autoDelete
- return autoDelete;
-}
-
-template <class T>
class eSmartPtrList : public std::list<ePtr<T> >
{
public:
inline operator bool();
inline bool operator!();
-// added methods for autodelete implementation
- inline void setAutoDelete(bool b);
- inline bool isAutoDelete();
-
// added compare struct ... to sort
struct less;
private:
iterator cur;
- bool autoDelete;
-
public:
iterator eSmartPtrList<T>::begin()
{
{
// Remove the item it, if auto-deletion is enabled, than the list call delete for this item
// If current is equal to the item that was removed, current is set to the next item in the list
- if (autoDelete && *it)
- delete *it;
if (cur == it)
return cur = std::list<ePtr<T> >::erase(it);
/////////////////// Default Constructor /////////////////////////////
template <class T>
eSmartPtrList<T>::eSmartPtrList()
- :cur(std::list<ePtr<T> >::begin()), autoDelete(false)
+ :cur(std::list<ePtr<T> >::begin())
{
}
/////////////////// Copy Constructor /////////////////////////////
template <class T>
eSmartPtrList<T>::eSmartPtrList(const eSmartPtrList& e)
- :std::list<ePtr<T> >(e), cur(e.cur), autoDelete( false )
+ :std::list<ePtr<T> >(e), cur(e.cur)
{
- if ( e.autoDelete )
- if ( e.size() )
- eDebug("Warning !! We make a Copy of a non empty eSmartPtrList, with autoDelete enabled"
- "We disable autoDelete in the new eSmartPtrList !!");
- else
- autoDelete=true;
}
/////////////////// eSmartPtrList Destructor /////////////////////////////
template <class T>
inline eSmartPtrList<T>::~eSmartPtrList()
{
-// if autoDelete is enabled, delete is called for all elements in the list
- if (autoDelete)
- for (std_list_T_iterator it(std::list<ePtr<T> >::begin()); it != std::list<ePtr<T> >::end(); it++)
- delete *it;
}
return empty();
}
-template <class T>
-void eSmartPtrList<T>::setAutoDelete(bool b)
-{
-// switched autoDelete on or off
-// if autoDelete is true, than the pointer list controls the heap memory behind the pointer itself
-// the list calls delete for the item before it removed from the list
- autoDelete=b;
-}
-
-template <class T>
-bool eSmartPtrList<T>::isAutoDelete()
-{
-// returns a bool that contains the state of autoDelete
- return autoDelete;
-}
-
#endif // _E_PTRLIST