![]()
|
GetLongOpt.h00001 /* $Id: GetLongOpt.h,v 2.1 2002/04/03 06:44:39 cljanss Exp $ */ 00002 /* S Manoharan. Advanced Computer Research Institute. Lyon. France */ 00003 00004 #ifdef __GNUC__ 00005 #pragma interface 00006 #endif 00007 00008 #ifndef _GetLongOpt_h_ 00009 #define _GetLongOpt_h_ 00010 00011 #include <iostream> 00012 #include <string.h> 00013 00014 namespace sc { 00015 00016 class GetLongOpt { 00017 public: 00018 enum OptType { 00019 NoValue, OptionalValue, MandatoryValue 00020 }; 00021 private: 00022 struct Cell { 00023 const char *option; // option name 00024 OptType type; // option type 00025 const char *description; // a description of option 00026 const char *value; // value of option (string) 00027 Cell *next; // pointer to the next cell 00028 00029 Cell() { option = description = value = 0; next = 0; } 00030 }; 00031 private: 00032 Cell *table; // option table 00033 const char *ustring; // usage message 00034 char *pname; // program basename 00035 char optmarker; // option marker 00036 00037 int enroll_done; // finished enrolling 00038 Cell *last; // last entry in option table 00039 00040 private: 00041 char *basename(char * const p) const; 00042 int setcell(Cell *c, const char *valtoken, const char *nexttoken, const char *p); 00043 public: 00044 GetLongOpt(const char optmark = '-'); 00045 ~GetLongOpt(); 00046 00047 int parse(int argc, char * const *argv); 00048 int parse(char * const str, char * const p); 00049 00050 int enroll(const char * const opt, const OptType t, 00051 const char * const desc, const char * const val); 00052 const char *retrieve(const char * const opt) const; 00053 00054 void usage(std::ostream &outfile = std::cout) const; 00055 void usage(const char *str) { ustring = str; } 00056 }; 00057 00058 } 00059 00060 #endif /* _GetLongOpt_h_ */ Generated at Fri Jan 10 08:14:08 2003 for MPQC 2.1.3 using the documentation package Doxygen 1.2.14. |