ARC SDK
OptionParser.h
1 // -*- indent-tabs-mode: nil -*-
2 
3 #ifndef __ARC_OPTION_H__
4 #define __ARC_OPTION_H__
5 
6 #include <list>
7 #include <string>
8 #include <map>
9 
10 namespace Arc {
11 
12  class OptionBase;
13 
15 
31  class OptionParser {
32 
33  public:
35 
40  OptionParser(const std::string& arguments = "",
41  const std::string& summary = "",
42  const std::string& description = "");
43 
44  ~OptionParser();
45 
46 
48 
55  void AddOption(const char shortOpt,
56  const std::string& longOpt,
57  const std::string& optDesc,
58  bool& val);
59 
60 
62 
69  void AddOption(const char shortOpt,
70  const std::string& longOpt,
71  const std::string& optDesc,
72  const std::string& argDesc,
73  int& val);
74 
75 
77 
84  void AddOption(const char shortOpt,
85  const std::string& longOpt,
86  const std::string& optDesc,
87  const std::string& argDesc,
88  std::string& val);
89 
91 
98  void AddOption(const char shortOpt,
99  const std::string& longOpt,
100  const std::string& optDesc,
101  const std::string& argDesc,
102  std::list<std::string>& val);
103 
105 
110  void DefineOptionsGroup(const std::string groupID, const std::string& groupName);
111 
113 
121  void GroupAddOption(const std::string groupID,
122  const char shortOpt,
123  const std::string& longOpt,
124  const std::string& optDesc,
125  bool& val);
126 
128 
137  void GroupAddOption(const std::string groupID,
138  const char shortOpt,
139  const std::string& longOpt,
140  const std::string& optDesc,
141  const std::string& argDesc,
142  int& val);
143 
145 
154  void GroupAddOption(const std::string groupID,
155  const char shortOpt,
156  const std::string& longOpt,
157  const std::string& optDesc,
158  const std::string& argDesc,
159  std::string& val);
160 
162 
171  void GroupAddOption(const std::string groupID,
172  const char shortOpt,
173  const std::string& longOpt,
174  const std::string& optDesc,
175  const std::string& argDesc,
176  std::list<std::string>& val);
177 
179 
186  std::list<std::string> Parse(int argc, char **argv);
187 
189 
195  const std::string& GetCommandWithArguments() const { return origcmdwithargs; }
196 
197  private:
198  std::string arguments;
199  std::string summary;
200  std::string description;
201  std::map<std::string, std::string> optgroups;
202  std::list<std::pair<OptionBase*, std::string> > options;
203  std::string origcmdwithargs;
204  };
205 
206 } // namespace Arc
207 
208 #endif // __ARC_OPTION_H__
Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
void DefineOptionsGroup(const std::string groupID, const std::string &groupName)
Add an options group.
const std::string & GetCommandWithArguments() const
Get command and arguments.
Definition: OptionParser.h:195
Command line option parser used by ARC command line tools.
Definition: OptionParser.h:31
std::list< std::string > Parse(int argc, char **argv)
Parse the options and arguments.
void GroupAddOption(const std::string groupID, const char shortOpt, const std::string &longOpt, const std::string &optDesc, bool &val)
Add an option which does not take any arguments to group.
OptionParser(const std::string &arguments="", const std::string &summary="", const std::string &description="")
Create a new OptionParser.
void AddOption(const char shortOpt, const std::string &longOpt, const std::string &optDesc, bool &val)
Add an option which does not take any arguments in default group.