]> git.treefish.org Git - phys/latlib.git/blob - hypercache.h
hypercache now working.
[phys/latlib.git] / hypercache.h
1 #ifndef HYPERCACHE_H
2 #define HYPERCACHE_H
3
4 #include <iostream>
5
6 #include "configcache.h"
7
8 using namespace std;
9
10 class hypercache {
11  public:
12   static void initO(const string& cacheid, const int& nequi, const int& nskip, const string& datadir, 
13                     char **configmem, const int& configMemSize, const int& cachemode=CACHE_MODE_FULL, writeout *out_a=NULL) {
14     initCache(&O, cacheid, nequi, nskip, datadir, configmem, configMemSize, cachemode, out_a);
15   }
16   static void initC(const string& cacheid, const int& nequi, const int& nskip, const string& datadir, 
17                     char **configmem, const int& configMemSize, const int& cachemode=CACHE_MODE_FULL, writeout *out_a=NULL) {
18     initCache(&C, cacheid, nequi, nskip, datadir, configmem, configMemSize, cachemode, out_a);
19   }
20   
21   static void addPara(const string& parid, const double& val=0);
22   static void setPara(const string& parid, const double& value);
23   static bool readO() { return O->readConfig(); }
24   static bool readC() { return C->readConfig(); }
25   static void writeO() { O->writeConfig(); }
26   static void writeC() { C->writeConfig(); }
27   static void writeHeaderO(const string& headerid, char *header, long unsigned int size) { O->writeHeader(headerid, header, size); }
28   static void *getHeaderO(const string& headerid) { O->getHeader(headerid); }
29   static void writeHeaderC(const string& headerid, char *header, long unsigned int size) { C->writeHeader(headerid, header, size); }
30   static void *getHeaderC(const string& headerid) { C->getHeader(headerid); }
31
32   static void finalize();
33   
34  private:
35   struct para{
36     string parid;
37     double val;
38   };
39
40   static void initCache(configcache **cache,
41                         const string& cacheid, const int& nequi, const int& nskip, const string& datadir, 
42                         char **configmem, const int& configMemSize, const int& cachemode=CACHE_MODE_FULL, writeout *out_a=NULL); 
43
44   static void initCache( configcache **cache,
45                          const string& cacheid, char **configmem, const int& configMemSize, const int& cachemode=CACHE_MODE_FULL);
46
47   static configcache *O;
48   static configcache *C;
49   static vector<para> delayedParaAdd;
50   static vector<para> delayedParaSet;
51 };
52
53 #endif