[template-glib] expr: add nop expr node



commit 22d5e5dbb7a8507a0bb2d54e1b20ae1612179e2b
Author: Christian Hergert <chergert redhat com>
Date:   Wed May 4 15:29:59 2022 -0700

    expr: add nop expr node
    
    This can be helpful in some upcoming places.

 src/tmpl-expr-eval.c  |  3 +++
 src/tmpl-expr-types.h |  1 +
 src/tmpl-expr.c       | 13 ++++++++++++-
 src/tmpl-expr.h       |  2 ++
 4 files changed, 18 insertions(+), 1 deletion(-)
---
diff --git a/src/tmpl-expr-eval.c b/src/tmpl-expr-eval.c
index 956d71a..d2860b1 100644
--- a/src/tmpl-expr-eval.c
+++ b/src/tmpl-expr-eval.c
@@ -1359,6 +1359,9 @@ tmpl_expr_eval_internal (TmplExpr   *node,
     case TMPL_EXPR_FUNC:
       return tmpl_expr_func_eval ((TmplExprFunc *)node, scope, return_value, error);
 
+    case TMPL_EXPR_NOP:
+      return TRUE;
+
     default:
       break;
     }
diff --git a/src/tmpl-expr-types.h b/src/tmpl-expr-types.h
index 079c02e..84ee57b 100644
--- a/src/tmpl-expr-types.h
+++ b/src/tmpl-expr-types.h
@@ -77,6 +77,7 @@ typedef enum
   TMPL_EXPR_INVERT_BOOLEAN,
   TMPL_EXPR_ARGS,
   TMPL_EXPR_FUNC,
+  TMPL_EXPR_NOP,
 } TmplExprType;
 
 typedef enum
diff --git a/src/tmpl-expr.c b/src/tmpl-expr.c
index 64f9054..25def26 100644
--- a/src/tmpl-expr.c
+++ b/src/tmpl-expr.c
@@ -152,6 +152,9 @@ tmpl_expr_destroy (TmplExpr *self)
       g_clear_pointer (&self->func.list, tmpl_expr_unref);
       break;
 
+    case TMPL_EXPR_NOP:
+      break;
+
     default:
       g_assert_not_reached ();
     }
@@ -399,7 +402,9 @@ tmpl_expr_new_func (char      *name,
   TmplExprFunc *ret;
 
   g_return_val_if_fail (name != NULL, NULL);
-  g_return_val_if_fail (list != NULL, NULL);
+
+  if (list == NULL)
+    list = tmpl_expr_new_nop ();
 
   ret = tmpl_expr_new (TMPL_EXPR_FUNC);
   ret->name = name;
@@ -408,3 +413,9 @@ tmpl_expr_new_func (char      *name,
 
   return (TmplExpr *)ret;
 }
+
+TmplExpr *
+tmpl_expr_new_nop (void)
+{
+  return (TmplExpr *)tmpl_expr_new (TMPL_EXPR_NOP);
+}
diff --git a/src/tmpl-expr.h b/src/tmpl-expr.h
index 61bafe0..a57b0b4 100644
--- a/src/tmpl-expr.h
+++ b/src/tmpl-expr.h
@@ -90,6 +90,8 @@ TMPL_AVAILABLE_IN_3_36
 TmplExpr *tmpl_expr_new_func          (char             *name,
                                        char            **symlist,
                                        TmplExpr         *list);
+TMPL_AVAILABLE_IN_3_36
+TmplExpr *tmpl_expr_new_nop           (void);
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (TmplExpr, tmpl_expr_unref)
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]