|
solidc
Robust collection of general-purpose cross-platform C libraries and data structures designed for rapid and safe development in C
|
Command-line flag parsing library. More...
#include "cstr.h"#include <errno.h>#include <inttypes.h>#include <limits.h>#include <stdarg.h>#include <stdbool.h>#include <stddef.h>#include <stdint.h>#include <stdio.h>#include <stdlib.h>Go to the source code of this file.
Typedefs | |
| typedef bool(* | FlagValidator) (const void *value, const char **error_out) |
Enumerations | |
| enum | FlagStatus |
| enum | FlagDataType |
Functions | |
| FlagParser * | flag_parser_new (const char *name, const char *description) |
| void | flag_parser_free (FlagParser *parser) |
| void | flag_parser_set_footer (FlagParser *parser, const char *footer) |
| bool | flag_invoke_subcommand (FlagParser *parser, void(*pre_invoke)(void *user_data), void *user_data) |
| void | flag_set_pre_invoke (FlagParser *parser, void(*pre_invoke)(void *user_data)) |
| Flag * | flag_add (FlagParser *parser, FlagDataType type, const char *name, char short_name, const char *desc, void *value_ptr, bool required) |
| FlagParser * | flag_add_subcommand (FlagParser *parser, const char *name, const char *desc, void(*handler)(void *data)) |
| void | flag_set_validator (Flag *flag, FlagValidator validator) |
| FlagStatus | flag_parse (FlagParser *parser, int argc, char **argv) |
| FlagStatus | flag_parse_and_invoke (FlagParser *parser, int argc, char **argv, void *user_data) |
| const char * | flag_get_error (FlagParser *parser) |
| FlagParser * | flag_active_subcommand (FlagParser *parser) |
| int | flag_positional_count (FlagParser *parser) |
| const char * | flag_positional_at (FlagParser *parser, int index) |
| bool | flag_is_present (FlagParser *parser, const char *flag_name) |
| void | flag_print_usage (FlagParser *parser) |
| const char * | flag_status_str (FlagStatus status) |
Command-line flag parsing library.
A robust, single-file C flag parsing library.
Definition in file flags.h.
| typedef bool(* FlagValidator) (const void *value, const char **error_out) |
Validator Callback.
| value | Pointer to the raw value (cast based on flag type). |
| error_out | Set this to a static string if validation fails. |
| enum FlagDataType |
Supported data types.
| enum FlagStatus |
Status codes for parsing results.
| FlagParser * flag_active_subcommand | ( | FlagParser * | parser | ) |
Get the pointer to the active subcommand. Pass in the root Parser as the only argument
| Flag * flag_add | ( | FlagParser * | parser, |
| FlagDataType | type, | ||
| const char * | name, | ||
| char | short_name, | ||
| const char * | desc, | ||
| void * | value_ptr, | ||
| bool | required | ||
| ) |
Core function to register a flag. Use the macros (flag_int, flag_bool) instead of calling this directly.
| FlagParser * flag_add_subcommand | ( | FlagParser * | parser, |
| const char * | name, | ||
| const char * | desc, | ||
| void(*)(void *data) | handler | ||
| ) |
Register a subcommand. Returns the child parser.
| const char * flag_get_error | ( | FlagParser * | parser | ) |
Get readable string for the last error.
| bool flag_invoke_subcommand | ( | FlagParser * | parser, |
| void(*)(void *user_data) | pre_invoke, | ||
| void * | user_data | ||
| ) |
Invoke the active subcommand with optional pre-invocation setup.
| parser | The parser that was used in flag_parse(). |
| pre_invoke | Optional callback to run before subcommand handler. Can be NULL. |
| user_data | User data pointer passed to both callbacks. |
| bool flag_is_present | ( | FlagParser * | parser, |
| const char * | flag_name | ||
| ) |
Check if a flag was explicitly provided.
| FlagStatus flag_parse | ( | FlagParser * | parser, |
| int | argc, | ||
| char ** | argv | ||
| ) |
Parse arguments. Returns FLAG_OK (0) on success. Use flag_get_error() for details on failure.
| FlagStatus flag_parse_and_invoke | ( | FlagParser * | parser, |
| int | argc, | ||
| char ** | argv, | ||
| void * | user_data | ||
| ) |
Parse arguments and automatically invoke subcommand if present.
| parser | The parser instance. |
| argc | Argument count. |
| argv | Argument vector. |
| user_data | Optional user data passed to pre-invoke and handler callbacks. |
| void flag_parser_free | ( | FlagParser * | parser | ) |
Free parser and all associated resources/subcommands.
| FlagParser * flag_parser_new | ( | const char * | name, |
| const char * | description | ||
| ) |
Create a new parser instance. Must be freed.
| void flag_parser_set_footer | ( | FlagParser * | parser, |
| const char * | footer | ||
| ) |
Set footer text displayed at bottom of help.
| const char * flag_positional_at | ( | FlagParser * | parser, |
| int | index | ||
| ) |
Get positional argument at index.
| int flag_positional_count | ( | FlagParser * | parser | ) |
Get number of positional arguments (args that aren't flags).
| void flag_print_usage | ( | FlagParser * | parser | ) |
Print auto-generated help message.
| void flag_set_pre_invoke | ( | FlagParser * | parser, |
| void(*)(void *user_data) | pre_invoke | ||
| ) |
Set a pre-invocation callback that runs before any subcommand handler. This is called automatically during flag_parse if a subcommand is present.
| parser | The main parser. |
| pre_invoke | Callback to run before subcommand handlers. |
| void flag_set_validator | ( | Flag * | flag, |
| FlagValidator | validator | ||
| ) |
Attach a custom validator to a specific flag.
| const char * flag_status_str | ( | FlagStatus | status | ) |
Convert status enum to string.