lib/cli++/cli++.h
changeset 2 b3afb9f1e801
parent 0 6f7a81934006
equal deleted inserted replaced
1:30113bfbe723 2:b3afb9f1e801
       
     1 /* $Id: cli++.h 616 2005-08-19 20:11:01Z bruce $ */
       
     2 #ifndef VMAILMGR__CLIPP__CLIPP__H__
       
     3 #define VMAILMGR__CLIPP__CLIPP__H__
       
     4 
       
     5 typedef bool (*cli_funcptr)(void*);
       
     6 
       
     7 struct cli_stringlist
       
     8 {
       
     9   const char* string;
       
    10   cli_stringlist* next;
       
    11 
       
    12   cli_stringlist(const char* s)
       
    13     : string(s), next(0)
       
    14     {
       
    15     }
       
    16 };
       
    17 
       
    18 struct cli_option
       
    19 {
       
    20   char ch;
       
    21   const char* name;
       
    22   enum { flag, counter, integer, string, stringlist, uinteger } type;
       
    23   int flag_value;
       
    24   void* dataptr;
       
    25   const char* helpstr;
       
    26   const char* defaultstr;
       
    27 
       
    28   int set(const char* arg);
       
    29   int parse_long_eq(const char* arg);
       
    30   int parse_long_noeq(const char* arg);
       
    31 };
       
    32 
       
    33 /* The following are required from the CLI program */
       
    34 extern const char* cli_program;
       
    35 extern const char* cli_help_prefix;
       
    36 extern const char* cli_help_suffix;
       
    37 extern const char* cli_args_usage;
       
    38 extern const int cli_args_min;
       
    39 extern const int cli_args_max;
       
    40 extern cli_option cli_options[];
       
    41 extern int cli_main(int argc, char* argv[]);
       
    42 
       
    43 /* The following are provided to the CLI program */
       
    44 extern const char* argv0;
       
    45 extern const char* argv0base;
       
    46 extern const char* argv0dir;
       
    47 extern void usage(int exit_value, const char* errorstr = 0);
       
    48 
       
    49 extern void cli_error(int exit_value,
       
    50 		      const char*,
       
    51 		      const char* = 0,
       
    52 		      const char* = 0,
       
    53 		      const char* = 0);
       
    54 
       
    55 extern void cli_warning(const char*,
       
    56 		      const char* = 0,
       
    57 		      const char* = 0,
       
    58 		      const char* = 0);
       
    59 
       
    60 #endif