00001 #ifndef __TCountedPointerArray__ 00002 #define __TCountedPointerArray__ 00003 00004 #include "TPointerCollection.hpp" 00005 #include "TPointerDeleter.hpp" 00006 using Exponent::Collections::TCountedObjectDeleter; 00007 00008 // =========================================================================== 00009 00010 00011 namespace Exponent 00012 { 00013 namespace Collections 00014 { 00037 template<class TypeName> class TCountedPointerArray : public TPointerCollection<TypeName> 00038 { 00040 EXPONENT_CLASS_DECLARATION; 00043 // =========================================================================== 00044 00045 public: 00046 00047 // =========================================================================== 00048 00049 static TCountedObjectDeleter<TypeName> TCOUNTEDPOINTER_ARRAY_DEFAULT_DELETER; 00051 // =========================================================================== 00052 00056 TCountedPointerArray(); 00057 00061 ~TCountedPointerArray(); 00062 }; 00063 00066 EXPONENT_TEMPLATE_CLASS_IMPLEMENTATION_TEMPLATE_PARENT(TCountedPointerArray<TypeName>, TypeName, TPointerCollection<TypeName>, TypeName); 00067 00068 template<class TypeName> TCountedObjectDeleter<TypeName> TCountedPointerArray<TypeName>::TCOUNTEDPOINTER_ARRAY_DEFAULT_DELETER; 00069 00070 // =========================================================================== 00071 template<class TypeName> TCountedPointerArray<TypeName>::TCountedPointerArray() : Exponent::Collections::TPointerCollection<TypeName>(&TCOUNTEDPOINTER_ARRAY_DEFAULT_DELETER) 00072 { 00073 EXPONENT_CLASS_CONSTRUCTION(TCountedPointerArray<TypeName>); 00074 } 00075 00076 // =========================================================================== 00077 template<class TypeName> TCountedPointerArray<TypeName>::~TCountedPointerArray() 00078 { 00079 EXPONENT_CLASS_DESTRUCTION(TCountedPointerArray<TypeName>); 00080 } 00081 00083 } 00084 } 00085 #endif // End of TCountedPointerArray.hpp