WvArgs Class Reference

#include <wvargs.h>

List of all members.


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 62 of file wvargs.h.


Public Types

enum  flags_t { NO_EXIT_ON_ERRORS, FLAGS_SIZE }
 These flags control the behaviour of WvArgs. More...
typedef WvCallback< bool, void * > NoArgCallback
 The callback type used for switches that do not take a parameter.
typedef WvCallback< 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(.
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.
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.
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.
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.
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, int &val)
 Add a switch that takes an integer argument.
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, long &val)
 Add a switch that takes a long argument.
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, float &val)
 Add a switch that takes a float argument.
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, double &val)
 Add a switch that takes a double argument.
void add_option (char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, WvString &val)
 Add a switch that takes a string argument.
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.
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.
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.
void add_required_arg (WvStringParm desc, bool multiple=false)
 Add a required argument to the list of parameters.
void add_optional_arg (WvStringParm desc, bool multiple=false)
 Add an optional argument to the list of parameters.
void remove_option (char short_option)
 Remove an option by specifying its short form.
void remove_option (WvStringParm long_option)
 Remove an option by specifying its long form.
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)

Member Typedef Documentation

typedef WvCallback<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 70 of file wvargs.h.


Member Enumeration Documentation

These flags control the behaviour of WvArgs.

By default, they are all set to false.

Definition at line 339 of file wvargs.h.


Member Function Documentation

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 782 of file wvargs.cc.

Referenced by WvDaemon::run().

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 841 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
val The boolean variable to set to true when the switch is specified

Definition at line 854 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
val The boolean variable to set to false when the switch is specified

Definition at line 862 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
val The boolean variable to change when the switch is specified

Definition at line 870 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
arg_desc The (short) description of the argument; NULL for none
val The integer varible that gets the value of the argument

Definition at line 886 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
arg_desc The (short) description of the argument; NULL for none
val The long varible that gets the value of the argument

Definition at line 894 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
arg_desc The (short) description of the argument; NULL for none
val The float varible that gets the value of the argument

Definition at line 902 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
arg_desc The (short) description of the argument; NULL for none
val The double varible that gets the value of the argument

Definition at line 910 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
arg_desc The (short) description of the argument; NULL for none
val The string varible that gets the value of the argument

Definition at line 918 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
arg_desc The (short) description of the argument; NULL for none
val The string list to which the argument is appended

Definition at line 927 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
cb The callback function to invoke when the switch is encountered
ud A generic userdata pointer to pass to the callback

Definition at line 878 of file wvargs.cc.

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_option The single-character version of the switch; 0 for none
long_option The full-word version of the switch; NULL for none
desc The description of the option; NULL for none
arg_desc The (short) description of the argument; NULL for none
cb The callback function to invoke when the switch is encountered
ud A generic userdata pointer to pass to the callback

Definition at line 936 of file wvargs.cc.

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:
The description of the parameter

Definition at line 964 of file wvargs.cc.

References WvString::append().

Referenced by add_optional_arg().

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

Add an optional argument to the list of parameters.

Parameters:
The description of the parameter

Definition at line 975 of file wvargs.cc.

References add_required_arg(), and WvString::append().

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 946 of file wvargs.cc.

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 952 of file wvargs.cc.


The documentation for this class was generated from the following files:

Generated on Fri Jul 18 13:09:25 2008 for WvStreams by  doxygen 1.5.6