1 #ifndef WIBBLE_COMMANDLINE_OPTIONS_H
2 #define WIBBLE_COMMANDLINE_OPTIONS_H
9 namespace commandline {
16 static bool parse(
const std::string& val);
27 static int parse(
const std::string& val);
38 static std::string
parse(
const std::string& val);
49 static std::string
parse(
const std::string& val);
58 mutable std::string m_fullUsage;
66 const std::string& longName,
67 const std::string&
usage = std::string(),
73 if (!longName.empty())
95 virtual bool parse(
const std::string& param) = 0;
111 const std::string&
name()
const {
return m_name; }
140 :
Option(name), m_value(false) {}
143 const std::string& longName,
144 const std::string&
usage = std::string(),
154 std::string
stringValue()
const {
return m_value ?
"true" :
"false"; }
173 const std::string& longName,
174 const std::string&
usage = std::string(),
179 this->
usage =
"<val>";
184 if (begin == list.end())
191 bool parse(
const std::string& param)
238 const std::string& longName,
239 const std::string&
usage = std::string(),
245 "creating option " + name +
" with optional value"
246 "short options with optional values are not allowed");
248 this->
usage =
"<val>";
254 "parsing option with optional value"
255 "short options with optional values are not allowed");
257 bool parse(
const std::string& param)
308 std::vector< typename T::value_type > m_values;
318 const std::string& longName,
319 const std::string&
usage = std::string(),
324 this->
usage =
"<val>";
329 if (begin == list.end())
332 m_values.push_back(T::parse(*begin));
336 bool parse(
const std::string& param)
339 m_values.push_back(T::parse(param));
349 const std::vector< typename T::value_type >&
values()
const {
return m_values; }
383 const std::string& longName,
384 const std::string&
usage = std::string(),
388 if (m_manager) m_manager->
add(item);
396 T*
add(
const std::string& name,
398 const std::string& longName,
399 const std::string&
usage = std::string(),