WvStreams
include/wvargs.h
1/* -*- Mode: C++ -*-
2 * Copyright (C) 2004-2005 Net Integration Technologies, Inc.
3 *
4 * WvStreams interface for command-line argument processing
5 */
6#ifndef __WVARGS_H
7#define __WVARGS_H
8
9#include "wvstring.h"
10#include "wvstringlist.h"
11#include "wvtr1.h"
12
13class WvArgsOption;
14class WvArgsData;
15
61class WvArgs
62{
63public:
64
69 typedef wv::function<bool(void*)> NoArgCallback;
74 typedef wv::function<bool(WvStringParm, void*)> ArgCallback;
75
76private:
77
78 WvArgsData *data;
79 WvString args_doc;
80 WvString version;
81 WvString email;
82 WvString header;
83 WvString footer;
84
85public:
86
87 WvArgs();
88 ~WvArgs();
89
96 bool process(int argc, char **argv,
97 WvStringList *remaining_args = NULL);
98
100 void set_version(WvStringParm version);
101
103 void set_email(WvStringParm email);
104
106 void set_help_header(WvStringParm header);
107
109 void set_help_footer(WvStringParm footer);
110
115 void print_usage(int argc, char **argv);
119 void print_help(int argc, char **argv);
120
134 void add_set_bool_option(char short_option, WvStringParm long_option,
135 WvStringParm desc, bool &val);
149 void add_reset_bool_option(char short_option, WvStringParm long_option,
150 WvStringParm desc, bool &val);
164 void add_flip_bool_option(char short_option, WvStringParm long_option,
165 WvStringParm desc, bool &val);
166
180 void add_option(char short_option, WvStringParm long_option,
181 WvStringParm desc, WvStringParm arg_desc, int &val);
195 void add_option(char short_option, WvStringParm long_option,
196 WvStringParm desc, WvStringParm arg_desc, long &val);
210 void add_option(char short_option, WvStringParm long_option,
211 WvStringParm desc, WvStringParm arg_desc, float &val);
225 void add_option(char short_option, WvStringParm long_option,
226 WvStringParm desc, WvStringParm arg_desc, double &val);
240 void add_option(char short_option, WvStringParm long_option,
241 WvStringParm desc, WvStringParm arg_desc, WvString &val);
256 void add_option(char short_option, WvStringParm long_option,
257 WvStringParm desc, WvStringParm arg_desc,
258 WvStringList &val);
273 void add_option(char short_option, WvStringParm long_option,
274 WvStringParm desc, NoArgCallback cb, void *ud = NULL);
291 void add_option(char short_option, WvStringParm long_option,
292 WvStringParm desc, WvStringParm arg_desc,
293 ArgCallback cb, void *ud = NULL);
294
301 void add_required_arg(WvStringParm desc, bool multiple = false);
307 void add_optional_arg(WvStringParm desc, bool multiple = false);
308
315 void remove_option(char short_option);
322 void remove_option(WvStringParm long_option);
323
331 void zap()
332 {
334 }
335
339 {
340 NO_EXIT_ON_ERRORS, // Do not exit when an error is encountered
341 FLAGS_SIZE // Number of flags that exist
342 };
343
347 bool get_flag(const flags_t flag) const;
348 void set_flag(const flags_t flag, const bool value);
349
350};
351
352#endif // __WVARGS_H
WvArgs - Sane command-line argument processing for WvStreams.
void remove_option(char short_option)
void add_option(char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, long &val)
void remove_all_options()
void add_option(char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, double &val)
bool get_flag(const flags_t flag) const
void add_option(char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, float &val)
wv::function< bool(WvStringParm, void *)> ArgCallback
void add_optional_arg(WvStringParm desc, bool multiple=false)
void set_help_header(WvStringParm header)
Set the introductory help message, printed at the beginning of –help.
void zap()
bool process(int argc, char **argv, WvStringList *remaining_args=NULL)
void add_option(char short_option, WvStringParm long_option, WvStringParm desc, NoArgCallback cb, void *ud=NULL)
void print_usage(int argc, char **argv)
void set_help_footer(WvStringParm footer)
Set the descriptive help message, printed at the end of –help.
wv::function< bool(void *)> NoArgCallback
void remove_option(WvStringParm long_option)
void add_option(char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, ArgCallback cb, void *ud=NULL)
void set_version(WvStringParm version)
Set the –version string.
void add_option(char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, int &val)
void add_required_arg(WvStringParm desc, bool multiple=false)
void add_option(char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, WvStringList &val)
void add_reset_bool_option(char short_option, WvStringParm long_option, WvStringParm desc, bool &val)
void add_option(char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, WvString &val)
void set_email(WvStringParm email)
Set the e-mail address for bug reports.
void print_help(int argc, char **argv)
void add_flip_bool_option(char short_option, WvStringParm long_option, WvStringParm desc, bool &val)
void add_set_bool_option(char short_option, WvStringParm long_option, WvStringParm desc, bool &val)
This is a WvList of WvStrings, and is a really handy way to parse strings.
WvString is an implementation of a simple and efficient printable-string class.