5 #define NUMBER_OF_LOWERCASE_LETTERS_IN_LATIN_ALPHABET 26
8 enum util_cmdline_arg_type
10 UTIL_CMDLINE_ARG_TYPE_INTEGER_RANGE,
11 UTIL_CMDLINE_ARG_TYPE_INTEGER,
12 UTIL_CMDLINE_ARG_TYPE_FLAG,
13 UTIL_CMDLINE_ARG_TYPE_STRING,
14 UTIL_CMDLINE_ARG_TYPE_UNSET
18 struct util_cmdline_arg_integer_range
20 int long long unsigned
25 struct util_cmdline_arg_integer
27 int long long unsigned
31 struct util_cmdline_arg_flag
37 struct util_cmdline_arg_string
43 union util_cmdline_arg_data
45 struct util_cmdline_arg_integer_range
48 struct util_cmdline_arg_integer
51 struct util_cmdline_arg_flag
54 struct util_cmdline_arg_string
58 struct util_cmdline_arg_letter_and_data
60 enum util_cmdline_arg_type
66 union util_cmdline_arg_data
70 struct util_cmdline_state
72 struct util_cmdline_arg_letter_and_data
73 args[NUMBER_OF_LOWERCASE_LETTERS_IN_LATIN_ALPHABET];
76 /***** public protoypes *****/
77 void util_cmdline_init( struct util_cmdline_state *cs );
78 void util_cmdline_cleanup( struct util_cmdline_state *cs );
79 void util_cmdline_add_arg( struct util_cmdline_state *cs, char arg_letter, enum util_cmdline_arg_type arg_type );
80 int util_cmdline_process_args( struct util_cmdline_state *cs, int argc, char **argv );
81 void util_cmdline_get_arg_data( struct util_cmdline_state *cs, char arg_letter, union util_cmdline_arg_data **arg_data );