mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-07 00:31:11 +00:00
macros: simplify NM_IN_SET() and NM_IN_STRSET() macros
and support up to 16 arguments.
This commit is contained in:
parent
f1165cc290
commit
b1fd5a06c4
|
@ -5222,6 +5222,8 @@ test_nm_in_set (void)
|
|||
|
||||
_ASSERT (5, NM_IN_SET_SE (-1, G( 1), G( 2), G( 3), G(-1), G( 5)));
|
||||
_ASSERT (6, NM_IN_SET_SE (-1, G( 1), G( 2), G( 3), G( 4), G( 5), G(-1)));
|
||||
|
||||
(void) NM_IN_SET ("a", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16");
|
||||
#undef G
|
||||
#undef N
|
||||
#undef _ASSERT
|
||||
|
@ -5348,6 +5350,8 @@ test_nm_in_strset (void)
|
|||
_ASSERT (5, NM_IN_STRSET ("a", G(NULL), G("b"), G("c"), G("d"), G("a"), N("a")));
|
||||
_ASSERT (6, NM_IN_STRSET ("a", G(NULL), G("b"), G("c"), G("d"), G("e"), G("a")));
|
||||
_ASSERT (6, !NM_IN_STRSET ("a", G(NULL), G("b"), G("c"), G("d"), G("e"), G("f")));
|
||||
|
||||
(void) NM_IN_STRSET ("a", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16");
|
||||
#undef G
|
||||
#undef N
|
||||
#undef _ASSERT
|
||||
|
|
|
@ -175,45 +175,24 @@ NM_G_ERROR_MSG (GError *error)
|
|||
|
||||
/********************************************************/
|
||||
|
||||
#define _NM_IN_SET_EVAL_1(op, _x, y1) \
|
||||
(_x == (y1))
|
||||
#define _NM_IN_SET_EVAL_1( op, _x, y) (_x == (y))
|
||||
#define _NM_IN_SET_EVAL_2( op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_1 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_3( op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_2 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_4( op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_3 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_5( op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_4 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_6( op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_5 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_7( op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_6 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_8( op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_7 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_9( op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_8 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_10(op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_9 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_11(op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_10 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_12(op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_11 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_13(op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_12 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_14(op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_13 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_15(op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_14 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_16(op, _x, y, ...) (_x == (y)) op _NM_IN_SET_EVAL_15 (op, _x, __VA_ARGS__)
|
||||
|
||||
#define _NM_IN_SET_EVAL_2(op, _x, y1, y2) \
|
||||
( (_x == (y1)) \
|
||||
op (_x == (y2)) \
|
||||
)
|
||||
|
||||
#define _NM_IN_SET_EVAL_3(op, _x, y1, y2, y3) \
|
||||
( (_x == (y1)) \
|
||||
op (_x == (y2)) \
|
||||
op (_x == (y3)) \
|
||||
)
|
||||
|
||||
#define _NM_IN_SET_EVAL_4(op, _x, y1, y2, y3, y4) \
|
||||
( (_x == (y1)) \
|
||||
op (_x == (y2)) \
|
||||
op (_x == (y3)) \
|
||||
op (_x == (y4)) \
|
||||
)
|
||||
|
||||
#define _NM_IN_SET_EVAL_5(op, _x, y1, y2, y3, y4, y5) \
|
||||
( (_x == (y1)) \
|
||||
op (_x == (y2)) \
|
||||
op (_x == (y3)) \
|
||||
op (_x == (y4)) \
|
||||
op (_x == (y5)) \
|
||||
)
|
||||
|
||||
#define _NM_IN_SET_EVAL_6(op, _x, y1, y2, y3, y4, y5, y6) \
|
||||
( (_x == (y1)) \
|
||||
op (_x == (y2)) \
|
||||
op (_x == (y3)) \
|
||||
op (_x == (y4)) \
|
||||
op (_x == (y5)) \
|
||||
op (_x == (y6)) \
|
||||
)
|
||||
|
||||
#define _NM_IN_SET_EVAL_N2(op, _x, n, ...) _NM_IN_SET_EVAL_##n(op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_SET_EVAL_N2(op, _x, n, ...) (_NM_IN_SET_EVAL_##n(op, _x, __VA_ARGS__))
|
||||
#define _NM_IN_SET_EVAL_N(op, x, n, ...) \
|
||||
({ \
|
||||
typeof(x) _x = (x); \
|
||||
|
@ -238,45 +217,24 @@ _NM_IN_STRSET_streq (const char *x, const char *s)
|
|||
return s && strcmp (x, s) == 0;
|
||||
}
|
||||
|
||||
#define _NM_IN_STRSET_EVAL_1(op, _x, y1) \
|
||||
_NM_IN_STRSET_streq (_x, y1)
|
||||
#define _NM_IN_STRSET_EVAL_1( op, _x, y) _NM_IN_STRSET_streq (_x, y)
|
||||
#define _NM_IN_STRSET_EVAL_2( op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_1 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_3( op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_2 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_4( op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_3 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_5( op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_4 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_6( op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_5 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_7( op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_6 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_8( op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_7 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_9( op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_8 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_10(op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_9 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_11(op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_10 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_12(op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_11 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_13(op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_12 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_14(op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_13 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_15(op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_14 (op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_16(op, _x, y, ...) _NM_IN_STRSET_streq (_x, y) op _NM_IN_STRSET_EVAL_15 (op, _x, __VA_ARGS__)
|
||||
|
||||
#define _NM_IN_STRSET_EVAL_2(op, _x, y1, y2) \
|
||||
( _NM_IN_STRSET_streq (_x, y1) \
|
||||
op _NM_IN_STRSET_streq (_x, y2) \
|
||||
)
|
||||
|
||||
#define _NM_IN_STRSET_EVAL_3(op, _x, y1, y2, y3) \
|
||||
( _NM_IN_STRSET_streq (_x, y1) \
|
||||
op _NM_IN_STRSET_streq (_x, y2) \
|
||||
op _NM_IN_STRSET_streq (_x, y3) \
|
||||
)
|
||||
|
||||
#define _NM_IN_STRSET_EVAL_4(op, _x, y1, y2, y3, y4) \
|
||||
( _NM_IN_STRSET_streq (_x, y1) \
|
||||
op _NM_IN_STRSET_streq (_x, y2) \
|
||||
op _NM_IN_STRSET_streq (_x, y3) \
|
||||
op _NM_IN_STRSET_streq (_x, y4) \
|
||||
)
|
||||
|
||||
#define _NM_IN_STRSET_EVAL_5(op, _x, y1, y2, y3, y4, y5) \
|
||||
( _NM_IN_STRSET_streq (_x, y1) \
|
||||
op _NM_IN_STRSET_streq (_x, y2) \
|
||||
op _NM_IN_STRSET_streq (_x, y3) \
|
||||
op _NM_IN_STRSET_streq (_x, y4) \
|
||||
op _NM_IN_STRSET_streq (_x, y5) \
|
||||
)
|
||||
|
||||
#define _NM_IN_STRSET_EVAL_6(op, _x, y1, y2, y3, y4, y5, y6) \
|
||||
( _NM_IN_STRSET_streq (_x, y1) \
|
||||
op _NM_IN_STRSET_streq (_x, y2) \
|
||||
op _NM_IN_STRSET_streq (_x, y3) \
|
||||
op _NM_IN_STRSET_streq (_x, y4) \
|
||||
op _NM_IN_STRSET_streq (_x, y5) \
|
||||
op _NM_IN_STRSET_streq (_x, y6) \
|
||||
)
|
||||
|
||||
#define _NM_IN_STRSET_EVAL_N2(op, _x, n, ...) _NM_IN_STRSET_EVAL_##n(op, _x, __VA_ARGS__)
|
||||
#define _NM_IN_STRSET_EVAL_N2(op, _x, n, ...) (_NM_IN_STRSET_EVAL_##n(op, _x, __VA_ARGS__))
|
||||
#define _NM_IN_STRSET_EVAL_N(op, x, n, ...) \
|
||||
({ \
|
||||
const char *_x = (x); \
|
||||
|
|
Loading…
Reference in a new issue