[template-glib] symbol: add some helpers
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [template-glib] symbol: add some helpers
- Date: Thu, 5 May 2022 00:51:50 +0000 (UTC)
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]