]> git.treefish.org Git - phys/latlib.git/blobdiff - o815/o815.h
improved argument handling.
[phys/latlib.git] / o815 / o815.h
index 510e799730c64663ef0bd25626ea6706cf3f629b..8b004374ac0e779c046f1b56d181eb913bf7189f 100644 (file)
@@ -5,6 +5,7 @@
 #include <vector>
 #include <mpi.h>
 #include <stdlib.h>
 #include <vector>
 #include <mpi.h>
 #include <stdlib.h>
+#include <getopt.h>
 
 #include "latlib/paraq.h"
 #include "latlib/writeout.h"
 
 #include "latlib/paraq.h"
 #include "latlib/writeout.h"
@@ -62,11 +63,20 @@ 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);
   ~o815();
   paraq *paraQ;
   writeout *out;
   ~o815();
   paraq *paraQ;
   writeout *out;
@@ -75,14 +85,19 @@ class o815 {
   void mainLoop();
   string headMaster();
   void addPara(const string& paraid, const double& paraDefault);
   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:
+  vector<comoption> comOptions;
   MPI_Status mpiStatus;
   int numprocs, rank;
   static void listArg(int *target, int tlen, char *listarg);
   MPI_Status mpiStatus;
   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;
   int nextParas();
   string programid;
   int nextParas();
+  comoption* getOptionByVal(int val);
 };
 
 #endif
 };
 
 #endif