* This macro is mapped to every (name, value) in frrscript_call,
* so this in turn maps them onto their encoders
*/
-#define ENCODE_ARGS(name, value) ENCODE_ARGS_WITH_STATE(lfs->L, value)
+#define ENCODE_ARGS(name, value) ENCODE_ARGS_WITH_STATE(lfs->L, (value))
/*
* This macro is also mapped to every (name, value) in frrscript_call, but
*/
#define DECODE_ARGS(name, value) \
do { \
- lua_getfield(lfs->L, 1, name); \
+ lua_getfield(lfs->L, 1, (name)); \
if (lua_isnil(lfs->L, 2)) { \
lua_pop(lfs->L, 1); \
} else { \
- DECODE_ARGS_WITH_STATE(lfs->L, value); \
+ DECODE_ARGS_WITH_STATE(lfs->L, (value)); \
} \
assert(lua_gettop(lfs->L) == 1); \
} while (0)
struct attr * : lua_pushattr, \
struct peer * : lua_pushpeer, \
const struct prefix * : lua_pushprefix \
-)(L, value)
+)((L), (value))
#define DECODE_ARGS_WITH_STATE(L, value) \
_Generic((value), \
struct attr * : lua_decode_attr, \
struct peer * : lua_decode_noop, \
const struct prefix * : lua_decode_noop \
-)(L, -1, value)
+)((L), -1, (value))
/*
* Call Lua function state (abstraction for a single Lua function)