]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
simplify things
authorAlan T. DeKok <aland@freeradius.org>
Mon, 7 Feb 2022 19:43:12 +0000 (14:43 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 7 Feb 2022 20:09:20 +0000 (15:09 -0500)
src/lib/unlang/xlat_expr.c

index 3b716ab35392d9227db76318c4548e1f93114934..c2bca1dd8f247953ea131e5ff38fc4e084d7e5d8 100644 (file)
@@ -596,6 +596,17 @@ do { \
        xlat->token = _op; \
 } while (0)
 
+#undef XLAT_REGISTER_NARY_OP
+#define XLAT_REGISTER_NARY_OP(_op, _name, _func_name) \
+do { \
+       if (!(xlat = xlat_register(NULL, STRINGIFY(_name), xlat_func_ ## _func_name, XLAT_FLAG_PURE))) return -1; \
+       xlat_async_instantiate_set(xlat, xlat_ ## _func_name ## _instantiate, xlat_ ## _func_name ## _inst_t, NULL, NULL); \
+       xlat_internal(xlat); \
+       xlat_print_set(xlat, xlat_expr_print_ ## _func_name); \
+       xlat->token = _op; \
+} while (0)
+
+
 int xlat_register_expressions(void)
 {
        xlat_t *xlat;
@@ -618,17 +629,8 @@ int xlat_register_expressions(void)
        /*
         *      &&, ||
         */
-       if (!(xlat = xlat_register(NULL, "logical_and", xlat_func_logical, XLAT_FLAG_PURE))) return -1;
-       xlat_async_instantiate_set(xlat, xlat_logical_instantiate, xlat_logical_inst_t, NULL, NULL);
-       xlat_internal(xlat);
-       xlat_print_set(xlat, xlat_expr_print_logical);
-       xlat->token = T_LAND;
-
-       if (!(xlat = xlat_register(NULL, "logical_or", xlat_func_logical, XLAT_FLAG_PURE))) return -1;
-       xlat_async_instantiate_set(xlat, xlat_logical_instantiate, xlat_logical_inst_t, NULL, NULL);
-       xlat_print_set(xlat, xlat_expr_print_logical);
-       xlat_internal(xlat);
-       xlat->token = T_LOR;
+       XLAT_REGISTER_NARY_OP(T_LAND, logical_and, logical);
+       XLAT_REGISTER_NARY_OP(T_LOR, logical_or, logical);
 
        /*
         *      -EXPR