]> git.treefish.org Git - phys/latlib.git/blobdiff - o815/o815.h
Changed hashed parastring cachfilename postfix to sdat and made configcache backward...
[phys/latlib.git] / o815 / o815.h
index 932af0f28f95463ade24d1cda7ef5bbd6248bb91..79d427dbb415dfe3c687579eb0c0d8eb93d5dcfa 100644 (file)
@@ -3,11 +3,12 @@
 
 #include <string>
 #include <vector>
 
 #include <string>
 #include <vector>
-#include <mpi.h>
 #include <stdlib.h>
 #include <stdlib.h>
+#include <getopt.h>
 
 #include "latlib/paraq.h"
 #include "latlib/writeout.h"
 
 #include "latlib/paraq.h"
 #include "latlib/writeout.h"
+#include "latlib/hypercache.h"
 
 using namespace std;
 
 
 using namespace std;
 
@@ -18,21 +19,39 @@ class o815 {
 
   class obs {
   public:
 
   class obs {
   public:
-    obs(const string& _obsid, const string& _datadesc, o815 *_O815);
+    obs(const string& _obsid, const string& _datadesc, o815 *_O815, const int& _obsmemSize, const string& _obsidpostfix="");
     void finish();
     void finish();
-    void meas();
+    void meas(bool loadedobs, const int& nthmeas);
     void start();
     string getDataDesc() { return datadesc; };
     void start();
     string getDataDesc() { return datadesc; };
+    int ocid;
+    string obsid;
+    string obsidpostfix;
   private:
   private:
-    virtual void _meas(bool loadedobs)=0;
+    virtual void _meas(bool loadedobs, const int& nthmeas)=0;
     virtual void _finish()=0;
     virtual void _start()=0;
   protected:
     o815 *O815;
     char *obsMem;
     virtual void _finish()=0;
     virtual void _start()=0;
   protected:
     o815 *O815;
     char *obsMem;
-    ostream *oout;
-    ostream *olog;
-    string obsid, datadesc;
+    string simid, datadesc;
+    ostream *out, *log;
+    paraq* paraQ;
+  };
+
+  class sim {
+  public:
+    sim(o815 *_O815, const int& _confmemSize);
+    void nextConfig();
+    char *confMem;
+    virtual void _newParas()=0;
+    int nequi, nskip;
+  private:
+    virtual void _makeSweep()=0;
+  protected:
+    o815 *O815;
+    ostream *log;
+    int confmemSize;
   };
 
   struct {
   };
 
   struct {
@@ -43,24 +62,42 @@ class o815 {
     pair<string,int> obscache;
     pair<string,int> confcache;
     string outdir;
     pair<string,int> obscache;
     pair<string,int> confcache;
     string outdir;
-    bool idonly;
-    bool showjobnum;
+    int idonly;
+    int showjobnum;
   } comargs;
 
   } comargs;
 
-  o815(int argc, char **argv, const string& programid);
+  struct comoption {
+    string name;
+    int has_arg;
+    int *flag;
+    int val;
+    string optdesc;
+    string argdesc;
+  };
+
+  o815(int argc, char **argv, const string& _programid, comoption specOps[]=NULL, void (*helpHeader)()=NULL);
+  void postParaInit();
   ~o815();
   paraq *paraQ;
   writeout *out;
   vector<obs*> observables;
   ~o815();
   paraq *paraQ;
   writeout *out;
   vector<obs*> observables;
+  sim* Sim;
   void mainLoop();
   string headMaster();
   void mainLoop();
   string headMaster();
+  void addPara(const string& paraid, const double& paraDefault);
+  void addComOption(const char* name, int has_arg, int *flag, int val, const char* optdesc, const char* argdesc);
+  vector< pair<int,char*> > parsedSpecOps;
+  vector<char*> lonelyArgs;
 
 private:
 
 private:
-  MPI_Status mpiStatus;
+  vector<comoption> comOptions;
   int numprocs, rank;
   static void listArg(int *target, int tlen, char *listarg);
   int numprocs, rank;
   static void listArg(int *target, int tlen, char *listarg);
-  void parseArgs(int argc, char **argv);
+  void parseArgs(int argc, char **argv, comoption specOps[]);
   string programid;
   string programid;
+  int nextParas();
+  comoption* getOptionByVal(int val);
+  static void readCacheArgs(const string& arg, string& cachedir, int& cachemode);
 };
 
 #endif
 };
 
 #endif