wvargs.h

00001 /* -*- Mode: C++ -*-
00002  *   Copyright (C) 2004-2005 Net Integration Technologies, Inc.
00003  *
00004  * WvStreams interface for command-line argument processing
00005  */
00006 #ifndef __WVARGS_H
00007 #define __WVARGS_H
00008 
00009 #include "wvstring.h"
00010 #include "wvstringlist.h"
00011 #include "wvcallback.h"
00012 #include "wvvector.h"
00013 
00014 class WvArgsOption;
00015 class WvArgsData;
00016 
00062 class WvArgs
00063 {
00064 public:
00065 
00070     typedef WvCallback<bool, void *> NoArgCallback;
00075     typedef WvCallback<bool, WvStringParm, void *> ArgCallback;
00076 
00077 private:
00078 
00079     WvArgsData *data;
00080     WvString args_doc;
00081     WvString version;
00082     WvString email;
00083     WvString header;
00084     WvString footer;
00085 
00086 public:
00087 
00088     WvArgs();
00089     ~WvArgs();
00090 
00097     bool process(int argc, char **argv,
00098                  WvStringList *remaining_args = NULL);
00099 
00101     void set_version(WvStringParm version);
00102 
00104     void set_email(WvStringParm email);
00105 
00107     void set_help_header(WvStringParm header);
00108 
00110     void set_help_footer(WvStringParm footer);
00111 
00116     void print_usage(int argc, char **argv);
00120     void print_help(int argc, char **argv);
00121 
00135     void add_set_bool_option(char short_option, WvStringParm long_option,
00136                              WvStringParm desc, bool &val);
00150     void add_reset_bool_option(char short_option, WvStringParm long_option,
00151                                WvStringParm desc, bool &val);
00165     void add_flip_bool_option(char short_option, WvStringParm long_option,
00166                               WvStringParm desc, bool &val);
00167 
00181     void add_option(char short_option, WvStringParm long_option,
00182                     WvStringParm desc, WvStringParm arg_desc, int &val);
00196     void add_option(char short_option, WvStringParm long_option,
00197                     WvStringParm desc, WvStringParm arg_desc, long &val);
00211     void add_option(char short_option, WvStringParm long_option,
00212                     WvStringParm desc, WvStringParm arg_desc, float &val);
00226     void add_option(char short_option, WvStringParm long_option,
00227                     WvStringParm desc, WvStringParm arg_desc, double &val);
00241     void add_option(char short_option, WvStringParm long_option,
00242                     WvStringParm desc, WvStringParm arg_desc, WvString &val);
00257     void add_option(char short_option, WvStringParm long_option,
00258                     WvStringParm desc, WvStringParm arg_desc,
00259                     WvStringList &val);
00274     void add_option(char short_option, WvStringParm long_option,
00275                     WvStringParm desc, NoArgCallback cb, void *ud = NULL);
00292     void add_option(char short_option, WvStringParm long_option,
00293                     WvStringParm desc, WvStringParm arg_desc,
00294                     ArgCallback cb, void *ud = NULL);
00295 
00302     void add_required_arg(WvStringParm desc);
00308     void add_optional_arg(WvStringParm desc, bool multiple = false);
00309 
00316     void remove_option(char short_option);
00323     void remove_option(WvStringParm long_option);
00324 
00328     void remove_all_options();
00332     void zap()
00333     {
00334         remove_all_options();
00335     }
00336 
00339     enum flags_t
00340     {
00341         NO_EXIT_ON_ERRORS,      // Do not exit when an error is encountered
00342         FLAGS_SIZE              // Number of flags that exist
00343     };
00344 
00348     bool get_flag(const flags_t flag) const;
00349     void set_flag(const flags_t flag, const bool value);
00350 
00351 };
00352 
00353 #endif // __WVARGS_H

Generated on Thu May 25 21:51:02 2006 for WvStreams by  doxygen 1.4.6