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

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.
enum  flags_t { NO_EXIT_ON_ERRORS, FLAGS_SIZE }
 These flags control the behaviour of WvArgs. More...

Public Member Functions

 WvArgs ()
 ~WvArgs ()
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 spefied, 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)
 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

enum WvArgs::flags_t
 

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

References WvArgsData::argp(), WvArgsData::argp_build(), WvArgsData::args(), argp::args_doc, WvArgsData::flags, WvArgsData::parser(), and WvArgsData::self().

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

References WvArgsData::argp().

void WvArgs::add_set_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 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 847 of file wvargs.cc.

References WvArgsData::add(), and WvArgsData::remove().

Referenced by WvDaemon::WvDaemon().

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

References WvArgsData::add(), and WvArgsData::remove().

Referenced by WvDaemon::WvDaemon().

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

References WvArgsData::add(), and WvArgsData::remove().

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

References WvArgsData::add(), and WvArgsData::remove().

Referenced by WvDaemon::WvDaemon().

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

References WvArgsData::add(), and WvArgsData::remove().

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

References WvArgsData::add(), and WvArgsData::remove().

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

References WvArgsData::add(), and WvArgsData::remove().

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

References WvArgsData::add(), and WvArgsData::remove().

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

References WvArgsData::add(), and WvArgsData::remove().

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

References WvArgsData::add(), and WvArgsData::remove().

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

References WvArgsData::add(), and WvArgsData::remove().

void WvArgs::add_required_arg WvStringParm  desc  ) 
 

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

References WvArgsData::add_required_arg(), argp::args_doc, and WvArgsData::maximum_args.

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

References add_required_arg(), argp::args_doc, WvArgsData::maximum_args, and WvArgsData::subtract_required_arg().

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

References WvFastString::null, and WvArgsData::remove().

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

References WvArgsData::remove().


The documentation for this class was generated from the following files:
Generated on Thu May 25 21:51:10 2006 for WvStreams by  doxygen 1.4.6