summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn (J5) Palmieri <johnp@redhat.com>2011-03-14 14:18:22 -0400
committerJohn (J5) Palmieri <johnp@redhat.com>2011-03-16 14:33:05 -0400
commit2d39aac59cb245b81e7c92abf816b90d8916aace (patch)
tree7678f86236cae21a025a647534bae77f17d1f70a
parent734a6041a8c7671324ba21f943e712e57bf992b0 (diff)
downloadgobject-introspection-2d39aac59cb245b81e7c92abf816b90d8916aace.tar.gz
support setting gobjects and ginterfaces in struct fields
https://bugzilla.gnome.org/show_bug.cgi?id=644749
-rw-r--r--girepository/gifieldinfo.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/girepository/gifieldinfo.c b/girepository/gifieldinfo.c
index d4fd14e2..cf5c2332 100644
--- a/girepository/gifieldinfo.c
+++ b/girepository/gifieldinfo.c
@@ -512,6 +512,23 @@ g_field_info_set_field (GIFieldInfo *field_info,
}
break;
}
+ } else {
+ switch (g_type_info_get_tag (type_info))
+ {
+ case GI_TYPE_TAG_INTERFACE:
+ {
+ GIBaseInfo *interface = g_type_info_get_interface (type_info);
+ switch (g_base_info_get_type (interface))
+ {
+ case GI_INFO_TYPE_OBJECT:
+ case GI_INFO_TYPE_INTERFACE:
+ G_STRUCT_MEMBER (gpointer, mem, offset) = (gpointer)value->v_pointer;
+ result = TRUE;
+ break;
+ }
+ g_base_info_unref ((GIBaseInfo *)interface);
+ }
+ }
}
g_base_info_unref ((GIBaseInfo *)type_info);