summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-07-28 10:37:04 +0200
committerThomas Haller <thaller@redhat.com>2022-07-28 13:06:08 +0200
commit6501f741fc71d7c84852266e663ba3bf8b69570d (patch)
treea709362f3c62e8dac8d68e9b97f8da315c8fa32b
parent5c54bad89db9de13c462dbd9f3e47294af3dc6ba (diff)
downloadNetworkManager-6501f741fc71d7c84852266e663ba3bf8b69570d.tar.gz
std-aux: add argument to "op" parameter for NM_VA_ARGS_FOREACH() macro
This will be needed to pass "NM_UNIQ" to the op macro, to construct a NM_UNIQ_T() unique name.
-rw-r--r--src/libnm-glib-aux/nm-hash-utils.h22
-rw-r--r--src/libnm-glib-aux/nm-macros-internal.h2
-rw-r--r--src/libnm-std-aux/nm-std-aux.h281
3 files changed, 153 insertions, 152 deletions
diff --git a/src/libnm-glib-aux/nm-hash-utils.h b/src/libnm-glib-aux/nm-hash-utils.h
index e6c7e74adc..c63c03db81 100644
--- a/src/libnm-glib-aux/nm-hash-utils.h
+++ b/src/libnm-glib-aux/nm-hash-utils.h
@@ -122,26 +122,26 @@ nm_hash_update_bool(NMHashState *state, bool val)
nm_hash_update(state, &val, sizeof(val));
}
-#define _NM_HASH_COMBINE_BOOLS_OP(x, n) ((x) ? NM_BIT((n)) : 0u)
+#define _NM_HASH_COMBINE_BOOLS_OP(x, n, op_arg) ((x) ? NM_BIT((n)) : 0u)
-#define NM_HASH_COMBINE_BOOLS(type, ...) \
- ((type) (NM_STATIC_ASSERT_EXPR_1(NM_NARG(__VA_ARGS__) <= 8 * sizeof(type)) \
- ? (NM_VA_ARGS_FOREACH(, , |, _NM_HASH_COMBINE_BOOLS_OP, __VA_ARGS__)) \
+#define NM_HASH_COMBINE_BOOLS(type, ...) \
+ ((type) (NM_STATIC_ASSERT_EXPR_1(NM_NARG(__VA_ARGS__) <= 8 * sizeof(type)) \
+ ? (NM_VA_ARGS_FOREACH(, , |, _NM_HASH_COMBINE_BOOLS_OP, , __VA_ARGS__)) \
: 0))
#define nm_hash_update_bools(state, ...) \
nm_hash_update_val(state, NM_HASH_COMBINE_BOOLS(guint8, __VA_ARGS__))
-#define _NM_HASH_COMBINE_VALS_TYPE_OP(x, idx) typeof(x) _v##idx;
-#define _NM_HASH_COMBINE_VALS_INIT_OP(x, idx) ._v##idx = (x),
+#define _NM_HASH_COMBINE_VALS_TYPE_OP(x, idx, op_arg) typeof(x) _v##idx;
+#define _NM_HASH_COMBINE_VALS_INIT_OP(x, idx, op_arg) ._v##idx = (x),
/* NM_HASH_COMBINE_VALS() is faster then nm_hash_update_val() as it combines multiple
* calls to nm_hash_update() using a packed structure. */
-#define NM_HASH_COMBINE_VALS(var, ...) \
- const struct _nm_packed { \
- NM_VA_ARGS_FOREACH(, , , _NM_HASH_COMBINE_VALS_TYPE_OP, __VA_ARGS__) \
- } var _nm_alignas(max_align_t) = { \
- NM_VA_ARGS_FOREACH(, , , _NM_HASH_COMBINE_VALS_INIT_OP, __VA_ARGS__)}
+#define NM_HASH_COMBINE_VALS(var, ...) \
+ const struct _nm_packed { \
+ NM_VA_ARGS_FOREACH(, , , _NM_HASH_COMBINE_VALS_TYPE_OP, , __VA_ARGS__) \
+ } var _nm_alignas(max_align_t) = { \
+ NM_VA_ARGS_FOREACH(, , , _NM_HASH_COMBINE_VALS_INIT_OP, , __VA_ARGS__)}
/* nm_hash_update_vals() is faster then nm_hash_update_val() as it combines multiple
* calls to nm_hash_update() using a packed structure. */
diff --git a/src/libnm-glib-aux/nm-macros-internal.h b/src/libnm-glib-aux/nm-macros-internal.h
index 6f6aeff106..f2a4461e2e 100644
--- a/src/libnm-glib-aux/nm-macros-internal.h
+++ b/src/libnm-glib-aux/nm-macros-internal.h
@@ -1195,7 +1195,7 @@ _NM_IN_STRSET_EVAL_op_streq_ascii_case(const char *x1, const char *x)
return x && g_ascii_strcasecmp(x1, x) == 0;
}
-#define _NM_IN_STRSET_EVAL_OP_STREQ_ASCII_CASE(x, idx) \
+#define _NM_IN_STRSET_EVAL_OP_STREQ_ASCII_CASE(x, idx, op_arg) \
_NM_IN_STRSET_EVAL_op_streq_ascii_case(_x1, x)
#define NM_IN_STRSET_ASCII_CASE(x1, ...) \
_NM_IN_STRSET_EVAL(||, _NM_IN_STRSET_EVAL_OP_STREQ_ASCII_CASE, x1, __VA_ARGS__)
diff --git a/src/libnm-std-aux/nm-std-aux.h b/src/libnm-std-aux/nm-std-aux.h
index 2ebfb1ade9..ad9e9d656c 100644
--- a/src/libnm-std-aux/nm-std-aux.h
+++ b/src/libnm-std-aux/nm-std-aux.h
@@ -659,151 +659,152 @@ nm_memeq(const void *s1, const void *s2, size_t len)
/*****************************************************************************/
/* clang-format off */
-#define _NM_VA_ARGS_FOREACH_0(prefix, postfix, sep, op)
-#define _NM_VA_ARGS_FOREACH_1(prefix, postfix, sep, op, x) prefix _NM_MACRO_CALL2(op, x, 0 ) postfix
-#define _NM_VA_ARGS_FOREACH_2(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 1 ) postfix sep _NM_VA_ARGS_FOREACH_1(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_3(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 2 ) postfix sep _NM_VA_ARGS_FOREACH_2(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_4(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 3 ) postfix sep _NM_VA_ARGS_FOREACH_3(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_5(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 4 ) postfix sep _NM_VA_ARGS_FOREACH_4(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_6(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 5 ) postfix sep _NM_VA_ARGS_FOREACH_5(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_7(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 6 ) postfix sep _NM_VA_ARGS_FOREACH_6(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_8(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 7 ) postfix sep _NM_VA_ARGS_FOREACH_7(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_9(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 8 ) postfix sep _NM_VA_ARGS_FOREACH_8(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_10(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 9 ) postfix sep _NM_VA_ARGS_FOREACH_9(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_11(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 10 ) postfix sep _NM_VA_ARGS_FOREACH_10(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_12(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 11 ) postfix sep _NM_VA_ARGS_FOREACH_11(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_13(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 12 ) postfix sep _NM_VA_ARGS_FOREACH_12(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_14(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 13 ) postfix sep _NM_VA_ARGS_FOREACH_13(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_15(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 14 ) postfix sep _NM_VA_ARGS_FOREACH_14(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_16(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 15 ) postfix sep _NM_VA_ARGS_FOREACH_15(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_17(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 16 ) postfix sep _NM_VA_ARGS_FOREACH_16(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_18(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 17 ) postfix sep _NM_VA_ARGS_FOREACH_17(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_19(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 18 ) postfix sep _NM_VA_ARGS_FOREACH_18(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_20(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 19 ) postfix sep _NM_VA_ARGS_FOREACH_19(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_21(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 20 ) postfix sep _NM_VA_ARGS_FOREACH_20(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_22(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 21 ) postfix sep _NM_VA_ARGS_FOREACH_21(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_23(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 22 ) postfix sep _NM_VA_ARGS_FOREACH_22(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_24(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 23 ) postfix sep _NM_VA_ARGS_FOREACH_23(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_25(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 24 ) postfix sep _NM_VA_ARGS_FOREACH_24(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_26(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 25 ) postfix sep _NM_VA_ARGS_FOREACH_25(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_27(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 26 ) postfix sep _NM_VA_ARGS_FOREACH_26(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_28(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 27 ) postfix sep _NM_VA_ARGS_FOREACH_27(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_29(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 28 ) postfix sep _NM_VA_ARGS_FOREACH_28(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_30(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 29 ) postfix sep _NM_VA_ARGS_FOREACH_29(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_31(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 30 ) postfix sep _NM_VA_ARGS_FOREACH_30(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_32(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 31 ) postfix sep _NM_VA_ARGS_FOREACH_31(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_33(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 32 ) postfix sep _NM_VA_ARGS_FOREACH_32(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_34(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 33 ) postfix sep _NM_VA_ARGS_FOREACH_33(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_35(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 34 ) postfix sep _NM_VA_ARGS_FOREACH_34(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_36(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 35 ) postfix sep _NM_VA_ARGS_FOREACH_35(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_37(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 36 ) postfix sep _NM_VA_ARGS_FOREACH_36(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_38(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 37 ) postfix sep _NM_VA_ARGS_FOREACH_37(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_39(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 38 ) postfix sep _NM_VA_ARGS_FOREACH_38(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_40(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 39 ) postfix sep _NM_VA_ARGS_FOREACH_39(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_41(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 40 ) postfix sep _NM_VA_ARGS_FOREACH_40(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_42(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 41 ) postfix sep _NM_VA_ARGS_FOREACH_41(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_43(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 42 ) postfix sep _NM_VA_ARGS_FOREACH_42(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_44(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 43 ) postfix sep _NM_VA_ARGS_FOREACH_43(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_45(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 44 ) postfix sep _NM_VA_ARGS_FOREACH_44(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_46(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 45 ) postfix sep _NM_VA_ARGS_FOREACH_45(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_47(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 46 ) postfix sep _NM_VA_ARGS_FOREACH_46(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_48(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 47 ) postfix sep _NM_VA_ARGS_FOREACH_47(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_49(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 48 ) postfix sep _NM_VA_ARGS_FOREACH_48(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_50(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 49 ) postfix sep _NM_VA_ARGS_FOREACH_49(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_51(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 50 ) postfix sep _NM_VA_ARGS_FOREACH_50(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_52(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 51 ) postfix sep _NM_VA_ARGS_FOREACH_51(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_53(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 52 ) postfix sep _NM_VA_ARGS_FOREACH_52(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_54(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 53 ) postfix sep _NM_VA_ARGS_FOREACH_53(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_55(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 54 ) postfix sep _NM_VA_ARGS_FOREACH_54(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_56(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 55 ) postfix sep _NM_VA_ARGS_FOREACH_55(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_57(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 56 ) postfix sep _NM_VA_ARGS_FOREACH_56(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_58(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 57 ) postfix sep _NM_VA_ARGS_FOREACH_57(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_59(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 58 ) postfix sep _NM_VA_ARGS_FOREACH_58(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_60(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 59 ) postfix sep _NM_VA_ARGS_FOREACH_59(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_61(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 10 ) postfix sep _NM_VA_ARGS_FOREACH_60(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_62(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 61 ) postfix sep _NM_VA_ARGS_FOREACH_61(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_63(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 62 ) postfix sep _NM_VA_ARGS_FOREACH_62(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_64(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 63 ) postfix sep _NM_VA_ARGS_FOREACH_63(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_65(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 64 ) postfix sep _NM_VA_ARGS_FOREACH_64(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_66(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 65 ) postfix sep _NM_VA_ARGS_FOREACH_65(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_67(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 66 ) postfix sep _NM_VA_ARGS_FOREACH_66(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_68(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 67 ) postfix sep _NM_VA_ARGS_FOREACH_67(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_69(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 68 ) postfix sep _NM_VA_ARGS_FOREACH_68(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_70(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 69 ) postfix sep _NM_VA_ARGS_FOREACH_69(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_71(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 70 ) postfix sep _NM_VA_ARGS_FOREACH_70(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_72(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 71 ) postfix sep _NM_VA_ARGS_FOREACH_71(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_73(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 72 ) postfix sep _NM_VA_ARGS_FOREACH_72(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_74(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 73 ) postfix sep _NM_VA_ARGS_FOREACH_73(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_75(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 74 ) postfix sep _NM_VA_ARGS_FOREACH_74(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_76(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 75 ) postfix sep _NM_VA_ARGS_FOREACH_75(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_77(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 76 ) postfix sep _NM_VA_ARGS_FOREACH_76(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_78(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 77 ) postfix sep _NM_VA_ARGS_FOREACH_77(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_79(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 78 ) postfix sep _NM_VA_ARGS_FOREACH_78(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_80(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 79 ) postfix sep _NM_VA_ARGS_FOREACH_79(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_81(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 80 ) postfix sep _NM_VA_ARGS_FOREACH_80(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_82(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 81 ) postfix sep _NM_VA_ARGS_FOREACH_81(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_83(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 82 ) postfix sep _NM_VA_ARGS_FOREACH_82(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_84(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 83 ) postfix sep _NM_VA_ARGS_FOREACH_83(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_85(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 84 ) postfix sep _NM_VA_ARGS_FOREACH_84(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_86(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 85 ) postfix sep _NM_VA_ARGS_FOREACH_85(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_87(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 86 ) postfix sep _NM_VA_ARGS_FOREACH_86(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_88(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 87 ) postfix sep _NM_VA_ARGS_FOREACH_87(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_89(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 88 ) postfix sep _NM_VA_ARGS_FOREACH_88(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_90(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 89 ) postfix sep _NM_VA_ARGS_FOREACH_89(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_91(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 90 ) postfix sep _NM_VA_ARGS_FOREACH_90(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_92(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 91 ) postfix sep _NM_VA_ARGS_FOREACH_91(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_93(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 92 ) postfix sep _NM_VA_ARGS_FOREACH_92(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_94(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 93 ) postfix sep _NM_VA_ARGS_FOREACH_93(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_95(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 94 ) postfix sep _NM_VA_ARGS_FOREACH_94(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_96(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 95 ) postfix sep _NM_VA_ARGS_FOREACH_95(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_97(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 96 ) postfix sep _NM_VA_ARGS_FOREACH_96(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_98(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 97 ) postfix sep _NM_VA_ARGS_FOREACH_97(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_99(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 98 ) postfix sep _NM_VA_ARGS_FOREACH_98(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_100(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 99 ) postfix sep _NM_VA_ARGS_FOREACH_99(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_101(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 100) postfix sep _NM_VA_ARGS_FOREACH_100(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_102(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 101) postfix sep _NM_VA_ARGS_FOREACH_101(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_103(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 102) postfix sep _NM_VA_ARGS_FOREACH_102(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_104(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 103) postfix sep _NM_VA_ARGS_FOREACH_103(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_105(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 104) postfix sep _NM_VA_ARGS_FOREACH_104(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_106(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 105) postfix sep _NM_VA_ARGS_FOREACH_105(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_107(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 106) postfix sep _NM_VA_ARGS_FOREACH_106(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_108(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 107) postfix sep _NM_VA_ARGS_FOREACH_107(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_109(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 108) postfix sep _NM_VA_ARGS_FOREACH_108(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_110(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 109) postfix sep _NM_VA_ARGS_FOREACH_109(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_111(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 100) postfix sep _NM_VA_ARGS_FOREACH_110(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_112(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 111) postfix sep _NM_VA_ARGS_FOREACH_111(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_113(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 112) postfix sep _NM_VA_ARGS_FOREACH_112(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_114(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 113) postfix sep _NM_VA_ARGS_FOREACH_113(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_115(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 114) postfix sep _NM_VA_ARGS_FOREACH_114(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_116(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 115) postfix sep _NM_VA_ARGS_FOREACH_115(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_117(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 116) postfix sep _NM_VA_ARGS_FOREACH_116(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_118(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 117) postfix sep _NM_VA_ARGS_FOREACH_117(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_119(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 118) postfix sep _NM_VA_ARGS_FOREACH_118(prefix, postfix, sep, op, __VA_ARGS__)
-#define _NM_VA_ARGS_FOREACH_120(prefix, postfix, sep, op, x, ...) prefix _NM_MACRO_CALL2(op, x, 119) postfix sep _NM_VA_ARGS_FOREACH_119(prefix, postfix, sep, op, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_0( prefix, postfix, sep, op, op_arg)
+#define _NM_VA_ARGS_FOREACH_1( prefix, postfix, sep, op, op_arg, x) prefix _NM_MACRO_CALL2(op, x, 0, op_arg) postfix
+#define _NM_VA_ARGS_FOREACH_2( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 1, op_arg) postfix sep _NM_VA_ARGS_FOREACH_1( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_3( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 2, op_arg) postfix sep _NM_VA_ARGS_FOREACH_2( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_4( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 3, op_arg) postfix sep _NM_VA_ARGS_FOREACH_3( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_5( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 4, op_arg) postfix sep _NM_VA_ARGS_FOREACH_4( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_6( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 5, op_arg) postfix sep _NM_VA_ARGS_FOREACH_5( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_7( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 6, op_arg) postfix sep _NM_VA_ARGS_FOREACH_6( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_8( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 7, op_arg) postfix sep _NM_VA_ARGS_FOREACH_7( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_9( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 8, op_arg) postfix sep _NM_VA_ARGS_FOREACH_8( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_10( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 9, op_arg) postfix sep _NM_VA_ARGS_FOREACH_9( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_11( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 10, op_arg) postfix sep _NM_VA_ARGS_FOREACH_10( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_12( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 11, op_arg) postfix sep _NM_VA_ARGS_FOREACH_11( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_13( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 12, op_arg) postfix sep _NM_VA_ARGS_FOREACH_12( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_14( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 13, op_arg) postfix sep _NM_VA_ARGS_FOREACH_13( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_15( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 14, op_arg) postfix sep _NM_VA_ARGS_FOREACH_14( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_16( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 15, op_arg) postfix sep _NM_VA_ARGS_FOREACH_15( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_17( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 16, op_arg) postfix sep _NM_VA_ARGS_FOREACH_16( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_18( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 17, op_arg) postfix sep _NM_VA_ARGS_FOREACH_17( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_19( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 18, op_arg) postfix sep _NM_VA_ARGS_FOREACH_18( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_20( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 19, op_arg) postfix sep _NM_VA_ARGS_FOREACH_19( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_21( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 20, op_arg) postfix sep _NM_VA_ARGS_FOREACH_20( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_22( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 21, op_arg) postfix sep _NM_VA_ARGS_FOREACH_21( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_23( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 22, op_arg) postfix sep _NM_VA_ARGS_FOREACH_22( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_24( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 23, op_arg) postfix sep _NM_VA_ARGS_FOREACH_23( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_25( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 24, op_arg) postfix sep _NM_VA_ARGS_FOREACH_24( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_26( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 25, op_arg) postfix sep _NM_VA_ARGS_FOREACH_25( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_27( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 26, op_arg) postfix sep _NM_VA_ARGS_FOREACH_26( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_28( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 27, op_arg) postfix sep _NM_VA_ARGS_FOREACH_27( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_29( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 28, op_arg) postfix sep _NM_VA_ARGS_FOREACH_28( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_30( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 29, op_arg) postfix sep _NM_VA_ARGS_FOREACH_29( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_31( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 30, op_arg) postfix sep _NM_VA_ARGS_FOREACH_30( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_32( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 31, op_arg) postfix sep _NM_VA_ARGS_FOREACH_31( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_33( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 32, op_arg) postfix sep _NM_VA_ARGS_FOREACH_32( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_34( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 33, op_arg) postfix sep _NM_VA_ARGS_FOREACH_33( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_35( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 34, op_arg) postfix sep _NM_VA_ARGS_FOREACH_34( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_36( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 35, op_arg) postfix sep _NM_VA_ARGS_FOREACH_35( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_37( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 36, op_arg) postfix sep _NM_VA_ARGS_FOREACH_36( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_38( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 37, op_arg) postfix sep _NM_VA_ARGS_FOREACH_37( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_39( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 38, op_arg) postfix sep _NM_VA_ARGS_FOREACH_38( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_40( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 39, op_arg) postfix sep _NM_VA_ARGS_FOREACH_39( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_41( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 40, op_arg) postfix sep _NM_VA_ARGS_FOREACH_40( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_42( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 41, op_arg) postfix sep _NM_VA_ARGS_FOREACH_41( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_43( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 42, op_arg) postfix sep _NM_VA_ARGS_FOREACH_42( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_44( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 43, op_arg) postfix sep _NM_VA_ARGS_FOREACH_43( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_45( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 44, op_arg) postfix sep _NM_VA_ARGS_FOREACH_44( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_46( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 45, op_arg) postfix sep _NM_VA_ARGS_FOREACH_45( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_47( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 46, op_arg) postfix sep _NM_VA_ARGS_FOREACH_46( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_48( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 47, op_arg) postfix sep _NM_VA_ARGS_FOREACH_47( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_49( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 48, op_arg) postfix sep _NM_VA_ARGS_FOREACH_48( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_50( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 49, op_arg) postfix sep _NM_VA_ARGS_FOREACH_49( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_51( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 50, op_arg) postfix sep _NM_VA_ARGS_FOREACH_50( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_52( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 51, op_arg) postfix sep _NM_VA_ARGS_FOREACH_51( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_53( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 52, op_arg) postfix sep _NM_VA_ARGS_FOREACH_52( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_54( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 53, op_arg) postfix sep _NM_VA_ARGS_FOREACH_53( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_55( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 54, op_arg) postfix sep _NM_VA_ARGS_FOREACH_54( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_56( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 55, op_arg) postfix sep _NM_VA_ARGS_FOREACH_55( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_57( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 56, op_arg) postfix sep _NM_VA_ARGS_FOREACH_56( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_58( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 57, op_arg) postfix sep _NM_VA_ARGS_FOREACH_57( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_59( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 58, op_arg) postfix sep _NM_VA_ARGS_FOREACH_58( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_60( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 59, op_arg) postfix sep _NM_VA_ARGS_FOREACH_59( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_61( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 10, op_arg) postfix sep _NM_VA_ARGS_FOREACH_60( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_62( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 61, op_arg) postfix sep _NM_VA_ARGS_FOREACH_61( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_63( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 62, op_arg) postfix sep _NM_VA_ARGS_FOREACH_62( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_64( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 63, op_arg) postfix sep _NM_VA_ARGS_FOREACH_63( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_65( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 64, op_arg) postfix sep _NM_VA_ARGS_FOREACH_64( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_66( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 65, op_arg) postfix sep _NM_VA_ARGS_FOREACH_65( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_67( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 66, op_arg) postfix sep _NM_VA_ARGS_FOREACH_66( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_68( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 67, op_arg) postfix sep _NM_VA_ARGS_FOREACH_67( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_69( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 68, op_arg) postfix sep _NM_VA_ARGS_FOREACH_68( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_70( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 69, op_arg) postfix sep _NM_VA_ARGS_FOREACH_69( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_71( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 70, op_arg) postfix sep _NM_VA_ARGS_FOREACH_70( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_72( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 71, op_arg) postfix sep _NM_VA_ARGS_FOREACH_71( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_73( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 72, op_arg) postfix sep _NM_VA_ARGS_FOREACH_72( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_74( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 73, op_arg) postfix sep _NM_VA_ARGS_FOREACH_73( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_75( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 74, op_arg) postfix sep _NM_VA_ARGS_FOREACH_74( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_76( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 75, op_arg) postfix sep _NM_VA_ARGS_FOREACH_75( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_77( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 76, op_arg) postfix sep _NM_VA_ARGS_FOREACH_76( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_78( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 77, op_arg) postfix sep _NM_VA_ARGS_FOREACH_77( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_79( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 78, op_arg) postfix sep _NM_VA_ARGS_FOREACH_78( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_80( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 79, op_arg) postfix sep _NM_VA_ARGS_FOREACH_79( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_81( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 80, op_arg) postfix sep _NM_VA_ARGS_FOREACH_80( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_82( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 81, op_arg) postfix sep _NM_VA_ARGS_FOREACH_81( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_83( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 82, op_arg) postfix sep _NM_VA_ARGS_FOREACH_82( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_84( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 83, op_arg) postfix sep _NM_VA_ARGS_FOREACH_83( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_85( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 84, op_arg) postfix sep _NM_VA_ARGS_FOREACH_84( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_86( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 85, op_arg) postfix sep _NM_VA_ARGS_FOREACH_85( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_87( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 86, op_arg) postfix sep _NM_VA_ARGS_FOREACH_86( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_88( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 87, op_arg) postfix sep _NM_VA_ARGS_FOREACH_87( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_89( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 88, op_arg) postfix sep _NM_VA_ARGS_FOREACH_88( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_90( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 89, op_arg) postfix sep _NM_VA_ARGS_FOREACH_89( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_91( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 90, op_arg) postfix sep _NM_VA_ARGS_FOREACH_90( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_92( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 91, op_arg) postfix sep _NM_VA_ARGS_FOREACH_91( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_93( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 92, op_arg) postfix sep _NM_VA_ARGS_FOREACH_92( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_94( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 93, op_arg) postfix sep _NM_VA_ARGS_FOREACH_93( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_95( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 94, op_arg) postfix sep _NM_VA_ARGS_FOREACH_94( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_96( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 95, op_arg) postfix sep _NM_VA_ARGS_FOREACH_95( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_97( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 96, op_arg) postfix sep _NM_VA_ARGS_FOREACH_96( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_98( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 97, op_arg) postfix sep _NM_VA_ARGS_FOREACH_97( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_99( prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 98, op_arg) postfix sep _NM_VA_ARGS_FOREACH_98( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_100(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 99, op_arg) postfix sep _NM_VA_ARGS_FOREACH_99( prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_101(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 100, op_arg) postfix sep _NM_VA_ARGS_FOREACH_100(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_102(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 101, op_arg) postfix sep _NM_VA_ARGS_FOREACH_101(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_103(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 102, op_arg) postfix sep _NM_VA_ARGS_FOREACH_102(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_104(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 103, op_arg) postfix sep _NM_VA_ARGS_FOREACH_103(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_105(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 104, op_arg) postfix sep _NM_VA_ARGS_FOREACH_104(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_106(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 105, op_arg) postfix sep _NM_VA_ARGS_FOREACH_105(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_107(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 106, op_arg) postfix sep _NM_VA_ARGS_FOREACH_106(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_108(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 107, op_arg) postfix sep _NM_VA_ARGS_FOREACH_107(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_109(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 108, op_arg) postfix sep _NM_VA_ARGS_FOREACH_108(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_110(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 109, op_arg) postfix sep _NM_VA_ARGS_FOREACH_109(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_111(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 100, op_arg) postfix sep _NM_VA_ARGS_FOREACH_110(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_112(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 111, op_arg) postfix sep _NM_VA_ARGS_FOREACH_111(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_113(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 112, op_arg) postfix sep _NM_VA_ARGS_FOREACH_112(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_114(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 113, op_arg) postfix sep _NM_VA_ARGS_FOREACH_113(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_115(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 114, op_arg) postfix sep _NM_VA_ARGS_FOREACH_114(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_116(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 115, op_arg) postfix sep _NM_VA_ARGS_FOREACH_115(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_117(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 116, op_arg) postfix sep _NM_VA_ARGS_FOREACH_116(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_118(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 117, op_arg) postfix sep _NM_VA_ARGS_FOREACH_117(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_119(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 118, op_arg) postfix sep _NM_VA_ARGS_FOREACH_118(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
+#define _NM_VA_ARGS_FOREACH_120(prefix, postfix, sep, op, op_arg, x, ...) prefix _NM_MACRO_CALL2(op, x, 119, op_arg) postfix sep _NM_VA_ARGS_FOREACH_119(prefix, postfix, sep, op, op_arg, __VA_ARGS__)
/* clang-format on */
-#define NM_VA_ARGS_FOREACH(prefix, postfix, sep, op, ...) \
+#define NM_VA_ARGS_FOREACH(prefix, postfix, sep, op, op_arg, ...) \
_NM_MACRO_CALL(NM_PASTE(_NM_VA_ARGS_FOREACH_, NM_NARG(__VA_ARGS__)), \
prefix, \
postfix, \
sep, \
op, \
+ op_arg, \
##__VA_ARGS__)
/*****************************************************************************/
-#define NM_VA_ARGS_JOIN(sep, ...) NM_VA_ARGS_FOREACH(, , sep, _NM_MACRO_SELECT_FIRST, __VA_ARGS__)
+#define NM_VA_ARGS_JOIN(sep, ...) NM_VA_ARGS_FOREACH(, , sep, _NM_MACRO_SELECT_FIRST, , __VA_ARGS__)
/*****************************************************************************/
-#define _NM_IN_SET_OP(x, idx) ((int) (_x == (x)))
-#define _NM_IN_SET(op, type, x, ...) \
- ({ \
- type _x = (x); \
- \
- /* trigger a -Wenum-compare warning */ \
- nm_assert(true || _x == (x)); \
- \
- !!(NM_VA_ARGS_FOREACH(, , op, _NM_IN_SET_OP, __VA_ARGS__)); \
+#define _NM_IN_SET_OP(x, idx, op_arg) ((int) (_x == (x)))
+#define _NM_IN_SET(op, type, x, ...) \
+ ({ \
+ type _x = (x); \
+ \
+ /* trigger a -Wenum-compare warning */ \
+ nm_assert(true || _x == (x)); \
+ \
+ !!(NM_VA_ARGS_FOREACH(, , op, _NM_IN_SET_OP, , __VA_ARGS__)); \
})
/* Beware that this does short-circuit evaluation (use "||" instead of "|")
@@ -831,14 +832,14 @@ _NM_IN_STRSET_EVAL_op_streq(const char *x1, const char *x)
return x && nm_streq(x1, x);
}
-#define _NM_IN_STRSET_EVAL_OP_NULL(x, idx) ((int) (((const char *) NULL) == (x)))
-#define _NM_IN_STRSET_EVAL_OP_STREQ(x, idx) _NM_IN_STRSET_EVAL_op_streq(_x1, x)
-#define _NM_IN_STRSET_EVAL(op, eval_op, x1, ...) \
- ({ \
- const char *const _x1 = (x1); \
- \
- !!(_x1 ? (NM_VA_ARGS_FOREACH(, , op, eval_op, __VA_ARGS__)) \
- : (NM_VA_ARGS_FOREACH(, , op, _NM_IN_STRSET_EVAL_OP_NULL, __VA_ARGS__))); \
+#define _NM_IN_STRSET_EVAL_OP_NULL(x, idx, op_arg) ((int) (((const char *) NULL) == (x)))
+#define _NM_IN_STRSET_EVAL_OP_STREQ(x, idx, op_arg) _NM_IN_STRSET_EVAL_op_streq(_x1, x)
+#define _NM_IN_STRSET_EVAL(op, eval_op, x1, ...) \
+ ({ \
+ const char *const _x1 = (x1); \
+ \
+ !!(_x1 ? (NM_VA_ARGS_FOREACH(, , op, eval_op, , __VA_ARGS__)) \
+ : (NM_VA_ARGS_FOREACH(, , op, _NM_IN_STRSET_EVAL_OP_NULL, , __VA_ARGS__))); \
})
/* Beware that this does short-circuit evaluation (use "||" instead of "|")