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