]> git.treefish.org Git - phys/latlib.git/blobdiff - configcache.h
...
[phys/latlib.git] / configcache.h
index 158eb0ae85f87cdea8d1ad8f97a985cb54186f15..74998c7bf77230f31bec7d4b39fb869407e13293 100644 (file)
@@ -7,9 +7,12 @@
 #include <sstream>
 #include <ostream>
 
-#define CACHE_MODE_DISABLED 0
-#define CACHE_MODE_READ 1
-#define CACHE_MODE_FULL 2
+#include "datread.h"
+
+#define CACHE_MODE_OO 0
+#define CACHE_MODE_RO 1
+#define CACHE_MODE_WO 2
+#define CACHE_MODE_RW 3
 
 using namespace std;
 
@@ -23,13 +26,14 @@ struct infiledesc {
   int nequi;
   int nskip;
   bool extended;
+  bool superextended;
 };
 
 class configcache{
  public:
   ~configcache();
   configcache(const string& cacheid, const int& nequi, const int& nskip, const string& datadir, char **configmem, const int& configMemSize, 
-             const int& cachemode=CACHE_MODE_FULL, ostream *_log=NULL);
+             const int& cachemode=CACHE_MODE_RW, ostream *_log=NULL);
   void readConfig(bool *readnewconfig, int *nequileft, vector<unsigned long> *excludeFileHashes=NULL);
   void writeConfig(int actnequi);
   void addPara(const string& parid, const double& val=0);
@@ -39,7 +43,7 @@ class configcache{
   string getOutFileName() { return outFileName.str(); }
   string getInFileName() { return DATADIR + "/" + openFileDesc.filename; }
   static unsigned long hash(const string& str);
-  void closeInFile() { inFile.close(); }
+  void closeInFile() { dataReader->closeFile(); }
   int inFilesLeft() { return inFiles.size(); }
   char* getConfigMem() { return configMem; }
   int getConfigSize() { return configSize; }
@@ -58,10 +62,9 @@ class configcache{
   string DATADIR;
   string CACHEID;
   int MODE;
-  string getFileId(int actnequi, const bool& shortid=false);
+  string getFileId(int actnequi, const bool& superextended=true, const bool& shortid=false);
 
   ofstream outFile;
-  ifstream inFile;
 
   stringstream outFileName;
 
@@ -83,20 +86,12 @@ class configcache{
 
   vector<parameter> Paras;
 
-  int readDataToMem(char *tmpData, long unsigned int dataSize);
-
   void openOutFile(int actnequi);
 
   int readHeader();
 
   bool headerWritten;
 
-  int readFullBlock(char *tmpData, long unsigned int dataSize);
-
-  vector< pair<unsigned long, void *> > headerStore;
-
-  void deleteHeaderStore();
-
   bool readAllHeaders();
 
   vector<infiledesc>::iterator getNextInfile(vector<unsigned long> *excludeFileHashes);
@@ -104,6 +99,10 @@ class configcache{
   int nequileft_internal;
 
   bool doVirtualEquilibration, firstUsedConfig;
+
+  string paraString();
+
+  datread *dataReader;
 };
 
 #endif