00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SEQCMDLINE_H
00019 #define SEQCMDLINE_H
00020
00021 #include <odinseq/seqclass.h>
00022
00023 #define USAGE_INDENTION_FACTOR 2
00024
00025
00027
00028
00029 #ifdef NO_CMDLINE
00030 struct SeqCmdlineActionList {};
00031 #else
00032 struct SeqCmdlineAction {
00033 SeqCmdlineAction(const STD_string& act, const STD_string& descr) : action(act), description(descr) {}
00034 void add_req_arg(const STD_string& opt, const STD_string& descr) {req_args[opt]=descr;}
00035 void add_opt_arg(const STD_string& opt, const STD_string& descr) {opt_args[opt]=descr;}
00036 STD_string action;
00037 STD_string description;
00038 STD_map<STD_string,STD_string> req_args;
00039 STD_map<STD_string,STD_string> opt_args;
00040 };
00041
00042 typedef STD_list<SeqCmdlineAction> SeqCmdlineActionList;
00043 #endif
00044
00045
00047
00048
00053 class SeqCmdLine : public SeqClass {
00054
00055 public:
00056 static int process(int argc, char *argv[]);
00057
00058 static STD_string format_actions(const SeqCmdlineActionList& actions);
00059
00060 private:
00061 static STD_string usage(const STD_string& meth, const STD_string& description);
00062
00063 };
00064
00065
00066 #endif