#ifndef ARGPARSER_H #define ARGPARSER_H #include "aliases.h" #include typedef struct argparser argparser_t; typedef struct { const char *identifier; union { const char *value; bool flag; }; } arg_t; typedef enum { ARG_TYPE_POSITIONAL, ARG_TYPE_NAMED, ARG_TYPE_FLAG, COUNT_ARG_TYPE, } arg_type_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