Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2020-10-28 04:34:33 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-10-28 06:04:41 +0300
commit6ac46c9708f46f9dd83dd36008d6f7c9569b74eb (patch)
treeae9b6a7109e53b778ea95eae7bd271a1204f894c /source/blender/blenlib/intern
parent5711b8514726a15a1cb1783fd56a0dda48b5b0a2 (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.c26
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)