47 const std::string& descritpion,
48 const T& defaultValue);
53 T
getOption(
const std::string& name)
const;
57 bool hasOption(
const std::string& name)
const;
66 const std::string& description);
83 const std::string& description,
88 bool getFlag(
const std::string& name)
const;
92 bool hasFlag(
const std::string& name)
const;
96 T
get(
const std::string& name)
const;
109 virtual void printUsage(std::ostream& os)
const;
113 template<
typename T> T convertFromString(
const std::string& token)
const;
115 static size_t lineWidth;
116 static std::string multiLine(
const std::string& line,
size_t indent);
119 std::string _description;
120 std::string _defaultValue;
127 std::string _description;
132 std::string _exeName;
133 std::string _description;
134 std::string _example;
135 std::vector<Argument> _args;
136 std::map<std::string, Option> _options;
141 template <
typename T>
142 inline T CLParser::convertFromString(
const std::string& token)
const
144 std::stringstream ss(token);
153 throw hal_exception(std::string(
"type conversion error parsing"
162 CLParser::convertFromString<std::string>(
const std::string& token)
const
167 template <
typename T>
169 const std::string& descritpion,
170 const T& defaultValue)
174 throw hal_exception(std::string(
"name ") + name +
"already present");
176 std::stringstream ss;
181 opt._description = descritpion;
182 opt._defaultValue = ss.str();
183 opt._value = opt._defaultValue;
188 throw hal_exception(std::string(
"type conversion adding option ") + name);
191 _options.insert(std::pair<std::string, Option>(name, opt));
192 _maxOptLen = std::max(_maxOptLen, name.length());
195 template <
typename T>
198 std::map<std::string, Option>::const_iterator i = _options.find(name);
199 if (i == _options.end() || i->second._flag ==
true)
201 throw hal_exception(std::string(
"Option ") + name +
" not recognized");
203 return convertFromString<T>(i->second._value);
206 template <
typename T>
209 for (
size_t i = 0; i < _args.size(); ++i)
211 if (_args[i]._name == name)
213 return convertFromString<T>(_args[i]._value);
216 throw hal_exception(std::string(
"Argument ") + name +
" not recognized");
220 template <
typename T>
225 return getArgument<T>(name);
229 return getOption<T>(name);
237 throw hal_exception(std::string(
"Name ") + name +
" not recognized");
void addArgument(const std::string &name, const std::string &description)
Definition: halCLParser.h:30
void addOptionFlag(const std::string &name, const std::string &description, bool defaultValue)
T get(const std::string &name) const
Definition: halCLParser.h:221
void setExample(const std::string &example)
Definition: halCLParser.h:118
virtual void setOptionPrefix(const std::string &prefix)
virtual void printUsage(std::ostream &os) const
Definition: halCLParser.h:125
void addOption(const std::string &name, const std::string &descritpion, const T &defaultValue)
Definition: halCLParser.h:168
bool hasArgument(const std::string &name) const
bool hasOption(const std::string &name) const
virtual void parseOptions(int argc, char **argv)
T getOption(const std::string &name) const
Definition: halCLParser.h:196
T getArgument(const std::string &name) const
Definition: halCLParser.h:207
bool getFlag(const std::string &name) const
void setDescription(const std::string &description)
bool hasFlag(const std::string &name) const