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
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')
-rw-r--r--source/blender/blenlib/BLI_args.h5
-rw-r--r--source/blender/blenlib/intern/BLI_args.c26
2 files changed, 17 insertions, 14 deletions
diff --git a/source/blender/blenlib/BLI_args.h b/source/blender/blenlib/BLI_args.h
index 54b5161f15a..2bd0e7b9019 100644
--- a/source/blender/blenlib/BLI_args.h
+++ b/source/blender/blenlib/BLI_args.h
@@ -41,12 +41,14 @@ typedef int (*BA_ArgCallback)(int argc, const char **argv, void *data);
struct bArgs *BLI_argsInit(int argc, const char **argv);
void BLI_argsFree(struct bArgs *ba);
+/** The pass to use for #BLI_argsAdd. */
+void BLI_argsPassSet(struct bArgs *ba, int current_pass);
+
/**
* Pass starts at 1, -1 means valid all the time
* short_arg or long_arg can be null to specify no short or long versions
*/
void BLI_argsAdd(struct bArgs *ba,
- int pass,
const char *short_arg,
const char *long_arg,
const char *doc,
@@ -57,7 +59,6 @@ void BLI_argsAdd(struct bArgs *ba,
* Short_case and long_case specify if those arguments are case specific
*/
void BLI_argsAddCase(struct bArgs *ba,
- int pass,
const char *short_arg,
int short_case,
const char *long_arg,
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)