00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #if !defined escript_Taipan_20050427_H
00016 #define escript_Taipan_20050427_H
00017 #include "system_dep.h"
00018
00019 namespace escript {
00020
00040 class ESCRIPT_DLL_API Taipan {
00041
00042 public:
00043
00057 Taipan();
00058
00072 ~Taipan();
00073
00082 double*
00083 new_array(int dim, int N);
00084
00091 void
00092 delete_array(double* array);
00093
00099 void
00100 release_unused_arrays();
00101
00106 int
00107 num_arrays();
00108
00113 int
00114 num_arrays(int N);
00115
00120 int
00121 num_free(int N);
00122
00127 long
00128 num_elements();
00129
00134 void
00135 dump_stats();
00136
00141 void
00142 clear_stats();
00143
00144 protected:
00145
00146 private:
00150 void operator=(const Taipan& c){}
00151
00152 typedef struct Taipan_StatTable {
00153 int requests;
00154 int frees;
00155 int allocations;
00156 int deallocations;
00157 long allocated_elements;
00158 long deallocated_elements;
00159 long max_tab_size;
00160 } Taipan_StatTable;
00161
00162 Taipan_StatTable* statTable;
00163
00164 typedef struct Taipan_MemTable {
00165 double* array;
00166 int dim;
00167 int N;
00168 int numThreads;
00169 bool free;
00170 struct Taipan_MemTable* next;
00171 } Taipan_MemTable;
00172
00173 Taipan_MemTable* memTable_Root;
00174
00175 long totalElements;
00176
00177 };
00178
00179 }
00180
00181 #endif