WvStreams
Public Types | Public Member Functions | List of all members
WvArgs Class Reference

WvArgs - Sane command-line argument processing for WvStreams. More...

#include <wvargs.h>

Public Types

enum  flags_t { NO_EXIT_ON_ERRORS, FLAGS_SIZE }
 These flags control the behaviour of WvArgs. More...
 
typedef wv::function< bool(void *)> NoArgCallback
 The callback type used for switches that do not take a parameter. More...
 
typedef wv::function< bool(WvStringParm, void *)> ArgCallback
 The callback type used for switches that take a parameter It returns true if the switch was parsed correctly.
 

Public Member Functions

bool process (int argc, char **argv, WvStringList *remaining_args=NULL)
 Process the command line arguments passed to main() using the options provided through calls to add_option(..). More...
 
void set_version (WvStringParm version)
 Set the –version string.
 
void set_email (WvStringParm email)
 Set the e-mail address for bug reports.
 
void set_help_header (WvStringParm header)
 Set the introductory help message, printed at the beginning of –help.
 
void set_help_footer (WvStringParm footer)
 Set the descriptive help message, printed at the end of –help.
 
void print_usage (int argc, char **argv)
 Output the short usage message based on the provided options. More...
 
void print_help (int argc, char **argv)
 Output the long usage message based on the provided options.
 
void add_set_bool_option (char short_option, WvStringParm long_option, WvStringParm desc, bool &val)
 Add a boolean option, which, when specified, sets the specified boolean variable to true. More...
 
void add_reset_bool_option (char short_option, WvStringParm long_option, WvStringParm desc, bool &val)
 Add a boolean option, which, when spefied, sets the specified boolean variable to false. More...
 
void add_flip_bool_option (char short_option, WvStringParm long_option, WvStringParm desc, bool &val)
 Add a boolean option, which, when spefied, changes the value of the boolean variable from false to true or from true to false. More...
 
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, int &val)
 Add a switch that takes an integer argument. More...
 
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, long &val)
 Add a switch that takes a long argument. More...
 
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, float &val)
 Add a switch that takes a float argument. More...
 
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, double &val)
 Add a switch that takes a double argument. More...
 
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, WvString &val)
 Add a switch that takes a string argument. More...
 
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, WvStringList &val)
 Add a switch that takes a string argument; the argument is appended to a string list. More...
 
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, NoArgCallback cb, void *ud=NULL)
 Add a switch which does not take an argument which invokes a callback when it is specified. More...
 
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, ArgCallback cb, void *ud=NULL)
 Add a switch which takes an argument which invokes a callback when it is specified. More...
 
void add_required_arg (WvStringParm desc, bool multiple=false)
 Add a required argument to the list of parameters. More...
 
void add_optional_arg (WvStringParm desc, bool multiple=false)
 Add an optional argument to the list of parameters. More...
 
void remove_option (char short_option)
 Remove an option by specifying its short form. More...
 
void remove_option (WvStringParm long_option)
 Remove an option by specifying its long form. More...
 
void remove_all_options ()
 Remove all options.
 
void zap ()
 An alias for remove_all_options()
 
bool get_flag (const flags_t flag) const
 Get and set flags.
 
void set_flag (const flags_t flag, const bool value)
 

Detailed Description

WvArgs - Sane command-line argument processing for WvStreams.

WvArgs allows you to specify a series of typed or callback-enabled command-line arguments. Once all of these arguments are specified, the WvArgs::process(..) function can be called to perform the actual argument processing.

Sample usage:

#include "wvargs.h"
static void callback(void *userdata, WvStringParm value)
{
wvout->print("callback value = %s, userdata = %s\n",
value, (const char *)userdata);
}
int main(int argc, char **argv)
{
WvString str_opt = "default";
bool bool_opt = false;
int num_opt = 0;
WvArgs args;
args.add_option('s', "str", "Pass a string option", "string", str_opt);
args.add_set_bool_option('b', "bool", "Set a boolean option", bool_opt);
args.add_option('n', "num", "Pass a numeric option", "integer", num_opt);
args.add_option('c', "callback", "Callback option",
WvArgs::ArgCallback(callback), (void *)"demo");
WvStringList remaining_args;
args.process(argc, argv, &remaining_args);
wvout->print("str_opt=%s, bool_opt=%s, num_opt=%s\n",
str_opt, bool_opt, num_opt);
WvStringList::Iter i(remaining_args);
for (i.rewind(); i.next(); )
wvout->print("rem: %s\n", *i);
return 0;
}

!

Definition at line 61 of file wvargs.h.

Member Typedef Documentation

◆ NoArgCallback

typedef wv::function<bool(void*)> WvArgs::NoArgCallback

The callback type used for switches that do not take a parameter.

It returns true if the switch was parsed correctly.

Definition at line 69 of file wvargs.h.

Member Enumeration Documentation

◆ flags_t

These flags control the behaviour of WvArgs.

By default, they are all set to false.

Definition at line 338 of file wvargs.h.

Member Function Documentation

◆ process()

bool WvArgs::process ( int  argc,
char **  argv,
WvStringList remaining_args = NULL 
)

Process the command line arguments passed to main() using the options provided through calls to add_option(..).

If remaining_args is provided, any remaining arguments after the command line switches will be appended to this list.

Definition at line 784 of file wvargs.cc.

Referenced by WvDaemon::run().

◆ print_usage()

void WvArgs::print_usage ( int  argc,
char **  argv 
)

Output the short usage message based on the provided options.

Useful when a bad value is passed as the parameter of a switch.

Definition at line 843 of file wvargs.cc.

◆ add_set_bool_option()

void WvArgs::add_set_bool_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
bool &  val 
)

