solidc
Robust collection of general-purpose cross-platform C libraries and data structures designed for rapid and safe development in C
Loading...
Searching...
No Matches
Typedefs | Enumerations | Functions
flags.h File Reference

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>
Include dependency graph for flags.h:
This graph shows which files directly or indirectly include this file:

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)
 

Detailed Description

Command-line flag parsing library.

A robust, single-file C flag parsing library.

Definition in file flags.h.

Typedef Documentation

◆ FlagValidator

typedef bool(* FlagValidator) (const void *value, const char **error_out)

Validator Callback.

Parameters
valuePointer to the raw value (cast based on flag type).
error_outSet this to a static string if validation fails.
Returns
true if valid.
Examples
/home/runner/work/solidc/solidc/include/flags.h.

Definition at line 71 of file flags.h.

Enumeration Type Documentation

◆ FlagDataType

Supported data types.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

Definition at line 45 of file flags.h.

◆ FlagStatus

enum FlagStatus

Status codes for parsing results.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

Definition at line 32 of file flags.h.

Function Documentation

◆ flag_active_subcommand()

FlagParser * flag_active_subcommand ( FlagParser *  parser)

Get the pointer to the active subcommand. Pass in the root Parser as the only argument

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_add()

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.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_add_subcommand()

FlagParser * flag_add_subcommand ( FlagParser *  parser,
const char *  name,
const char *  desc,
void(*)(void *data)  handler 
)

Register a subcommand. Returns the child parser.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_get_error()

const char * flag_get_error ( FlagParser *  parser)

Get readable string for the last error.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_invoke_subcommand()

bool flag_invoke_subcommand ( FlagParser *  parser,
void(*)(void *user_data)  pre_invoke,
void *  user_data 
)

Invoke the active subcommand with optional pre-invocation setup.

Parameters
parserThe parser that was used in flag_parse().
pre_invokeOptional callback to run before subcommand handler. Can be NULL.
user_dataUser data pointer passed to both callbacks.
Returns
true if a subcommand was invoked, false if none was active.
Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_is_present()

bool flag_is_present ( FlagParser *  parser,
const char *  flag_name 
)

Check if a flag was explicitly provided.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_parse()

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.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_parse_and_invoke()

FlagStatus flag_parse_and_invoke ( FlagParser *  parser,
int  argc,
char **  argv,
void *  user_data 
)

Parse arguments and automatically invoke subcommand if present.

Parameters
parserThe parser instance.
argcArgument count.
argvArgument vector.
user_dataOptional user data passed to pre-invoke and handler callbacks.
Returns
FLAG_OK on success.
Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_parser_free()

void flag_parser_free ( FlagParser *  parser)

Free parser and all associated resources/subcommands.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_parser_new()

FlagParser * flag_parser_new ( const char *  name,
const char *  description 
)

Create a new parser instance. Must be freed.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_parser_set_footer()

void flag_parser_set_footer ( FlagParser *  parser,
const char *  footer 
)

Set footer text displayed at bottom of help.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_positional_at()

const char * flag_positional_at ( FlagParser *  parser,
int  index 
)

Get positional argument at index.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_positional_count()

int flag_positional_count ( FlagParser *  parser)

Get number of positional arguments (args that aren't flags).

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_print_usage()

void flag_print_usage ( FlagParser *  parser)

Print auto-generated help message.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_set_pre_invoke()

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.

Parameters
parserThe main parser.
pre_invokeCallback to run before subcommand handlers.
Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_set_validator()

void flag_set_validator ( Flag *  flag,
FlagValidator  validator 
)

Attach a custom validator to a specific flag.

Examples
/home/runner/work/solidc/solidc/include/flags.h.

◆ flag_status_str()

const char * flag_status_str ( FlagStatus  status)

Convert status enum to string.

Examples
/home/runner/work/solidc/solidc/include/flags.h.