source: libcfa/src/parseargs.hfa@ 7f51b9d

ADT arm-eh ast-experimental enum forall-pointer-decay jacob/cs343-translation new-ast new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since 7f51b9d was a5428bd, checked in by Thierry Delisle <tdelisle@…>, 5 years ago

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

  • Property mode set to 100644
File size: 1.5 KB
Line 
1#pragma once
2
3struct cfa_option {
4 char short_name;
5 const char * long_name;
6 const char * help;
7 void * variable;
8 bool (*parse)(const char *, void * );
9};
10
11extern cfa_option last_option;
12
13static inline void ?{}( cfa_option & this ) {}
14
15forall(dtype T | { bool parse(const char *, T & ); })
16static inline void ?{}( cfa_option & this, char short_name, const char * long_name, const char * help, T & variable ) {
17 this.short_name = short_name;
18 this.long_name = long_name;
19 this.help = help;
20 this.variable = (void*)&variable;
21 this.parse = (bool (*)(const char *, void * ))parse;
22}
23
24forall(dtype T)
25static inline void ?{}( cfa_option & this, char short_name, const char * long_name, const char * help, T & variable, bool (*parse)(const char *, T & )) {
26 this.short_name = short_name;
27 this.long_name = long_name;
28 this.help = help;
29 this.variable = (void*)&variable;
30 this.parse = (bool (*)(const char *, void * ))parse;
31}
32
33void parse_args( cfa_option options[], size_t opt_count, const char * usage, char ** & left );
34void parse_args( int argc, char * argv[], cfa_option options[], size_t opt_count, const char * usage, char ** & left );
35
36bool parse_yesno (const char *, bool & );
37bool parse_settrue (const char *, bool & );
38bool parse_setfalse(const char *, bool & );
39
40bool parse(const char *, const char * & );
41bool parse(const char *, unsigned & );
42bool parse(const char *, unsigned long & );
43bool parse(const char *, unsigned long long & );
44bool parse(const char *, int & );
Note: See TracBrowser for help on using the repository browser.