55 lines
2.2 KiB
Markdown
55 lines
2.2 KiB
Markdown
# ArgsParse
|
|
Простой парсер аргументов на C и макросах.
|
|
## Использование
|
|
Функция **main** изменяется. Пример:
|
|
```c
|
|
#include "argsparse.h"
|
|
|
|
/* Параметры */
|
|
arg_property_t config[] = {
|
|
"--hello",
|
|
"-h/--help",
|
|
"-o/--out=filename"
|
|
};
|
|
|
|
/* Их количество */
|
|
size_t conf_size = 2;
|
|
|
|
/*
|
|
* main принимает:
|
|
* args_t - переменная для парсинга аргументов
|
|
* args_config_t - массив типа arg_property_t
|
|
* args_config_size_t - размер конфигурации
|
|
*/
|
|
|
|
int main(args_t argv, args_config_t config, args_config_size_t conf_size) {
|
|
if (argv->ArgsGetSimpleSize()) {
|
|
if (argv->ArgsGetSimpleNumbers()[0] == 0) {
|
|
puts("Hello, world!");
|
|
}
|
|
if (argv->ArgsGetSimpleNumbers()[0] == 1) {
|
|
puts(
|
|
"Options:" "\n"
|
|
" " "--hello " " - " "print \"Hello, world!\"" "\n"
|
|
" " "-h / --help" " - " "print this help" "\0"
|
|
);
|
|
}
|
|
} else {
|
|
puts("Unknown option!");
|
|
}
|
|
return EXIT_SUCCESS;
|
|
}
|
|
```
|
|
|
|
## Методы обьекта типа args_t
|
|
|
|
```c
|
|
args_t->ArgsGetSimpleFlags(); /* Получить массив обычных флагов */
|
|
args_t->ArgsGetNamesVals(); /* Получить массив значений именнованых флагов */
|
|
args_t->ArgsGetNamesFlags(); /* Получить массив именнованых флагов */
|
|
args_t->ArgsGetDefault(); /* Получить стандартный параметр */
|
|
args_t->ArgsGetSimpleSize(); /* Получить количество обычных флагов */
|
|
args_t->ArgsGetNamesSize(); /* Получить количество именнованых флагов */
|
|
args_t->ArgsGetSimpleNumbers(); /* Получить массив номеров обычных флагов в конфигурации */
|
|
args_t->ArgsGetNamesNumbers(); /* Получить массив номеров именнованых флагов в конфигурации */
|
|
``` |