diff options
author | Colin Walters <walters@src.gnome.org> | 2008-09-06 20:33:51 +0000 |
---|---|---|
committer | Colin Walters <walters@src.gnome.org> | 2008-09-06 20:33:51 +0000 |
commit | e28078c70cbf4a57c7dbd39626f43f9bd2674145 (patch) | |
tree | 1ab870b5a41cbc3e3a8a70f62b83f6e419049737 /tools/generate.c | |
parent | c5eb6a47cedf58210b4d3d73baced9a253e8ae51 (diff) | |
download | gobject-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.c | 11 |
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\""); |