dev #2
							
								
								
									
										21
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2025 youmetme | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
							
								
								
									
										167
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										167
									
								
								README.md
									
									
									
									
									
								
							| @@ -82,4 +82,169 @@ int main(int argc, char *argv[]) { | ||||
| ```bash | ||||
| example -h | ||||
| ``` | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| # API | ||||
| 该API将分为两类,一类是用于构造解析器,另一类将用于解析参数 | ||||
|  | ||||
| ## 构造解析器 | ||||
|  | ||||
| 1. 初始化解析器 | ||||
| ```c | ||||
| ArgParse *argParseInit(char *documentation); | ||||
| ``` | ||||
| - `documentation` 解析器的文档信息 | ||||
|  | ||||
| 2. 添加命令 | ||||
| ```c | ||||
| Command *argParseAddCommand(ArgParse         *argParse, | ||||
|                             char             *name, | ||||
|                             char             *help, | ||||
|                             char             *default_val,  | ||||
|                             ArgParseCallback  callback, | ||||
|                             CommandGroup     *group, | ||||
|                             ArgParseValueType value_type); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| - `name` 命令名称 | ||||
| - `help` 命令帮助信息 | ||||
| - `defaultVal` 默认值 | ||||
| - `callback` 命令回调函数(可选) | ||||
| - `group` 命令组(可选) | ||||
| - `valueType` 命令参数类型 | ||||
|  | ||||
| 3. 添加命令参数 | ||||
| ```c | ||||
| CommandArgs *argParseAddArg(Command          *command, | ||||
|                             char             *short_opt, | ||||
|                             char             *long_opt, | ||||
|                             char             *help, | ||||
|                             char             *default_val, | ||||
|                             ArgParseCallback  callback, | ||||
|                             bool              required, | ||||
|                             ArgParseValueType value_type); | ||||
| ``` | ||||
| - `command` 命令 | ||||
| - `shortOpt` 短选项 | ||||
| - `longOpt` 长选项 | ||||
| - `help` 帮助信息 | ||||
| - `defaultVal` 默认值 | ||||
| - `callback` 回调函数(可选) | ||||
| - `required` 是否必须 | ||||
| - `valueType` 参数类型 | ||||
|  | ||||
| 4. 添加子命令 | ||||
| ```c | ||||
| Command *argParseAddSubCommand(Command          *Parent, | ||||
|                                char             *name, | ||||
|                                char             *help, | ||||
|                                char             *default_val, | ||||
|                                ArgParseCallback  callback, | ||||
|                                CommandGroup     *group, | ||||
|                                ArgParseValueType value_type); | ||||
| ``` | ||||
| - `Parent` 父命令 | ||||
| - `name` 命令名称 | ||||
| - `help` 命令帮助信息 | ||||
| - `defaultVal` 默认值 | ||||
| - `callback` 回调函数(可选) | ||||
| - `group` 命令组(可选) | ||||
| - `valueType` 命令参数类型 | ||||
|  | ||||
| 5. 添加全局参数 | ||||
| ```c | ||||
| CommandArgs *argParseAddGlobalArg(ArgParse         *argParse, | ||||
|                                   char             *short_opt, | ||||
|                                   char             *long_opt, | ||||
|                                   char             *help, | ||||
|                                   char             *default_val, | ||||
|                                   ArgParseCallback  callback, | ||||
|                                   bool              required, | ||||
|                                   ArgParseValueType value_type); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| - `shortOpt` 短选项 | ||||
| - `longOpt` 长选项 | ||||
| - `help` 帮助信息 | ||||
| - `defaultVal` 默认值 | ||||
| - `callback` 回调函数(可选) | ||||
| - `required` 是否必须 | ||||
| - `valueType` 参数类型 | ||||
|  | ||||
| ## 解析参数API | ||||
| 1. 解析参数 | ||||
| ```c | ||||
| void argParseParse(ArgParse *argParse, int argc, char *argv[]); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| - `argc` 参数个数 | ||||
| - `argv` 参数列表 | ||||
|  | ||||
| 2. 获取当前解析到的命令名字 | ||||
| ```c | ||||
| char *argParseGetCurCommandName(ArgParse *argParse); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| > 注意,解析到的命令为最后一次出现的命令,也可能是子命令 | ||||
|  | ||||
|  | ||||
| 3. 获取当前命令的值 | ||||
| ```c | ||||
| char *argParseGetCurCommandValue(ArgParse *argParse); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| > 注意,解析到的命令为最后一次出现的命令,也可能是子命令 | ||||
|  | ||||
| 4. 获取当前命令的某个参数的值 | ||||
| ```c | ||||
| char *argParseGetCurArg(ArgParse *argParse, char *opt); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| - `opt` 参数选项 | ||||
|  | ||||
| 5. 获取当前命令的某个选项的值列表(当为多值类型时使用该函数) | ||||
| ```c | ||||
| char **argParseGetCurArgList(ArgParse *argParse, char *opt, int *len); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| - `opt` 参数选项 | ||||
| - `len` 参数个数 | ||||
|  | ||||
| 6. 获取全局选项的值 | ||||
| ```c | ||||
| char *argParseGetGlobalArg(ArgParse *argParse, char *opt); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| - `opt` 参数选项 | ||||
|  | ||||
| 7. 获取全局选项的值列表 | ||||
| ```c | ||||
| char **argParseGetGlobalArgList(ArgParse *argParse, char *opt, int *len); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| - `opt` 参数选项 | ||||
| - `len` 参数个数 | ||||
|  | ||||
| ### 触发检测API | ||||
| 1. 检测当前检测的命令的某个选项是否触发 | ||||
| ```c | ||||
| bool argParseCheckCurArgTriggered(ArgParse *argParse, char *opt); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| - `opt` 参数选项 | ||||
|  | ||||
|  | ||||
| 2. 检测某个命令是否被触发 | ||||
| ```c | ||||
| bool argParseCheckCommandTriggered(ArgParse *argParse, char *command_name); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| - `command_name` 命令名称 | ||||
|  | ||||
| 3. 检测某个全局选项是否被触发 | ||||
| ```c | ||||
| bool argParseCheckGlobalTriggered(ArgParse *argParse, char *opt); | ||||
| ``` | ||||
| - `argParse` 解析器 | ||||
| - `opt` 参数选项 | ||||
		Reference in New Issue
	
	Block a user