Files
openairinterface5g/openair2/UTIL/LFDS/liblfds7.0.0/test/src/util_cmdline.h
T

70 lines
1.5 KiB
C

/***** defines *****/
#define NUMBER_OF_LOWERCASE_LETTERS_IN_LATIN_ALPHABET 26
/***** enums *****/
enum util_cmdline_arg_type
{
LIBCOMMON_CMDLINE_ARG_TYPE_INTEGER_RANGE,
LIBCOMMON_CMDLINE_ARG_TYPE_INTEGER,
LIBCOMMON_CMDLINE_ARG_TYPE_FLAG,
LIBCOMMON_CMDLINE_ARG_TYPE_UNSET
};
/***** structs *****/
struct util_cmdline_arg_integer_range
{
int long long unsigned
integer_start,
integer_end;
};
struct util_cmdline_arg_integer
{
int long long unsigned
integer;
};
struct util_cmdline_arg_flag
{
enum flag
flag;
};
union util_cmdline_arg_data
{
struct util_cmdline_arg_integer_range
integer_range;
struct util_cmdline_arg_integer
integer;
struct util_cmdline_arg_flag
flag;
};
struct util_cmdline_arg_letter_and_data
{
enum util_cmdline_arg_type
arg_type;
enum flag
processed_flag;
union util_cmdline_arg_data
arg_data;
};
struct util_cmdline_state
{
struct util_cmdline_arg_letter_and_data
args[NUMBER_OF_LOWERCASE_LETTERS_IN_LATIN_ALPHABET];
};
/***** public protoypes *****/
void util_cmdline_init( struct util_cmdline_state *cs );
void util_cmdline_cleanup( struct util_cmdline_state *cs );
void util_cmdline_add_arg( struct util_cmdline_state *cs, char arg_letter, enum util_cmdline_arg_type arg_type );
int util_cmdline_process_args( struct util_cmdline_state *cs, int argc, char **argv );
void util_cmdline_get_arg_data( struct util_cmdline_state *cs, char arg_letter, union util_cmdline_arg_data **arg_data );