libkcal
listbase.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef KCAL_LISTBASE_H
00022 #define KCAL_LISTBASE_H
00023
00024 #include <tqvaluelist.h>
00025
00026 namespace KCal {
00027
00032 template<class T>
00033 class ListBase : public TQValueList<T *>
00034 {
00035 public:
00036 ListBase()
00037 : TQValueList<T *>(), mAutoDelete( false )
00038 {
00039 }
00040
00041 ListBase( const ListBase &l )
00042 : TQValueList<T *>( l ), mAutoDelete( false )
00043 {
00044 }
00045
00046 ~ListBase()
00047 {
00048 if ( mAutoDelete ) {
00049 TQValueListIterator<T *> it;
00050 for( it = TQValueList<T*>::begin(); it != TQValueList<T*>::end(); ++it ) {
00051 delete *it;
00052 }
00053 }
00054 }
00055
00056 ListBase &operator=( const ListBase &l )
00057 {
00058 if ( this == &l ) return *this;
00059 TQValueList<T *>::operator=( l );
00060 return *this;
00061 }
00062
00063 void setAutoDelete( bool autoDelete )
00064 {
00065 mAutoDelete = autoDelete;
00066 }
00067
00068 bool removeRef( T *t )
00069 {
00070 TQValueListIterator<T *> it = find( t );
00071 if ( it == TQValueList<T*>::end() ) {
00072 return false;
00073 } else {
00074 if ( mAutoDelete ) delete t;
00075 this->remove( it );
00076 return true;
00077 }
00078 }
00079
00080 void clearAll()
00081 {
00082 if ( mAutoDelete ) {
00083 for ( TQValueListIterator<T*> it = TQValueList<T*>::begin();
00084 it != TQValueList<T*>::end(); ++it ) {
00085 delete *it;
00086 }
00087 }
00088 TQValueList<T*>::clear();
00089 }
00090
00091 private:
00092 bool mAutoDelete;
00093 };
00094
00095 }
00096
00097 #endif
|