00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef __SMRTPTR_INL__
00014 #define __SMRTPTR_INL__
00015
00016 template<class T>
00017 typename a2dSmrtPtrList<T>::itSmart a2dSmrtPtrList<T>::Find(T *object)
00018 {
00019 typename a2dlist< a2dSmrtPtr< T > >::iterator iter;
00020
00021 for( iter = this->begin(); iter != this->end(); ++iter )
00022 {
00023 if( (*iter).Get() == object )
00024 return iter;
00025 }
00026 return iter;
00027 }
00028
00029
00030 template<class T>
00031 typename a2dSmrtPtrList<T>::const_itSmart a2dSmrtPtrList<T>::Find(T *object) const
00032 {
00033 typename a2dlist< a2dSmrtPtr< T > >::const_iterator iter;
00034
00035 for( iter = this->begin(); iter != this->end(); ++iter )
00036 {
00037 if( (*iter).Get() == object )
00038 return iter;
00039 }
00040 return iter;
00041 }
00042
00043 template<class T>
00044 int a2dSmrtPtrList<T>::IndexOf( T *object) const
00045 {
00046 int i=0;
00047 typename a2dlist< a2dSmrtPtr< T > >::const_iterator iter;
00048 for( iter = this->begin(); iter != this->end(); ++iter )
00049 {
00050 if ( (*iter).Get() == object )
00051 return i;
00052 i++;
00053 }
00054 return -1;
00055 }
00056
00057
00058 template<class T>
00059 bool a2dSmrtPtrList<T>::ReleaseObject( T *object )
00060 {
00061 typename a2dlist< a2dSmrtPtr< T > >::iterator iter = Find( object );
00062 if( iter != this->end() )
00063 {
00064 erase( iter );
00065 return true;
00066 }
00067 else
00068 return false;
00069 }
00070
00071
00072 #endif // __SMRTPTR_INL__