summaryrefslogtreecommitdiff
path: root/tools/generate.c
diff options
context:
space:
mode:
authorColin Walters <walters@src.gnome.org>2008-09-06 20:33:51 +0000
committerColin Walters <walters@src.gnome.org>2008-09-06 20:33:51 +0000
commite28078c70cbf4a57c7dbd39626f43f9bd2674145 (patch)
tree1ab870b5a41cbc3e3a8a70f62b83f6e419049737 /tools/generate.c
parentc5eb6a47cedf58210b4d3d73baced9a253e8ae51 (diff)
downloadgobject-introspection-e28078c70cbf4a57c7dbd39626f43f9bd2674145.tar.gz
Allow both union and struct to be boxed or not
* girepository/girnode.c: Allow gtype_name and gtype_init in struct and union. * girepository/girparser.c: Parse glib: boxed bits for both structure and union. * girepository/gtypelib.c: Don't barf if structure is boxed. * giscanner/girparser.py: Parse new XML format. * giscanner/girwriter.py: Write out new XML format. * giscanner/glibast.py: Define new classes which are both Boxed and Struct/Union, as well as an "Other" for everything else. * giscanner/glibtransformer.py: Handle boxed types specially; we try to merge them with a struct/union if one exists, otherwise fall back to generic boxed. * tests/*: Update. * tools/generate.c: Write out new format. svn path=/trunk/; revision=575
Diffstat (limited to 'tools/generate.c')
-rw-r--r--tools/generate.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/tools/generate.c b/tools/generate.c
index 2f6f512e..efa4e7a7 100644
--- a/tools/generate.c
+++ b/tools/generate.c
@@ -413,15 +413,18 @@ write_struct_info (const gchar *namespace,
name = g_base_info_get_name ((GIBaseInfo *)info);
deprecated = g_base_info_is_deprecated ((GIBaseInfo *)info);
+ type_name = g_registered_type_info_get_type_name ((GIRegisteredTypeInfo*)info);
+ type_init = g_registered_type_info_get_type_init ((GIRegisteredTypeInfo*)info);
+
if (g_base_info_get_type ((GIBaseInfo *)info) == GI_INFO_TYPE_BOXED)
{
- type_name = g_registered_type_info_get_type_name ((GIRegisteredTypeInfo*)info);
- type_init = g_registered_type_info_get_type_init ((GIRegisteredTypeInfo*)info);
-
- g_fprintf (file, " <glib:boxed glib:name=\"%s\" glib:type-name=\"%s\" glib:get-type=\"%s\"", name, type_name, type_init);
+ g_fprintf (file, " <glib:boxed glib:name=\"%s\"", name);
}
else
g_fprintf (file, " <record name=\"%s\"", name);
+
+ if (type_name != NULL)
+ g_fprintf (file, " glib:type-name=\"%s\" glib:get-type=\"%s\"", type_name, type_init);
if (deprecated)
g_fprintf (file, " deprecated=\"1\"");