#pragma once

#ifdef __cplusplus
extern "C" {
#endif

int getopt(int, char* const[], const char*);
extern char* optarg;
extern int optind, opterr, optopt, optreset;

struct option {
    const char* name;
    int has_arg;
    int* flag;
    int val;
};

int getopt_long(int, char* const*, const char*, const struct option*, int*);
int getopt_long_only(int, char* const*, const char*, const struct option*, int*);

#define no_argument 0
#define required_argument 1
#define optional_argument 2

#ifdef __cplusplus
}
#endif