argparser/argparser.h

33 lines
628 B
C

#ifndef ARGPARSER_H
#define ARGPARSER_H
#include "aliases.h"
#include <stdbool.h>
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