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