Changes in libcfa/src/parseargs.hfa [d1abc63c:481f882]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/parseargs.hfa
rd1abc63c r481f882 16 16 #pragma once 17 17 18 #include <array.hfa>19 20 18 struct cfa_option { 21 22 23 24 25 26 19 int val; // reserved 20 char short_name; 21 const char * long_name; 22 const char * help; 23 void * variable; 24 bool (*parse)(const char *, void * ); 27 25 }; 28 26 … … 33 31 forall(T & | { bool parse(const char *, T & ); }) 34 32 static inline void ?{}( cfa_option & this, char short_name, const char * long_name, const char * help, T & variable ) { 35 36 37 38 39 40 33 this.val = 0; 34 this.short_name = short_name; 35 this.long_name = long_name; 36 this.help = help; 37 this.variable = (void*)&variable; 38 this.parse = (bool (*)(const char *, void * ))parse; 41 39 } 42 40 43 41 forall(T &) 44 42 static inline void ?{}( cfa_option & this, char short_name, const char * long_name, const char * help, T & variable, bool (*parse)(const char *, T & )) { 45 46 47 48 49 50 43 this.val = 0; 44 this.short_name = short_name; 45 this.long_name = long_name; 46 this.help = help; 47 this.variable = (void*)&variable; 48 this.parse = (bool (*)(const char *, void * ))parse; 51 49 } 52 50 … … 54 52 void parse_args( int argc, char * argv[], cfa_option options[], size_t opt_count, const char * usage, char ** & left ); 55 53 56 forall( [N] ) {57 void parse_args( const array( cfa_option, N ) & options, const char * usage, char ** & left );58 void parse_args( int argc, char * argv[], const array( cfa_option, N ) & options, const char * usage, char ** & left );59 }60 61 54 void print_args_usage(cfa_option options[], size_t opt_count, const char * usage, bool error) __attribute__ ((noreturn)); 62 55 void print_args_usage(int argc, char * argv[], cfa_option options[], size_t opt_count, const char * usage, bool error) __attribute__ ((noreturn)); 63 64 forall( [N] ) {65 void print_args_usage( const array(cfa_option, N ) & options, const char * usage, bool error) __attribute__ ((noreturn));66 void print_args_usage(int argc, char * argv[], const array( cfa_option, N ) & options, const char * usage, bool error) __attribute__ ((noreturn));67 }68 56 69 57 bool parse_yesno (const char *, bool & );
Note: See TracChangeset
for help on using the changeset viewer.