[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v8 06/26] qapi-types: Convert to QAPISchemaVisit
From: |
Daniel P. Berrange |
Subject: |
Re: [Qemu-devel] [PATCH v8 06/26] qapi-types: Convert to QAPISchemaVisitor, fixing flat unions |
Date: |
Wed, 16 Sep 2015 15:54:10 +0100 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Wed, Sep 16, 2015 at 01:06:09PM +0200, Markus Armbruster wrote:
> Fixes flat unions to get the base's base members. Test case is from
> commit 2fc0043, in qapi-schema-test.json:
>
> { 'union': 'UserDefFlatUnion',
> 'base': 'UserDefUnionBase',
> 'discriminator': 'enum1',
> 'data': { 'value1' : 'UserDefA',
> 'value2' : 'UserDefB',
> 'value3' : 'UserDefB' } }
>
> { 'struct': 'UserDefUnionBase',
> 'base': 'UserDefZero',
> 'data': { 'string': 'str', 'enum1': 'EnumOne' } }
>
> { 'struct': 'UserDefZero',
> 'data': { 'integer': 'int' } }
>
> Patch's effect on UserDefFlatUnion:
>
> struct UserDefFlatUnion {
> /* Members inherited from UserDefUnionBase: */
> + int64_t integer;
> char *string;
> EnumOne enum1;
> /* Own members: */
> union { /* union tag is @enum1 */
> void *data;
> UserDefA *value1;
> UserDefB *value2;
> UserDefB *value3;
> };
> };
>
> Flat union visitors remain broken. They'll be fixed next.
>
> Two ugly special cases for simple unions now stand out like sore
> thumbs:
>
> 1. The type tag is named 'type' everywhere, except in generated C,
> where it's 'kind'.
>
> 2. QAPISchema lowers simple unions to semantically equivalent flat
> unions. However, the C generated for a simple unions differs from
> the C generated for its equivalent flat union, and we therefore
> need special code to preserve that pointless difference for now.
>
> Mark both TODO.
>
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
> docs/qapi-code-gen.txt | 51 +++---
> scripts/qapi-types.py | 286
> ++++++++++++++------------------
> scripts/qapi.py | 10 +-
> tests/qapi-schema/qapi-schema-test.json | 4 +-
> 4 files changed, 164 insertions(+), 187 deletions(-)
Reviewed-by: Daniel P. Berrange <address@hidden>
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
- Re: [Qemu-devel] [PATCH v8 04/26] qapi: New QAPISchemaVisitor, (continued)
- [Qemu-devel] [PATCH v8 08/26] qapi-commands: Convert to QAPISchemaVisitor, Markus Armbruster, 2015/09/16
- [Qemu-devel] [PATCH v8 01/26] qapi: Rename class QAPISchema to QAPISchemaParser, Markus Armbruster, 2015/09/16
- [Qemu-devel] [PATCH v8 06/26] qapi-types: Convert to QAPISchemaVisitor, fixing flat unions, Markus Armbruster, 2015/09/16
- [Qemu-devel] [PATCH v8 14/26] qapi-visit: Rearrange code a bit, Markus Armbruster, 2015/09/16
- [Qemu-devel] [PATCH v8 07/26] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Markus Armbruster, 2015/09/16
- [Qemu-devel] [PATCH v8 03/26] qapi: QAPISchema code generation helper methods, Markus Armbruster, 2015/09/16