Add a boolean option, which, when specified, sets the specified boolean variable to true.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
valThe boolean variable to set to true when the switch is specified

Definition at line 856 of file wvargs.cc.

◆ add_reset_bool_option()

void WvArgs::add_reset_bool_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
bool &  val 
)

Add a boolean option, which, when spefied, sets the specified boolean variable to false.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
valThe boolean variable to set to false when the switch is specified

Definition at line 864 of file wvargs.cc.

◆ add_flip_bool_option()

void WvArgs::add_flip_bool_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
bool &  val 
)

Add a boolean option, which, when spefied, changes the value of the boolean variable from false to true or from true to false.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
valThe boolean variable to change when the switch is specified

Definition at line 872 of file wvargs.cc.

◆ add_option() [1/8]

void WvArgs::add_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
WvStringParm  arg_desc,
int &  val 
)

Add a switch that takes an integer argument.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
arg_descThe (short) description of the argument; NULL for none
valThe integer varible that gets the value of the argument

Definition at line 888 of file wvargs.cc.

◆ add_option() [2/8]

void WvArgs::add_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
WvStringParm  arg_desc,
long &  val 
)

Add a switch that takes a long argument.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
arg_descThe (short) description of the argument; NULL for none
valThe long varible that gets the value of the argument

Definition at line 896 of file wvargs.cc.

◆ add_option() [3/8]

void WvArgs::add_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
WvStringParm  arg_desc,
float &  val 
)

Add a switch that takes a float argument.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
arg_descThe (short) description of the argument; NULL for none
valThe float varible that gets the value of the argument

Definition at line 904 of file wvargs.cc.

◆ add_option() [4/8]

void WvArgs::add_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
WvStringParm  arg_desc,
double &  val 
)

Add a switch that takes a double argument.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
arg_descThe (short) description of the argument; NULL for none
valThe double varible that gets the value of the argument

Definition at line 912 of file wvargs.cc.

◆ add_option() [5/8]

void WvArgs::add_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
WvStringParm  arg_desc,
WvString val 
)

Add a switch that takes a string argument.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
arg_descThe (short) description of the argument; NULL for none
valThe string varible that gets the value of the argument

Definition at line 920 of file wvargs.cc.

◆ add_option() [6/8]

void WvArgs::add_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
WvStringParm  arg_desc,
WvStringList val 
)

Add a switch that takes a string argument; the argument is appended to a string list.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
arg_descThe (short) description of the argument; NULL for none
valThe string list to which the argument is appended

Definition at line 929 of file wvargs.cc.

◆ add_option() [7/8]

void WvArgs::add_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
NoArgCallback  cb,
void *  ud = NULL 
)

Add a switch which does not take an argument which invokes a callback when it is specified.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
cbThe callback function to invoke when the switch is encountered
udA generic userdata pointer to pass to the callback

Definition at line 880 of file wvargs.cc.

◆ add_option() [8/8]

void WvArgs::add_option ( char  short_option,
WvStringParm  long_option,
WvStringParm  desc,
WvStringParm  arg_desc,
ArgCallback  cb,
void *  ud = NULL 
)

Add a switch which takes an argument which invokes a callback when it is specified.

Parameters
short_optionThe single-character version of the switch; 0 for none
long_optionThe full-word version of the switch; NULL for none
descThe description of the option; NULL for none
arg_descThe (short) description of the argument; NULL for none
cbThe callback function to invoke when the switch is encountered
udA generic userdata pointer to pass to the callback

Definition at line 938 of file wvargs.cc.

◆ add_required_arg()

void WvArgs::add_required_arg ( WvStringParm  desc,
bool  multiple = false 
)

Add a required argument to the list of parameters.

WvArgs will return an error when run if it is not specified.

Parameters
Thedescription of the parameter

Definition at line 966 of file wvargs.cc.

Referenced by add_optional_arg().

◆ add_optional_arg()

void WvArgs::add_optional_arg ( WvStringParm  desc,
bool  multiple = false 
)

Add an optional argument to the list of parameters.

Parameters
Thedescription of the parameter

Definition at line 982 of file wvargs.cc.

References add_required_arg().

◆ remove_option() [1/2]

void WvArgs::remove_option ( char  short_option)

Remove an option by specifying its short form.

Note
If an option has both a short and a long form they can only both be removed with two seperate calls to

Definition at line 948 of file wvargs.cc.

◆ remove_option() [2/2]

void WvArgs::remove_option ( WvStringParm  long_option)

Remove an option by specifying its long form.

Note
If an option has both a short and a long form they can only both be removed with two seperate calls to

Definition at line 954 of file wvargs.cc.


The documentation for this class was generated from the following files:
WvArgs::ArgCallback
wv::function< bool(WvStringParm, void *)> ArgCallback
The callback type used for switches that take a parameter It returns true if the switch was parsed co...
Definition: wvargs.h:74
WvArgs::add_option
void add_option(char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, int &val)
Add a switch that takes an integer argument.
Definition: wvargs.cc:888
WvArgs::add_set_bool_option
void add_set_bool_option(char short_option, WvStringParm long_option, WvStringParm desc, bool &val)
Add a boolean option, which, when specified, sets the specified boolean variable to true.
Definition: wvargs.cc:856
WvString
WvString is an implementation of a simple and efficient printable-string class.
Definition: wvstring.h:329
WvArgs
WvArgs - Sane command-line argument processing for WvStreams.
Definition: wvargs.h:61
WvArgs::process
bool process(int argc, char **argv, WvStringList *remaining_args=NULL)
Process the command line arguments passed to main() using the options provided through calls to add_o...
Definition: wvargs.cc:784
WvStringList
This is a WvList of WvStrings, and is a really handy way to parse strings.
Definition: wvstringlist.h:27