00001 /*! \file wx/general/a2dlist.inl 00002 \brief basic list class based on STL containers. 00003 \author Klaas Holwerda 00004 \author Kevin J Bluck 00005 \date 1/11/2005 00006 00007 Copyright: 2005 (c) Kevin J Bluck 00008 00009 License: wxWidgets License 00010 00011 RCS-ID: $Id: a2dlist.inl,v 1.9 2008/06/22 23:09:40 titato Exp $ 00012 */ 00013 00014 #ifndef __A2DLIST_INL__ 00015 #define __A2DLIST_INL__ 00016 00017 template<class T> 00018 a2dlist<T>::a2dlist( const a2dlist<T> &other ) 00019 { 00020 typename a2dlist<T>::const_iterator iter; 00021 for( iter = other.begin(); iter != other.end(); iter++ ) 00022 { 00023 push_back( (*iter) ); 00024 } 00025 } 00026 00027 template<class T> 00028 a2dlist<T>::~a2dlist() 00029 { 00030 } 00031 00032 template<class T> 00033 typename a2dPtrList<T>::itSmart a2dPtrList<T>::Find(T *object) 00034 { 00035 typename a2dlist< T* >::iterator iter; 00036 00037 for( iter = this->begin(); iter != this->end(); ++iter ) 00038 { 00039 if( (*iter) == object ) 00040 return iter; 00041 } 00042 return iter; 00043 } 00044 00045 00046 template<class T> 00047 typename a2dPtrList<T>::const_itSmart a2dPtrList<T>::Find(T *object) const 00048 { 00049 typename a2dlist< T* >::const_iterator iter; 00050 00051 for( iter = this->begin(); iter != this->end(); ++iter ) 00052 { 00053 if( (*iter) == object ) 00054 return iter; 00055 } 00056 return iter; 00057 } 00058 00059 template<class T> 00060 int a2dPtrList<T>::IndexOf( T *object) const 00061 { 00062 int i=0; 00063 typename a2dlist< T* >::const_iterator iter; 00064 for( iter = this->begin(); iter != this->end(); ++iter ) 00065 { 00066 if ( (*iter) == object ) 00067 return i; 00068 i++; 00069 } 00070 return -1; 00071 } 00072 00073 template<class T> 00074 void a2dPtrList<T>::DeleteObjects() 00075 { 00076 typename a2dlist< T* >::iterator iter = this->begin(); 00077 while( iter != this->end() ) 00078 { 00079 delete ( *iter ); 00080 iter = erase( iter ); 00081 } 00082 } 00083 00084 template<class T> 00085 bool a2dPtrList<T>::ReleaseObject( T *object ) 00086 { 00087 typename a2dlist< T* >::iterator iter = Find( object ); 00088 if( iter != this->end() ) 00089 { 00090 erase( iter ); 00091 return true; 00092 } 00093 else 00094 return false; 00095 } 00096 00097 #endif // __A2DLIST_INL__