00001 #ifndef __CSIMLIST_H__ 00002 #define __CSIMLIST_H__ 00003 00004 template<class T, int inc> class csimList { 00005 public: 00007 csimList(void) { 00008 l = n =0; 00009 elements = 0; 00010 } 00011 00013 void add(T *el) { 00014 if ( n >= l ) { 00015 l += inc; 00016 elements = (T **)realloc(elements,l*sizeof(T *)); 00017 } 00018 elements[n++] = el; 00019 } 00020 00022 void destroy(void) { 00023 if (elements) { 00024 for(unsigned long i=0;i<n;i++) 00025 delete elements[i]; 00026 free(elements); elements = 0; 00027 l = n =0; 00028 } 00029 } 00030 00032 void destroy_arrays(void) { 00033 if (elements) { 00034 for(unsigned long i=0;i<n;i++) 00035 delete [] elements[i]; 00036 free(elements); elements = 0; 00037 l = n =0; 00038 } 00039 } 00041 void clear(void) { 00042 if (elements) { 00043 free(elements); elements = 0; 00044 l=n=0; 00045 } 00046 } 00047 00049 ~csimList() { 00050 if (elements) { 00051 free(elements); elements=0; 00052 n = 0; 00053 } 00054 } 00055 unsigned long n; 00056 T **elements; 00057 private: 00058 unsigned long l; 00059 }; 00060 #endif