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