#ifndef ARGPARSER_H #define ARGPARSER_H #include "aliases.h" typedef struct argparser argparser_t; typedef enum { ARG_TYPE_POSITIONAL, ARG_TYPE_NAMED, ARG_TYPE_FLAG, COUNT_ARG_TYPE, } arg_type_t; typedef struct { arg_type_t type; const char *short_name; const char *long_name; } arg_t; typedef void (*parse_func_t)(arg_t arg, void *user_data); argparser_t *create_parser(parse_func_t parse_func); void destroy_parser(argparser_t **parser); void add_argument(argparser_t *parser, arg_t arg); void parse_args(argparser_t *parser, i32 argc, char *argv[]); #endif // !ARGPARSER_H