| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #ifndef TOOLBOX_ARGS_H
- #define TOOLBOX_ARGS_H
- #include <stdbool.h>
- #include <stddef.h>
- #include <stdint.h>
- #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
|