[template-glib] gi: use boxed type for GIBaseInfo
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [template-glib] gi: use boxed type for GIBaseInfo
- Date: Tue, 24 Oct 2017 04:19:39 +0000 (UTC)
commit 6fc7ce76801c6ba4b4a076d2ebd7e9cfe1a7644b
Author: Christian Hergert <chergert redhat com>
Date: Mon Oct 23 21:18:53 2017 -0700
gi: use boxed type for GIBaseInfo
These are full transfer, so we need the gvalue to clean up after
our accesses.
src/tmpl-expr-eval.c | 8 ++++----
src/tmpl-gi.c | 12 ++++++++----
2 files changed, 12 insertions(+), 8 deletions(-)
---
diff --git a/src/tmpl-expr-eval.c b/src/tmpl-expr-eval.c
index 7d81a7b..3355f26 100644
--- a/src/tmpl-expr-eval.c
+++ b/src/tmpl-expr-eval.c
@@ -509,7 +509,7 @@ tmpl_expr_getattr_eval (TmplExprGetattr *node,
}
g_value_init (return_value, TMPL_TYPE_BASE_INFO);
- g_value_set_pointer (return_value, base_info);
+ g_value_take_boxed (return_value, base_info);
ret = TRUE;
@@ -1608,10 +1608,10 @@ builtin_typeof (const GValue *value,
g_value_init (return_value, G_TYPE_GTYPE);
if (G_VALUE_HOLDS (value, TMPL_TYPE_BASE_INFO) &&
- g_value_get_pointer (value) != NULL &&
- GI_IS_REGISTERED_TYPE_INFO (g_value_get_pointer (value)))
+ g_value_get_boxed (value) != NULL &&
+ GI_IS_REGISTERED_TYPE_INFO (g_value_get_boxed (value)))
g_value_set_gtype (return_value,
- g_registered_type_info_get_g_type (g_value_get_pointer (value)));
+ g_registered_type_info_get_g_type (g_value_get_boxed (value)));
else if (G_VALUE_HOLDS_OBJECT (value) &&
g_value_get_object (value) != NULL)
g_value_set_gtype (return_value, G_OBJECT_TYPE (g_value_get_object (value)));
diff --git a/src/tmpl-gi.c b/src/tmpl-gi.c
index 2c04c54..f2d874f 100644
--- a/src/tmpl-gi.c
+++ b/src/tmpl-gi.c
@@ -21,7 +21,11 @@
#include "tmpl-gi-private.h"
G_DEFINE_POINTER_TYPE (TmplTypelib, tmpl_typelib)
-G_DEFINE_POINTER_TYPE (TmplBaseInfo, tmpl_base_info)
+
+typedef struct GIBaseInfo TmplBaseInfo;
+G_DEFINE_BOXED_TYPE (TmplBaseInfo, tmpl_base_info,
+ (GBoxedCopyFunc)g_base_info_ref,
+ (GBoxedFreeFunc)g_base_info_unref)
#define return_type_mismatch(value, type) \
G_STMT_START { \
@@ -143,9 +147,9 @@ tmpl_gi_argument_from_g_value (const GValue *value,
if (G_VALUE_HOLDS (value, G_TYPE_GTYPE))
arg->v_long = g_value_get_gtype (value);
else if (G_VALUE_HOLDS (value, TMPL_TYPE_BASE_INFO) &&
- g_value_get_pointer (value) != NULL &&
- GI_IS_REGISTERED_TYPE_INFO (g_value_get_pointer (value)))
- arg->v_long = g_registered_type_info_get_g_type (g_value_get_pointer (value));
+ g_value_get_boxed (value) != NULL &&
+ GI_IS_REGISTERED_TYPE_INFO (g_value_get_boxed (value)))
+ arg->v_long = g_registered_type_info_get_g_type (g_value_get_boxed (value));
else
return_type_mismatch (value, G_TYPE_GTYPE);
return TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]