30#define CLAP_NARGS_ZERO_OR_ONE (-3)
31#define CLAP_NARGS_ZERO_OR_MORE (-4)
32#define CLAP_NARGS_ONE_OR_MORE (-5)
33#define CLAP_NARGS_OPTIONAL CLAP_NARGS_ZERO_OR_ONE
34#define CLAP_NARGS_REMAINDER (-1)
50 const char *prog_name,
51 const char *description,
111 const char *name_or_flags
322 const char *help_text
339 const char *help_text
460 const char ***values,
size_t *count);
573 const char *type_name,
597 const char *error_msg
615 const char *error_msg
CLAP_EXPORT int clap_add_mutually_exclusive_group(clap_parser_t *parser, bool required)
Create a mutually exclusive group.
CLAP_EXPORT void clap_parser_free(clap_parser_t *parser)
Destroy a parser and all resources it owns.
CLAP_EXPORT void clap_subparsers_metavar(clap_parser_t *parser, const char *metavar)
Override the metavar shown for subcommands in the usage line.
CLAP_EXPORT bool clap_namespace_get_float(clap_namespace_t *ns, const char *name, double *value)
Retrieve a float value from the namespace.
CLAP_EXPORT clap_argument_t * clap_argument_choices(clap_argument_t *arg, const char **choices, size_t count)
Restrict an argument to a fixed set of choices.
CLAP_EXPORT bool clap_namespace_append_string(clap_namespace_t *ns, const char *name, const char *value)
Append a string to an array value in the namespace. Creates the array if the key does not exist yet.
CLAP_EXPORT clap_parse_result_t clap_parse_args(clap_parser_t *parser, int argc, char *argv[], clap_namespace_t **out_namespace, clap_error_t *error)
Parse command-line arguments.
CLAP_EXPORT clap_argument_t * clap_argument_default(clap_argument_t *arg, const char *default_value)
Set a default value for an argument.
CLAP_EXPORT clap_parser_t * clap_subparser_add(clap_parser_t *subparsers, const char *name, const char *help_text)
Register a subcommand.
CLAP_EXPORT clap_argument_t * clap_argument_const(clap_argument_t *arg, const char *const_value)
Set the constant value for STORE_CONST / APPEND_CONST actions.
CLAP_EXPORT int clap_add_argument_group(clap_parser_t *parser, const char *title, const char *description)
Create a display group to organize arguments in help output.
CLAP_EXPORT void clap_print_help_on_error(clap_parser_t *parser, const clap_error_t *error, FILE *stream)
Print "<prog>: error: <message>" and contextual help.
CLAP_EXPORT clap_argument_t * clap_argument_dest(clap_argument_t *arg, const char *dest)
Override the destination key (dest) in the namespace.
CLAP_EXPORT bool clap_namespace_get_bool(clap_namespace_t *ns, const char *name, bool *value)
Retrieve a bool value from the namespace.
CLAP_EXPORT clap_argument_t * clap_argument_type(clap_argument_t *arg, const char *type_name)
Set the type name for an argument.
CLAP_EXPORT bool clap_mutex_group_add_argument(clap_parser_t *parser, int mutex_group_id, clap_argument_t *arg)
Add an argument to a mutually exclusive group.
CLAP_EXPORT bool clap_namespace_set_float(clap_namespace_t *ns, const char *name, double value)
Set a float value in the namespace.
CLAP_EXPORT clap_argument_t * clap_argument_metavar(clap_argument_t *arg, const char *metavar)
Override the metavar shown in help/usage for this argument.
CLAP_EXPORT bool clap_namespace_get_string_array(clap_namespace_t *ns, const char *name, const char ***values, size_t *count)
Retrieve a string array from the namespace (APPEND action).
CLAP_EXPORT bool clap_namespace_set_bool(clap_namespace_t *ns, const char *name, bool value)
Set a bool value in the namespace.
CLAP_EXPORT bool clap_namespace_has(clap_namespace_t *ns, const char *name)
Check if a key exists in the namespace.
CLAP_EXPORT clap_argument_t * clap_argument_help(clap_argument_t *arg, const char *help_text)
Set the help text for an argument.
CLAP_EXPORT bool clap_print_subcommand_help(clap_parser_t *parser, const char *command_name, FILE *stream)
Print help for a specific subcommand to a stream.
CLAP_EXPORT void clap_namespace_free(clap_namespace_t *ns)
Free a namespace and all values it contains. NULL-safe.
CLAP_EXPORT void clap_print_version(clap_parser_t *parser, FILE *stream)
Print "progname version X.Y.Z" to a stream.
CLAP_EXPORT bool clap_register_type(clap_parser_t *parser, const char *type_name, clap_type_handler_t handler, size_t output_size)
Register a custom type validator/converter.
CLAP_EXPORT void clap_parser_set_help_width(clap_parser_t *parser, int width)
Set help output width (default: 100).
CLAP_EXPORT clap_argument_t * clap_argument_handler(clap_argument_t *arg, clap_action_handler_t handler)
Register a custom action handler for CLAP_ACTION_CUSTOM.
CLAP_EXPORT bool clap_namespace_get_string(clap_namespace_t *ns, const char *name, const char **value)
Retrieve a string value from the namespace.
CLAP_EXPORT clap_argument_t * clap_argument_required(clap_argument_t *arg, bool required)
Mark an optional argument as required or not.
CLAP_EXPORT bool clap_namespace_get_int(clap_namespace_t *ns, const char *name, int *value)
Retrieve an int value from the namespace.
CLAP_EXPORT clap_argument_t * clap_argument_action(clap_argument_t *arg, clap_action_t action)
Set the action type for an argument.
CLAP_EXPORT clap_argument_t * clap_argument_data(clap_argument_t *arg, void *data)
Set user data pointer for a CLAP_ACTION_CUSTOM argument.
CLAP_EXPORT void clap_parser_set_allow_abbrev(clap_parser_t *parser, bool allow)
Enable or disable abbreviated option matching.
CLAP_EXPORT bool clap_argument_group_add_argument(clap_parser_t *parser, int display_group_id, clap_argument_t *arg)
Add an argument to a display group.
CLAP_EXPORT clap_argument_t * clap_add_argument(clap_parser_t *parser, const char *name_or_flags)
Register a new argument (positional or optional).
CLAP_EXPORT clap_parser_t * clap_parser_new(const char *prog_name, const char *description, const char *epilog)
Create a new argument parser.
CLAP_EXPORT bool clap_argument_conflicts(clap_argument_t *arg, clap_argument_t *conflicting_arg, const char *error_msg)
Declare that arg and conflicting_arg cannot both appear.
CLAP_EXPORT bool clap_argument_requires(clap_argument_t *arg, clap_argument_t *required_arg, const char *error_msg)
Declare that arg requires required_arg to also be present.
CLAP_EXPORT clap_argument_t * clap_argument_nargs(clap_argument_t *arg, int nargs)
Set the number of values consumed by this argument.
CLAP_EXPORT clap_parser_t * clap_add_subparsers(clap_parser_t *parser, const char *dest, const char *help_text)
Enable subcommand support.
CLAP_EXPORT void clap_parser_set_version(clap_parser_t *parser, const char *version)
Set the version string printed by clap_print_version().
CLAP_EXPORT void clap_print_help(clap_parser_t *parser, FILE *stream)
Print the full help text (usage + all sections) to a stream.
CLAP_EXPORT bool clap_namespace_set_int(clap_namespace_t *ns, const char *name, int value)
Set an int value in the namespace.
CLAP_EXPORT bool clap_namespace_set_string(clap_namespace_t *ns, const char *name, const char *value)
Set a string value in the namespace.
Action types and handlers for libclap.
clap_action_t
Action types for argument processing.
Definition clap_action.h:16
Custom memory allocator support.
Error handling for libclap.
Symbol export/import macros for libclap.
#define CLAP_EXPORT
Definition clap_export.h:42
Type definitions for libclap.
bool(* clap_type_handler_t)(const char *input, void *output, size_t output_size, clap_error_t *error)
Type validation / conversion handler function pointer.
Definition clap_types.h:89
bool(* clap_action_handler_t)(clap_parser_t *parser, clap_argument_t *argument, clap_namespace_t *namespace, const char **values, size_t value_count, void *user_data, clap_error_t *error)
Custom action handler function pointer.
Definition clap_types.h:134
clap_parse_result_t
Parse result codes returned by clap_parse_args()
Definition clap_types.h:60
Version information for libclap.
Argument definition (positional or optional).
Error information structure.
Definition clap_error.h:36
Container for parsed argument values.
Parsing engine state and configuration.