21 static char NO_DOCS[] =
"NO DOCUMENTATION SPECIFIED";
62 while ((
c = tolower(*s++))) {
75 static bool keycmp(
const void *
a,
const void *
b)
124 BLI_assert((current_pass != 0) && (current_pass >= -1));
131 for (i = 0; i < ba->
argc; i++) {
132 printf(
"argv[%d] = %s\n", i, ba->
argv[i]);
137 const char *short_arg,
138 const char *long_arg,
149 d->short_arg = short_arg;
150 d->long_arg = long_arg;
151 d->documentation = doc;
165 a =
lookUp(ba, arg, pass, case_str);
168 printf(
"WARNING: conflicting argument\n");
169 printf(
"\ttrying to add '%s' on pass %i, %scase sensitive\n",
172 case_str == 1 ?
"not " :
"");
173 printf(
"\tconflict with '%s' on pass %i, %scase sensitive\n\n",
176 a->key->case_str == 1 ?
"not " :
"");
195 const char *short_arg,
197 const char *long_arg,
215 const char *short_arg,
216 const char *long_arg,
226 if (d->short_arg && d->long_arg) {
227 printf(
"%s or %s", d->short_arg, d->long_arg);
229 else if (d->short_arg) {
230 printf(
"%s", d->short_arg);
232 else if (d->long_arg) {
233 printf(
"%s", d->long_arg);
236 printf(
" %s\n\n", d->documentation);
256 for (d = ba->
docs.
first; d; d = d->next) {
278 for (i = 1; i < ba->
argc; i++) {
301 for (j = 0; j <= retval; j++) {
306 else if (retval == -1) {
308 if (
a->key->pass != -1) {
void BLI_args_print(struct bArgs *ba)
void BLI_args_destroy(struct bArgs *ba)
bArgs * BLI_args_create(int argc, const char **argv)
static bArgument * lookUp(struct bArgs *ba, const char *arg, int pass, int case_str)
void BLI_args_print_other_doc(struct bArgs *ba)
void BLI_args_print_arg_doc(struct bArgs *ba, const char *arg)
static void internalAdd(struct bArgs *ba, const char *arg, int case_str, BA_ArgCallback cb, void *data, bArgDoc *d)
void BLI_args_add_case(struct 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_pass_set(struct bArgs *ba, int current_pass)
static bool keycmp(const void *a, const void *b)
void BLI_args_add(struct bArgs *ba, const char *short_arg, const char *long_arg, const char *doc, BA_ArgCallback cb, void *data)
bool BLI_args_has_other_doc(const struct bArgs *ba)
static void internalDocPrint(bArgDoc *d)
static uint keyhash(const void *ptr)
struct bArgument bArgument
void BLI_args_parse(struct bArgs *ba, int pass, BA_ArgCallback default_cb, void *default_data)
static uint case_strhash(const void *ptr)
static bArgDoc * internalDocs(struct bArgs *ba, const char *short_arg, const char *long_arg, const char *doc)
A general argument parsing module.
int(* BA_ArgCallback)(int argc, const char **argv, void *data)
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 BLI_strcasecmp(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Read Guarded memory(de)allocation.
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
_W64 unsigned int uintptr_t
const char * documentation