| #ifndef MARISA_CMDOPT_H_ |
| #define MARISA_CMDOPT_H_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef struct cmdopt_option_ { |
| // `name' specifies the name of this option. |
| // An array of options must be terminated with an option whose name == NULL. |
| const char *name; |
| |
| // `has_name' specifies whether an option takes an argument or not. |
| // 0 specifies that this option does not have any argument. |
| // 1 specifies that this option has an argument. |
| // 2 specifies that this option may have an argument. |
| int has_arg; |
| |
| // `flag' specifies an integer variable which is overwritten by cmdopt_next() |
| // with its return value. |
| int *flag; |
| |
| // `val' specifies a return value of cmdopt_next(). This value is returned |
| // when cmdopt_next() finds this option. |
| int val; |
| } cmdopt_option; |
| |
| typedef struct cmdopt_t_ { |
| // Command line arguments. |
| int argc; |
| char **argv; |
| |
| // Option settings. |
| const cmdopt_option *longopts; |
| const char *optstring; |
| |
| int optind; // Index of the next argument. |
| char *nextchar; // Next character. |
| char *optarg; // Argument of the last option. |
| int optopt; // Label of the last option. |
| char *optlong; // Long option. |
| int opterr; // Warning level (0: nothing, 1: warning, 2: all). |
| int longindex; // Index of the last long option. |
| int optnum; // Number of options. |
| } cmdopt_t; |
| |
| // cmdopt_init() initializes a cmdopt_t for successive cmdopt_next()s. |
| void cmdopt_init(cmdopt_t *h, int argc, char **argv, |
| const char *optstring, const cmdopt_option *longopts); |
| |
| // cmdopt_get() analyzes command line arguments and gets the next option. |
| int cmdopt_get(cmdopt_t *h); |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif |
| |
| #endif // MARISA_CMDOPT_H_ |