00001 /* 00002 File: PtrArray.h 00003 00004 Function: 00005 00006 Author: Andrew Willmott 00007 00008 Copyright: (c) 1998-2000, Andrew Willmott 00009 */ 00010 00011 #ifndef __PtrArray__ 00012 #define __PtrArray__ 00013 00014 #include "cl/Array.h" 00015 00016 typedef Array<Void*> VoidPtrArray; 00017 00018 template<class T> class PtrArray : public VoidPtrArray 00019 { 00020 public: 00021 inline T*& operator [] (Int i) 00022 { return((T*&) item[i]); }; // indexing operator 00023 inline T* operator [] (Int i) const 00024 { return((T*) item[i]); }; // indexing operator 00025 00026 T* &Item(Int i) 00027 { return((T*&) item[i]); }; 00028 T* Item(Int i) const 00029 { return((T*) item[i]); }; 00030 T* &Last() 00031 { return((T*&) VoidPtrArray::Last()); }; 00032 00033 Void Append(T* t) 00034 { VoidPtrArray::Append((Void*) t); }; 00035 00036 inline Void FreeAll(); 00037 }; 00038 00039 template<class T> inline Void PtrArray<T>::FreeAll() 00040 { 00041 Int i; 00042 00043 for (i = 0; i < items; i++) 00044 delete ((T*) item[i]); 00045 } 00046 00047 #endif