#ifndef TOOLBOX_ARGS_H #define TOOLBOX_ARGS_H #include #include #include #ifdef TOOLBOX_TYPEDEF typedef struct args args_st; #endif #define MAX_NUM_OF_OPTIONS 1024 struct args_op { bool mand; enum { TOGGLE, STRING, INT8, INT16, INT32, INT64, FLOAT, DOUBLE } type; char abv; const void *ret; struct { const char *cstr; size_t size; } verb; const char *desc; }; struct args { const int argc; char **argv; size_t mand_num; char prepender; struct { size_t size; struct args_op data[MAX_NUM_OF_OPTIONS]; } ops; }; __attribute__((__pure__)) struct args args_create(int argc, char **argv); void args_set_toggle(struct args *self , const char abreviation, const char *restrict verbose , const char *restrict description, bool mandatory , bool *ret); void args_set_op_str(struct args *self , const char abreviation, const char *restrict verbose , const char *restrict description , bool mandatory, void *ret); void args_set_op_float(struct args *self , const char abreviation, const char *restrict verbose , const char *restrict description, bool mandatory , bool is_double, void *ret); void args_set_op_int(struct args *self , const char abreviation, const char *restrict verbose , const char *restrict description, bool mandatory , size_t size_in_byte, void *ret); void args_check(struct args *self); #endif