]> git.treefish.org Git - phys/latlib.git/blob - hypercache.h
f37bb0f212409a74275ca45422dbf262fb775c96
[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();
24   static bool readC();
25   static void writeO();
26   static void writeC();
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   static writeout *out;
52
53   static string fileOfPath(const string& dressedfile);
54   static string activeCFile;
55   static vector<string> parentConfigs;
56   static void addParentConfig(const char* parentconfig);
57 };
58
59 #endif