@@ -34,7 +34,7 @@ conan create .
|
|||||||
|
|
||||||
|
|
||||||
## 示例程序
|
## 示例程序
|
||||||
构建简单的命令行程序
|
构建简单的命令行程序,更多示例请参考`example`目录
|
||||||
```c
|
```c
|
||||||
#include "ArgParse.h"
|
#include "ArgParse.h"
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
@@ -42,7 +42,7 @@ conan create .
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
ArgParse *Init() {
|
ArgParse *Init() {
|
||||||
ArgParse *ap = argParseInit("简单的命令行工具示例");
|
ArgParse *ap = argParseInit("简单的命令行工具示例",NOVALUE);
|
||||||
|
|
||||||
// 添加第一个命令
|
// 添加第一个命令
|
||||||
Command *cmd = argParseAddCommand(
|
Command *cmd = argParseAddCommand(
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import os
|
|||||||
|
|
||||||
class loggingRecipe(ConanFile):
|
class loggingRecipe(ConanFile):
|
||||||
name = "cargparse"
|
name = "cargparse"
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
author = "321640253@qq.com"
|
author = "321640253@qq.com"
|
||||||
url = "https://gitea.youmetme.wang/youmetme/logging"
|
url = "https://gitea.youmetme.wang/youmetme/logging"
|
||||||
|
|||||||
@@ -7,6 +7,12 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define NORETURN __declspec(noreturn)
|
||||||
|
#else
|
||||||
|
#define NORETURN _Noreturn
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ARG_DEFAULT_HELP_FLAG "--help"
|
#define ARG_DEFAULT_HELP_FLAG "--help"
|
||||||
|
|
||||||
typedef struct ArgParse ArgParse; // 解析器
|
typedef struct ArgParse ArgParse; // 解析器
|
||||||
@@ -16,10 +22,10 @@ typedef int (*ArgParseCallback)(ArgParse *argParse,
|
|||||||
int val_len); // 回调函数
|
int val_len); // 回调函数
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
NOVALUE = 0, // 无值
|
ArgParseNOVALUE = 0, // 无值
|
||||||
SINGLEVALUE, // 单值 例如: -i https://www.baidu.com
|
ArgParseSINGLEVALUE, // 单值 例如: -i https://www.baidu.com
|
||||||
MULTIVALUE, // 多值 例如: -s a b c 或 -s a -s b -s c等
|
ArgParseMULTIVALUE, // 多值 例如: -s a b c 或 -s a -s b -s c等
|
||||||
} ArgParseValueType; // 值类型
|
} ArgParseValueType; // 值类型
|
||||||
|
|
||||||
typedef struct CommandArgs {
|
typedef struct CommandArgs {
|
||||||
/* 构造属性 */
|
/* 构造属性 */
|
||||||
@@ -69,7 +75,7 @@ typedef struct ArgParse {
|
|||||||
struct CommandArgs **global_args; // 全局参数
|
struct CommandArgs **global_args; // 全局参数
|
||||||
int global_args_len; // 全局参数个数
|
int global_args_len; // 全局参数个数
|
||||||
char *documentation; // 帮助文档
|
char *documentation; // 帮助文档
|
||||||
ArgParseValueType value_type; // 值类型 程序默认需要的值例如 gcc main.c
|
ArgParseValueType value_type; // 值类型 程序默认需要的值例如 gcc main.c
|
||||||
|
|
||||||
/* 解析所用到的属性*/
|
/* 解析所用到的属性*/
|
||||||
struct Command *current_command; // 当前解析到的命令
|
struct Command *current_command; // 当前解析到的命令
|
||||||
@@ -303,10 +309,10 @@ char *argParseGenerateHelp(ArgParse *argParse);
|
|||||||
char *
|
char *
|
||||||
argParseGenerateArgErrorMsg(ArgParse *argParse, char *name, bool short_flag);
|
argParseGenerateArgErrorMsg(ArgParse *argParse, char *name, bool short_flag);
|
||||||
|
|
||||||
_Noreturn void argParseError(ArgParse *argParse,
|
NORETURN void argParseError(ArgParse *argParse,
|
||||||
Command *lastCommand,
|
Command *lastCommand,
|
||||||
const char *prefix,
|
const char *prefix,
|
||||||
const char *suffix);
|
const char *suffix);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -818,7 +818,7 @@ bool argParseCheckCommandTriggered(ArgParse *argParse, char *command_name) {
|
|||||||
return command->is_trigged;
|
return command->is_trigged;
|
||||||
}
|
}
|
||||||
|
|
||||||
_Noreturn void argParseError(ArgParse *argParse,
|
NORETURN void argParseError(ArgParse *argParse,
|
||||||
Command *lastCommand,
|
Command *lastCommand,
|
||||||
const char *prefix,
|
const char *prefix,
|
||||||
const char *suffix) {
|
const char *suffix) {
|
||||||
|
|||||||
Reference in New Issue
Block a user