98#ifndef AP_MAX_NCOMMAND
99#define AP_MAX_NCOMMAND 10
104#define AP_LONG_FLAG "--"
109#define AP_SHORT_FLAG "-"
112#define AP_DEFAULT_COMMAND "default"
119#define AP_INPUT_ARG \
122 .long_arg = "input", \
124 .help = "set input file" \
127#define ap_min(a, b) ((a) > (b) ? (b) : (a))
128#define ap_max(a, b) ((a) > (b) ? (a) : (b))
130#define NOW_CMD (&pap->commands[pap->command_pos])
133#define ERROR_MSG _red(" [ERROR]")
134#define ap_err(msg) (ERROR_MSG ": " msg "\n")
137#ifndef ERROR_COMMAND_CONFLICT
138#define ERROR_COMMAND_CONFLICT ap_err("Conflict.")
142#ifndef ERROR_NO_SUBCOMMAND
143#define ERROR_NO_SUBCOMMAND ap_err("Pass a subcommand.")
147#ifndef ERROR_LOST_ARG_VALUE
148#define ERROR_LOST_ARG_VALUE ap_err("\"%s\" lost arg value.")
151#ifndef ERROR_DONOT_NEED_VALUE
152#define ERROR_DONOT_NEED_VALUE ap_err("\"%s\" does not need arg value.")
155#ifndef ERROR_ARG_NOT_EXIST
156#define ERROR_ARG_NOT_EXIST ap_err("Arg name \"%s\" does not exist.")
159#ifndef ERROR_LOST_ARG_NAME
160#define ERROR_LOST_ARG_NAME ap_err("Except a arg name, but got \"%s\".")
163#ifndef ERROR_SUBCOMMAND_NOT_EXIST
164#define ERROR_SUBCOMMAND_NOT_EXIST ap_err("Subcommand %s does not exist.")
184 ArgValue arg_have_value;
201typedef void (*callback_t)(
int argc,
char *argv[],
char *envp[]);
240 print_ap_command_t print_command;
244 char *prog_name_without_path;
258#define ap_def_args(name) static ap_arg_t name[]
259#define ap_def_callback(name) void name(int argc, char *argv[], char *envp[])
267void ap_init_parser(
char *print_message, print_ap_command_t print_command);
305static inline void ap_print_command(
void);
ap_arg_t * ap_get(char *arg_name)
根据参数名获取参数值
Definition argparse.c:131
static void ap_default_print_base_command(ap_command_t *c)
打印 command 简易版
void ap_do_parser(int argc, char *argv[], char *envp[])
解析命令行
Definition argparse.c:369
void ap_add_command(char *command, char *description, char *usage, callback_t callback, ap_arg_t *args)
添加一个子命令
Definition argparse.c:48
static void ap_default_print_command(ap_command_t *c)
打印command
void ap_init_parser(char *print_message, print_ap_command_t print_command)
初始化解析器
Definition argparse.c:39
static void ap_print_parser(void)
打印解析器
Definition argparse-new.h:90
Definition argparse-new.h:119
Definition argparse.h:228