diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-10-28 04:34:33 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-10-28 06:04:41 +0300 |
commit | 6ac46c9708f46f9dd83dd36008d6f7c9569b74eb (patch) | |
tree | ae9b6a7109e53b778ea95eae7bd271a1204f894c /source/blender/blenlib/intern | |
parent | 5711b8514726a15a1cb1783fd56a0dda48b5b0a2 (diff) |
BLI_args: refactor argument passes
Avoid passing the pass argument to BLI_argsAdd, instead set this
once for each group of passes.
This means we can add new passes without having to bump the arguments
to BLI_argsAdd.
Diffstat (limited to 'source/blender/blenlib/intern')
-rw-r--r-- | source/blender/blenlib/intern/BLI_args.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/source/blender/blenlib/intern/BLI_args.c b/source/blender/blenlib/intern/BLI_args.c index 91aabca7747..4a46bf73f78 100644 --- a/source/blender/blenlib/intern/BLI_args.c +++ b/source/blender/blenlib/intern/BLI_args.c @@ -63,6 +63,9 @@ struct bArgs { int argc; const char **argv; int *passes; + + /* Only use when initializing arguments. */ + int current_pass; }; static uint case_strhash(const void *ptr) @@ -128,6 +131,11 @@ void BLI_argsFree(struct bArgs *ba) MEM_freeN(ba); } +void BLI_argsPassSet(struct bArgs *ba, int current_pass) +{ + ba->current_pass = current_pass; +} + void BLI_argsPrint(struct bArgs *ba) { int i; @@ -163,14 +171,10 @@ static bArgDoc *internalDocs(struct bArgs *ba, return d; } -static void internalAdd(struct bArgs *ba, - const char *arg, - int pass, - int case_str, - BA_ArgCallback cb, - void *data, - bArgDoc *d) +static void internalAdd( + struct bArgs *ba, const char *arg, int case_str, BA_ArgCallback cb, void *data, bArgDoc *d) { + const int pass = ba->current_pass; bArgument *a; bAKey *key; @@ -204,7 +208,6 @@ static void internalAdd(struct bArgs *ba, } void BLI_argsAddCase(struct bArgs *ba, - int pass, const char *short_arg, int short_case, const char *long_arg, @@ -216,23 +219,22 @@ void BLI_argsAddCase(struct bArgs *ba, bArgDoc *d = internalDocs(ba, short_arg, long_arg, doc); if (short_arg) { - internalAdd(ba, short_arg, pass, short_case, cb, data, d); + internalAdd(ba, short_arg, short_case, cb, data, d); } if (long_arg) { - internalAdd(ba, long_arg, pass, long_case, cb, data, d); + internalAdd(ba, long_arg, long_case, cb, data, d); } } void BLI_argsAdd(struct bArgs *ba, - int pass, const char *short_arg, const char *long_arg, const char *doc, BA_ArgCallback cb, void *data) { - BLI_argsAddCase(ba, pass, short_arg, 0, long_arg, 0, doc, cb, data); + BLI_argsAddCase(ba, short_arg, 0, long_arg, 0, doc, cb, data); } static void internalDocPrint(bArgDoc *d) |