[template-glib] symbol: add some helpers



commit b88336d780e6f79560305a8e99e9279c2252fb91
Author: Christian Hergert <chergert redhat com>
Date:   Wed May 4 17:43:28 2022 -0700

    symbol: add some helpers
    
    This just makes calling code a bit cleaner and avoids copying a GValue
    to get the boxed pointer.

 src/tmpl-symbol.c | 20 ++++++++++++++++++++
 src/tmpl-symbol.h |  5 +++++
 2 files changed, 25 insertions(+)
---
diff --git a/src/tmpl-symbol.c b/src/tmpl-symbol.c
index 9314e3b..3bbc35c 100644
--- a/src/tmpl-symbol.c
+++ b/src/tmpl-symbol.c
@@ -286,3 +286,23 @@ tmpl_symbol_assign_strv (TmplSymbol *self,
   tmpl_symbol_assign_value (self, &value);
   g_value_unset (&value);
 }
+
+gboolean
+tmpl_symbol_holds (TmplSymbol *self,
+                   GType       type)
+{
+  return self != NULL &&
+         self->type == TMPL_SYMBOL_VALUE &&
+         self->u.value.g_type == type;
+}
+
+gpointer
+tmpl_symbol_get_boxed (TmplSymbol *self)
+{
+  if (self != NULL &&
+      self->type == TMPL_SYMBOL_VALUE &&
+      G_VALUE_HOLDS_BOXED (&self->u.value))
+    return g_value_get_boxed (&self->u.value);
+
+  return NULL;
+}
diff --git a/src/tmpl-symbol.h b/src/tmpl-symbol.h
index 78c6b1d..5f2ef1c 100644
--- a/src/tmpl-symbol.h
+++ b/src/tmpl-symbol.h
@@ -37,9 +37,14 @@ TMPL_AVAILABLE_IN_ALL
 void            tmpl_symbol_unref           (TmplSymbol   *self);
 TMPL_AVAILABLE_IN_ALL
 TmplSymbolType  tmpl_symbol_get_symbol_type (TmplSymbol   *self);
+TMPL_AVAILABLE_IN_3_36
+gboolean        tmpl_symbol_holds           (TmplSymbol   *self,
+                                             GType         type);
 TMPL_AVAILABLE_IN_ALL
 void            tmpl_symbol_get_value       (TmplSymbol   *self,
                                              GValue       *value);
+TMPL_AVAILABLE_IN_3_36
+gpointer        tmpl_symbol_get_boxed       (TmplSymbol   *self);
 TMPL_AVAILABLE_IN_ALL
 TmplExpr       *tmpl_symbol_get_expr        (TmplSymbol   *self,
                                              GPtrArray   **params);


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