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 } 00027 free(elements); elements = 0; 00028 l = n =0; 00029 } 00030 } 00031 00033 void destroy_arrays(void) { 00034 if (elements) { 00035 for(unsigned long i=0;i<n;i++) 00036 delete [] elements[i]; 00037 free(elements); elements = 0; 00038 l = n =0; 00039 } 00040 } 00042 void clear(void) { 00043 if (elements) { 00044 free(elements); elements = 0; 00045 l=n=0; 00046 } 00047 } 00048 00050 ~csimList() { 00051 if (elements) { 00052 free(elements); elements=0; 00053 n = 0; 00054 } 00055 } 00056 unsigned long n; 00057 T **elements; 00058 private: 00059 unsigned long l; 00060 }; 00061 #endif