Bug 555960 - Nested structs and unions (generation portion)
authorColin Walters <walters@src.gnome.org>
Wed, 4 Feb 2009 00:48:24 +0000 (00:48 +0000)
committerColin Walters <walters@src.gnome.org>
Wed, 4 Feb 2009 00:48:24 +0000 (00:48 +0000)
commite3e84400529899854fe06f7d110685f50be26a18
tree6d7ab0ca6fb6b44969063070024628cddc2cfb6e
parentab991adecd8659a8b2843f4191ca4aa16aa4e121
Bug 555960 - Nested structs and unions (generation portion)

Patch from Andreas Rottmann <a.rottmann@gmx.at>.

* tests/scanner/utility.h (UtilityTaggedValue): Make the union
member anonymous.
(UtilityByte): New union typedef with an unnamed struct in it.

* giscanner/transformer.py (Transformer._create_struct): Create
unnamed structs for symbols with a None ident.
(Transformer._create_union): Likewise.

* giscanner/girwriter.py (GIRWriter._write_record): Allow name
being None.
(GIRWriter._write_union): Likewise.

* girepository/girparser.c (start_struct): Allow a NULL name for
non-toplevel structs.
(start_union): Likewise.

* tests/scanner/utility.h (UtilityTaggedValue): New struct
typedef, which has a nested union member.
* tests/scanner/utility-expected.gir: Adapted.

* giscanner/transformer.py (Transformer._create_member): Create
struct/union members if appropriate.
(Transformer._create_struct, Transformer._create_union): Allow for
structs/unions without a C type.

* giscanner/glibtransformer.py (GLibTransformer._resolve_field):
We don't need to resolve non-typef'd
(GLibTransformer._resolve_field): Add cases for non-typedef'd
struct/union "fields".

* giscanner/girwriter.py (GIRWriter._write_record): Allow for
records without a C type.
(GIRWriter._write_field): structs and unions may appear in places
where fields do.

svn path=/trunk/; revision=1082
ChangeLog
girepository/girparser.c
giscanner/girwriter.py
giscanner/glibtransformer.py
giscanner/transformer.py
tests/repository/Makefile.am
tests/scanner/utility-1.0-expected.gir
tests/scanner/utility-1.0-expected.tgir
tests/scanner/utility.h