diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-03-31 23:52:30 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-03-31 23:52:30 -0700 |
commit | a7029badeda2a898a3a1e7fade1246fd454ba66e (patch) | |
tree | 4a868b08603ecad043ad722694f5addac77ff4dd /cppawk-include | |
parent | a3587e13398f6ce2197e8d728f52f8389d4ffdec (diff) | |
download | cppawk-a7029badeda2a898a3a1e7fade1246fd454ba66e.tar.gz cppawk-a7029badeda2a898a3a1e7fade1246fd454ba66e.tar.bz2 cppawk-a7029badeda2a898a3a1e7fade1246fd454ba66e.zip |
loop: new clauses first_then, for_var, collect_plus.
Diffstat (limited to 'cppawk-include')
-rw-r--r-- | cppawk-include/iter.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/cppawk-include/iter.h b/cppawk-include/iter.h index 77163de..9e48c7e 100644 --- a/cppawk-include/iter.h +++ b/cppawk-include/iter.h @@ -129,6 +129,14 @@ #define __fini_from_step(idx, from, step) 1 #define __step_from_step(idx, from, step) idx += (step) +#define __init_first_then(var, first, then) (var = (first)) +#define __test_first_then(var, first, then) 1 +#define __prep_first_then(var, first, then) 1 +#define __fini_first_then(var, first, then) 1 +#define __step_first_then(var, first, then) (var = (then)) + +#define for_var(var, expr) first_then(var, expr, expr) + #define __init_list(iter, var, list) iter = (list) #define __test_list(iter, var, list) !endp(iter) #define __prep_list(iter, var, list) var = car(iter) @@ -153,6 +161,12 @@ #define __fini_collect(var, expr) var = list_end(var) #define __step_collect(var, expr) 1 +#define __init_collect_plus(var, expr) var = list_begin() +#define __test_collect_plus(var, expr) 1 +#define __prep_collect_plus(var, expr) var = list_add(var, expr) +#define __fini_collect_plus(var, expr) var = list_end(list_add(var, expr)) +#define __step_collect_plus(var, expr) 1 + #define __init_summing(var, expr) var = 0 #define __test_summing(var, expr) 1 #define __prep_summing(var, expr) var += (expr) |