Refactor, separate docs from headers, add ru docs

Doxygen kind'a sucks and I need multilanguage documentation, so I did
that. Also, separated massive Math.h file into smaller files.
This commit is contained in:
2025-06-21 20:12:15 +03:00
parent 7ee69fc397
commit fc774fd0ff
116 changed files with 10693 additions and 3521 deletions

165
doc/Manual/ru/BH_Args.pod Normal file
View File

@@ -0,0 +1,165 @@
=encoding UTF-8
=head1 НАИМЕНОВАНИЕ
BH_Args - обработка аргументов командной строки
=head1 СИНТАКСИС
#include <BH/Args.h>
static BH_ArgsOption options[] =
{
{'h', "help", 0, "Display this help"},
{1000, "list", 0, "List files"},
{'i', "input", BH_ARGS_VALUE, "Input file"},
{'o', "output", BH_ARGS_VALUE | BH_ARGS_OPTIONAL, "Output file"},
{0, NULL, 0, NULL}
};
static int OptionsCallback(int key,
char *arg,
void *data)
{
switch (key)
{
case BH_ARGS_UNKNOWN:
/* Unknown options */
break;
case BH_ARGS_ARGUMENT:
/* Regular argument in arg */
break;
case 'h':
/* Named option without argument */
break;
case 1000:
/* Long-only option without argument */
break;
case 'i':
/* Option with argument in arg */
break;
case 'o':
/* Option with optional argument in arg */
break;
}
return BH_OK;
}
BH_ArgsParse(argc, argv, options, OptionsCallback, NULL);
BH_ArgsHelp(options, 0);
cc prog.c -o prog -lbh
=head1 ОПИСАНИЕ
Библиотека BH_Args предназначена для удобной обработки аргументов командной
строки в программах. Она позволяет определить набор опций, которые могут быть
указаны при запуске программы, и предоставляет механизмы для их анализа и
обработки.
Разбор аргументов происходит с учётом следующих правил:
=over
=item *
Если указан аргумент "--", последующий разбор аргументов прекращается.
=item *
Если указан аргумент "-", он обрабатывается как есть.
=item *
Для значений длинных аргументов будет использоваться строка после знака равно
или следующий аргумент ("--define=value" или "--define value").
=item *
Для значений коротких аргументов будет использоваться остаток строки после
символа параметра или следующий аргумент ("-dvalue" или "-d value").
=back
=head1 API ВЫЗОВЫ
=head2 BH_ArgsParse
int BH_ArgsParse(int argc,
char **argv,
BH_ArgsOption *options,
BH_ArgsCallback callback,
void *data);
Разбирает аргументы I<options> командной строки (заданные в I<argc> и I<argv>) и
вызывает указанный обработчик I<callback> (с пользовательскими данными I<data>).
Параметр I<options> ссылается на нуль-терминированный массив.
В случае успеха данная функция возвращает 0, в противном случае - код ошибки.
=head2 BH_ArgsHelp
void BH_ArgsHelp(BH_ArgsOption *options,
int padding);
Выводит в F<stdout> справочную информацию для аргументов I<options> (с указанным
выравниванием I<padding>).
В случае если параметр I<padding> равен 0, то будет использовано значение
по умолчанию (30).
=head1 СТРУКТУРЫ
=head2 BH_ArgsOption
typedef struct BH_ArgsOption
{
int key;
const char *name;
int flags;
const char *description;
} BH_ArgsOption;
Поле I<key> содержит идентификатор опции. В случае если идентификатор I<key>
является печатным символом ASCII, то он будет использоваться в качестве
короткого аргумента.
Опциональное поле I<name> содержит строку, которая будет использоваться в
качестве длинного аргумента.
Поле I<flags> содержит флаги аргумента. Возможна комбинация из следующих флагов:
=over
=item B<BH_ARGS_VALUE>
Аргумент принимает значение.
=item B<BH_ARGS_OPTIONAL>
Значение аргумента опционально.
=back
Поле I<description> содержит строку, которая будет использоваться при выводе
справочной информации при помощи функции L</BH_ArgsHelp>.
=head1 СМ. ТАКЖЕ
L<BH>