summaryrefslogtreecommitdiff
path: root/girepository/girwriter.c
diff options
context:
space:
mode:
Diffstat (limited to 'girepository/girwriter.c')
-rw-r--r--girepository/girwriter.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/girepository/girwriter.c b/girepository/girwriter.c
index b123a134..19862b0d 100644
--- a/girepository/girwriter.c
+++ b/girepository/girwriter.c
@@ -358,7 +358,7 @@ write_type_info (const gchar *namespace,
static void
write_attributes (Xml *file,
- GIBaseInfo *info)
+ GIBaseInfo *info)
{
GIAttributeIter iter = { 0, };
char *name, *value;
@@ -372,6 +372,21 @@ write_attributes (Xml *file,
}
static void
+write_return_value_attributes (Xml *file,
+ GICallableInfo *info)
+{
+ GIAttributeIter iter = { 0, };
+ char *name, *value;
+
+ while (g_callable_info_iterate_return_attributes (info, &iter, &name, &value))
+ {
+ xml_start_element (file, "attribute");
+ xml_printf (file, " name=\"%s\" value=\"%s\"", name, value);
+ xml_end_element (file, "attribute");
+ }
+}
+
+static void
write_constant_value (const gchar *namespace,
GITypeInfo *info,
GArgument *argument,
@@ -467,6 +482,8 @@ write_callable_info (const gchar *namespace,
if (g_callable_info_may_return_null (info))
xml_printf (file, " allow-none=\"1\"");
+ write_return_value_attributes (file, info);
+
write_type_info (namespace, type, file);
xml_end_element (file, "return-value");
@@ -528,6 +545,8 @@ write_callable_info (const gchar *namespace,
if (g_arg_info_get_destroy (arg) >= 0)
xml_printf (file, " destroy=\"%d\"", g_arg_info_get_destroy (arg));
+ write_attributes (file, (GIBaseInfo*) arg);
+
type = g_arg_info_get_type (arg);
write_type_info (namespace, type, file);