AxlArgs -- Argument Parser ========================== Declarative command-line argument parser. Supports short flags (``-v``), long flags (``--verbose``), value options (``-o file``, ``--port=8080``), repeated options (``-H hdr1 -H hdr2``), and positional arguments. ``--`` stops option parsing. Header: ```` Overview -------- Define an option table, call ``axl_args_parse``, then query results: .. code-block:: c #include static const AxlOpt opts[] = { { 'v', "--verbose", AXL_OPT_FLAG, NULL, "Verbose output" }, { 'o', "--output", AXL_OPT_VALUE, "FILE", "Output file" }, { 'H', NULL, AXL_OPT_MULTI, "HDR", "HTTP header (repeatable)" }, { 'h', "--help", AXL_OPT_FLAG, NULL, "Show help" }, { 0 } // terminator }; int main(int argc, char **argv) { AXL_AUTOPTR(AxlArgs) args = axl_args_parse(argc, argv, opts); if (args == NULL) { axl_args_usage("myapp", "[options] ", opts); return 1; } if (axl_args_flag(args, 'h')) { axl_args_usage("myapp", "[options] ", opts); return 0; } bool verbose = axl_args_flag(args, 'v'); const char *output = axl_args_value(args, 'o'); // NULL if not given const char *file = axl_args_pos(args, 0); // first positional // Repeated options size_t hdr_count = axl_args_multi_count(args, 'H'); for (size_t i = 0; i < hdr_count; i++) { axl_printf("Header: %s\n", axl_args_multi(args, 'H', i)); } return 0; } Option Types ~~~~~~~~~~~~ ============== ============================================= Type Description ============== ============================================= AXL_OPT_FLAG Boolean flag (``-v``, ``--verbose``) AXL_OPT_VALUE Takes a value (``-o file``, ``--port=8080``) AXL_OPT_MULTI Repeatable value (``-H hdr1 -H hdr2``) ============== ============================================= API Reference ------------- .. doxygenfile:: axl-args.h