30 lines
598 B
C
30 lines
598 B
C
#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
|