Compare commits
	
		
			3 Commits
		
	
	
		
			3ade1fd1aa
			...
			924f9662b5
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 924f9662b5 | |||
| 5df2e31973 | |||
| c71c9b6d15 | 
							
								
								
									
										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 | ```bash | ||||||
| example -h | 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