cemu
载入中...
搜索中...
未找到
argparse-new.h 文件参考
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

浏览源代码.

struct  ap_arg_t
 
struct  ap_command_t
 
struct  Parser
 

宏定义

#define AP_MAX_NCOMMAND   10
 
#define AP_LONG_FLAG   "--"
 
#define AP_SHORT_FLAG   "-"
 
#define AP_END
 
#define ap_min(a, b)   ((a) > (b) ? (b) : (a))
 
#define ap_max(a, b)   ((a) > (b) ? (a) : (b))
 
#define NOW   (&pp->commands[pp->command_pos])
 
#define _green(s)   "\033[32m" s "\033[0m"
 
#define _red(s)   "\033[31m" s "\033[0m"
 
#define ERROR_MSG   _red("[ERROR]")
 
#define e(msg)   (ERROR_MSG ": " msg "\n")
 
#define ERROR_COMMAND_CONFLICT   e("Conflict.")
 
#define ERROR_NO_SUBCOMMAND   e("Pass a subcommand.")
 
#define ERROR_LOST_ARG_VALUE   e("\"%s\" lost arg value.")
 
#define ERROR_DONOT_NEED_VALUE   e("\"%s\" does not need arg value.")
 
#define ERROR_ARG_NOT_EXIST   e("Arg name \"%s\" does not exist.")
 
#define ERROR_LOST_ARG_NAME   e("Except a arg name, but got \"%s\".")
 
#define ERROR_SUBCOMMAND_NOT_EXIST   e("Subcommand %s does not exist.")
 
#define ap_defineArgs(name)   static ap_arg_t name[]
 
#define ap_defineCallback(name)   void name(int argc, char* argv[], char* env[])
 

类型定义

typedef void(* callback_t) (int argc, char *argv[], char *env[])
 
typedef void(* print_ap_command_t) (ap_command_t *)
 
typedef struct Parser Parser
 

枚举

enum  ArgValue { AP_YES = 0 , AP_NO }
 

函数

static void ap_init_parser (char *print_message, print_ap_command_t print_command)
 初始化解析器
 
static void ap_add_command (char *command, char *description, char *usage, callback_t callback, ap_arg_t *args)
 添加一个子命令
 
static int _is_eq (char *arg_name, ap_arg_t arg)
 判断当前参数名是否与command中的参数名相同
 
static ap_arg_tap_get (char *arg_name)
 根据参数名获取参数值
 
static void ap_default_print_command (ap_command_t *c)
 打印command
 
static void ap_print_parser (void)
 打印解析器
 
static void ap_print_command (void)
 
static void _ap_parser_command_line (int argc, char *argv[])
 解析命令行,内部接口
 
static void ap_do_parser (int argc, char *argv[], char *env[])
 解析命令行
 

变量

struct Parser p
 
struct Parserpp = &p
 
static int have_global = 0
 
static int have_subcommand = 0
 

详细描述

作者
your name (you@d.nosp@m.omai.nosp@m.n.com)
版本
0.1
日期
2024-01-09

宏定义说明

◆ AP_END

#define AP_END
值:
{ \
0 \
}

函数说明

◆ _ap_parser_command_line()

static void _ap_parser_command_line ( int argc,
char * argv[] )
inlinestatic

解析命令行,内部接口

参数
argc
argv

◆ _is_eq()

static int _is_eq ( char * arg_name,
ap_arg_t arg )
inlinestatic

判断当前参数名是否与command中的参数名相同

参数
arg_name
arg
返回
int

◆ ap_add_command()

static void ap_add_command ( char * command,
char * description,
char * usage,
callback_t callback,
ap_arg_t * args )
inlinestatic

添加一个子命令

参数
command
description
usage
callback
args

◆ ap_default_print_command()

static void ap_default_print_command ( ap_command_t * c)
inlinestatic

打印command

参数
c

◆ ap_do_parser()

static void ap_do_parser ( int argc,
char * argv[],
char * env[] )
inlinestatic

解析命令行

参数
argc
argv

◆ ap_get()

static ap_arg_t * ap_get ( char * arg_name)
inlinestatic

根据参数名获取参数值

参数
arg_name
返回
void*

◆ ap_init_parser()

static void ap_init_parser ( char * print_message,
print_ap_command_t print_command )
inlinestatic

初始化解析器

参数
print_message
print_command

变量说明

◆ p

struct Parser p
初始值:
= {
.ncommand = 0,
.command_pos = 0}