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(),
static int init_val
Definition: options.h:32
Option * add(Option *o)
Definition: options.h:368
static std::string init_val
Definition: options.h:51
T * add(T *item)
Definition: core.h:76
void parse_noarg()
Notify that the option is present in the command line, but has no arguments.
Definition: options.h:342
static std::string parse(const std::string &val)
Definition: options.cpp:43
Iterator< typename I::value_type > iterator(I i)
Definition: iterator.h:123
VectorOption(const std::string &name)
Definition: options.h:311
void addAlias(char c)
Definition: options.h:113
bool isSet() const
Definition: options.h:110
static std::string parse(const std::string &val)
static bool toBool(const value_type &val)
Definition: options.cpp:47
std::vector< Option * > options
Definition: options.h:370
const std::string & name() const
Definition: options.h:111
ArgList::iterator parse(ArgList &list, ArgList::iterator begin)
Parse the next commandline parameter after the short form of the command has been found...
Definition: options.h:182
SingleOption< ExistingFile > ExistingFileOption
Commandline option with a mandatory argument naming a file which must exist.
Definition: options.h:298
SingleOptvalOption< String > OptvalStringOption
Definition: options.h:289
ArgList::iterator parse(ArgList &list, ArgList::iterator begin)
Parse the next commandline parameter after the short form of the command has been found...
Definition: options.h:251
static std::string toString(const value_type &val)
Definition: options.cpp:40
T::value_type m_value
Definition: options.h:164
bool m_isset
Definition: options.h:61
SingleOptvalOption(const std::string &name)
Definition: options.h:231
void setValue(const typename T::value_type &a)
Definition: options.h:275
void parse_noarg()
Notify that the option is present in the command line, but has no arguments.
Definition: options.h:264
T::value_type m_value
Definition: options.h:228
static int toInt(const value_type &val)
Definition: options.cpp:26
int value_type
Definition: options.h:26
Exception thrown when some consistency check fails.
Definition: exception.h:254
std::vector< char > shortNames
Definition: options.h:120
std::string value_type
Definition: options.h:48
static int toInt(const value_type &val)
Definition: options.cpp:39
virtual bool arg_is_optional() const
Return true if the argument to this function can be omitted.
Definition: options.h:270
ArgList::iterator parse(ArgList &list, ArgList::iterator begin)
Parse the next commandline parameter after the short form of the command has been found...
Definition: options.h:327
void parse_noarg()
Notify that the option is present in the command line, but has no arguments.
Definition: options.h:197
std::string value_type
Definition: options.h:37
static std::string init_val
Definition: options.h:43
bool boolValue() const
Definition: options.h:348
void usage(ostream &out, const string &argv0)
Definition: commandline-demo.cpp:75
const std::string & fullUsage() const
Return a full usage message including all the aliases for this option.
Definition: options.cpp:101
virtual ~Option()
Definition: options.h:108
ListIterator< List > begin(List l)
Definition: list.h:420
std::string fullUsageForMan() const
Definition: options.cpp:124
static int toInt(const value_type &val)
Definition: options.cpp:48
VectorOption(const std::string &name, char shortName, const std::string &longName, const std::string &usage=std::string(), const std::string &description=std::string())
Definition: options.h:316
SingleOptvalOption(const std::string &name, char shortName, const std::string &longName, const std::string &usage=std::string(), const std::string &description=std::string())
Definition: options.h:236
virtual bool arg_is_optional() const
Return true if the argument to this function can be omitted.
Definition: options.h:104
T::value_type value() const
Definition: options.h:279
static bool toBool(const value_type &val)
Definition: options.cpp:38
std::string usage
Definition: options.h:123
Definition: options.h:161
BoolOption(const std::string &name, char shortName, const std::string &longName, const std::string &usage=std::string(), const std::string &description=std::string())
Definition: options.h:141
Parse commandline options.
Definition: engine.h:38
Interface for a parser for one commandline option.
Definition: options.h:55
SingleOption< String > StringOption
Definition: options.h:286
static bool toBool(const value_type &val)
Definition: options.cpp:25
SingleOption(const std::string &name, char shortName, const std::string &longName, const std::string &usage=std::string(), const std::string &description=std::string())
Definition: options.h:171
SingleOptvalOption< Int > OptvalIntOption
Definition: options.h:295
static std::string toString(const value_type &val)
Definition: options.cpp:60
virtual ArgList::iterator parse(ArgList &, ArgList::iterator begin)
Parse the next commandline parameter after the short form of the command has been found...
Definition: options.h:148
std::string stringValue() const
Definition: options.h:212
bool parse(const std::string ¶m)
Parse the commandline parameter of a long commandline switch.
Definition: options.h:336
Boolean option.
Definition: options.h:134
Keep track of various wibble::commandline components, and deallocate them at object destruction...
Definition: core.h:62
bool m_hasval
Definition: options.h:229
BoolOption(const std::string &name)
Definition: options.h:139
std::string description
Definition: options.h:372
virtual bool parse(const std::string &)
Parse the commandline parameter of a long commandline switch.
Definition: options.h:149
Option()
Definition: options.cpp:99
static bool parse(const std::string &val)
Definition: options.cpp:17
static bool init_val
Definition: options.h:21
iterator & eraseAndAdvance(iterator &i)
Definition: core.h:34
bool parse(const std::string ¶m)
Parse the commandline parameter of a long commandline switch.
Definition: options.h:257
Group related commandline options.
Definition: options.h:359
bool parse(const std::string ¶m)
Parse the commandline parameter of a long commandline switch.
Definition: options.h:191
virtual void parse_noarg()=0
Notify that the option is present in the command line, but has no arguments.
virtual ArgList::iterator parse(ArgList &list, ArgList::iterator begin)=0
Parse the next commandline parameter after the short form of the command has been found...
int intValue() const
Definition: options.h:211
static std::string toString(const value_type &val)
Definition: options.cpp:49
Definition: options.h:306
T::value_type value() const
Definition: options.h:207
Single option whose value can be or not be specified.
Definition: options.h:225
static int parse(const std::string &val)
Definition: options.cpp:30
void addAlias(const std::string &str)
Definition: options.h:114
OptionGroup(MemoryManager *mman=0, const std::string &description=std::string())
Definition: options.h:364
Option(const std::string &name, char shortName, const std::string &longName, const std::string &usage=std::string(), const std::string &description=std::string())
Definition: options.h:64
static std::string toString(const value_type &val)
Definition: options.cpp:27
const std::vector< typename T::value_type > & values() const
Definition: options.h:349
std::vector< std::string > longNames
Definition: options.h:121
T * add(const std::string &name, char shortName, const std::string &longName, const std::string &usage=std::string(), const std::string &description=std::string())
Create a new option and add it to this group.
Definition: options.h:396
std::string stringValue() const
Definition: options.h:154
bool hidden
Definition: options.h:375
bool hidden
Definition: options.h:127
SingleOption< Int > IntOption
Definition: options.h:292
Option(const std::string &name)
Definition: options.h:63
bool value_type
Definition: options.h:15
virtual void parse_noarg()
Notify that the option is present in the command line, but has no arguments.
Definition: options.h:150
T * create(const std::string &name, char shortName, const std::string &longName, const std::string &usage=std::string(), const std::string &description=std::string())
Create a new option.
Definition: options.h:381
SingleOptvalOption< ExistingFile > OptvalExistingFileOption
Commandline option with an optional argument naming a file which must exist.
Definition: options.h:301
void setValue(const typename T::value_type &a)
Definition: options.h:203
bool hasValue() const
Definition: options.h:273
std::string description
Definition: options.h:124
SingleOption(const std::string &name)
Definition: options.h:166
bool boolValue() const
Definition: options.h:153
bool boolValue() const
Definition: options.h:210