22static char NO_DOCS[] =
"NO DOCUMENTATION SPECIFIED";
66 while ((c = tolower(*s++))) {
79static bool keycmp(
const void *a,
const void *
b)
151 BLI_assert((current_pass != 0) && (current_pass >= -1));
158 for (i = 0; i < ba->
argc; i++) {
164 const char *short_arg,
165 const char *long_arg,
192 a =
lookUp(ba, arg, pass, case_str);
195 printf(
"WARNING: conflicting argument\n");
196 printf(
"\ttrying to add '%s' on pass %i, %scase sensitive\n",
199 case_str == 1 ?
"not " :
"");
200 printf(
"\tconflict with '%s' on pass %i, %scase sensitive\n\n",
203 a->key->case_str == 1 ?
"not " :
"");
222 const char *short_arg,
224 const char *long_arg,
233 internalAdd(ba, short_arg, short_case, cb, data, d);
242 const char *short_arg,
243 const char *long_arg,
305 for (i = 1; i < ba->
argc; i++) {
322 int retval = func(ba->
argc - i, ba->
argv + i, data);
328 for (j = 0; j <= retval; j++) {
333 else if (retval == -1) {
335 if (a->key->pass != -1) {
static void args_print_wrapper(void *UNUSED(user_data), const char *format, va_list args)
static bArgument * lookUp(bArgs *ba, const char *arg, int pass, int case_str)
static void internalDocPrint(bArgs *ba, bArgDoc *d)
bool BLI_args_has_other_doc(const bArgs *ba)
static bool keycmp(const void *a, const void *b)
void BLI_args_add(bArgs *ba, const char *short_arg, const char *long_arg, const char *doc, BA_ArgCallback cb, void *data)
void BLI_args_add_case(bArgs *ba, const char *short_arg, int short_case, const char *long_arg, int long_case, const char *doc, BA_ArgCallback cb, void *data)
void BLI_args_destroy(bArgs *ba)
void BLI_args_printf(bArgs *ba, const char *format,...)
void BLI_args_print_other_doc(bArgs *ba)
bArgs * BLI_args_create(int argc, const char **argv)
void BLI_args_print(const bArgs *ba)
static uint keyhash(const void *ptr)
struct bArgument bArgument
static void internalAdd(bArgs *ba, const char *arg, int case_str, BA_ArgCallback cb, void *data, bArgDoc *d)
void BLI_args_pass_set(bArgs *ba, int current_pass)
static uint case_strhash(const void *ptr)
void BLI_args_print_fn_set(bArgs *ba, bArgPrintFn print_fn, void *user_data)
static bArgDoc * internalDocs(bArgs *ba, const char *short_arg, const char *long_arg, const char *doc)
void BLI_args_print_arg_doc(bArgs *ba, const char *arg)
void BLI_args_parse(bArgs *ba, int pass, BA_ArgCallback default_cb, void *default_data)
A general argument parsing module.
void(* bArgPrintFn)(void *user_data, const char *format, va_list args)
int(* BA_ArgCallback)(int argc, const char **argv, void *data)
#define ATTR_PRINTF_FORMAT(format_param, dots_param)
GHash * BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_ghashutil_intcmp(const void *a, const void *b)
void * BLI_ghash_lookup(const GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int char char int BLI_strcasecmp(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
Read Guarded memory(de)allocation.
local_group_size(16, 16) .push_constant(Type b
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
_W64 unsigned int uintptr_t
const char * documentation