All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com
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	[thread overview]
Message-ID: <20150916145410.GK21184@redhat.com> (raw)
In-Reply-To: <1442401589-24189-7-git-send-email-armbru@redhat.com>

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 <armbru@redhat.com>
> ---
>  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 <berrange@redhat.com>

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 :|

  reply	other threads:[~2015-09-16 14:54 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-16 11:06 [Qemu-devel] [PATCH v8 00/26] qapi: QMP introspection Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 01/26] qapi: Rename class QAPISchema to QAPISchemaParser Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 02/26] qapi: New QAPISchema intermediate reperesentation Markus Armbruster
2015-09-16 14:44   ` Daniel P. Berrange
2015-09-16 15:08   ` Eric Blake
2015-09-17  7:44     ` Markus Armbruster
2015-09-17 15:40       ` Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 03/26] qapi: QAPISchema code generation helper methods Markus Armbruster
2015-09-16 14:51   ` Daniel P. Berrange
2015-09-16 15:11   ` Eric Blake
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 04/26] qapi: New QAPISchemaVisitor Markus Armbruster
2015-09-16 14:51   ` Daniel P. Berrange
2015-09-16 15:21   ` Eric Blake
2015-09-17  7:46     ` Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 05/26] tests/qapi-schema: Convert test harness to QAPISchemaVisitor Markus Armbruster
2015-09-16 14:53   ` Daniel P. Berrange
2015-09-16 15:27   ` Eric Blake
2015-09-17  7:49     ` Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 06/26] qapi-types: Convert to QAPISchemaVisitor, fixing flat unions Markus Armbruster
2015-09-16 14:54   ` Daniel P. Berrange [this message]
2015-09-16 17:09   ` Eric Blake
2015-09-17 17:00   ` Eric Blake
2015-09-18  6:54     ` Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 07/26] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs Markus Armbruster
2015-09-16 14:54   ` Daniel P. Berrange
2015-09-16 17:10   ` Eric Blake
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 08/26] qapi-commands: Convert to QAPISchemaVisitor Markus Armbruster
2015-09-16 14:57   ` Daniel P. Berrange
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 09/26] qapi: De-duplicate enum code generation Markus Armbruster
2015-09-16 14:58   ` Daniel P. Berrange
2015-09-16 17:16   ` Eric Blake
2015-09-17  8:04     ` Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 10/26] qapi-event: Eliminate global variable event_enum_value Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 11/26] qapi-event: Convert to QAPISchemaVisitor, fixing data with base Markus Armbruster
2015-09-16 14:59   ` Daniel P. Berrange
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 12/26] qapi: Replace dirty is_c_ptr() by method c_null() Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 13/26] qapi: Clean up after recent conversions to QAPISchemaVisitor Markus Armbruster
2015-09-16 15:00   ` Daniel P. Berrange
2015-09-16 17:20   ` Eric Blake
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 14/26] qapi-visit: Rearrange code a bit Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 15/26] qapi-commands: Rearrange code Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 16/26] qapi: Rename qmp_marshal_input_FOO() to qmp_marshal_FOO() Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 17/26] qapi: De-duplicate parameter list generation Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 18/26] qapi-commands: De-duplicate output marshaling functions Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 19/26] qapi: Improve built-in type documentation Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 20/26] qapi: Make output visitor return qnull() instead of NULL Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 21/26] qapi: Introduce a first class 'any' type Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 22/26] qom: Don't use 'gen': false for qom-get, qom-set, object-add Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 23/26] qapi-schema: Fix up misleading specification of netdev_add Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 24/26] qapi: Pseudo-type '**' is now unused, drop it Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 25/26] qapi: New QMP command query-qmp-schema for QMP introspection Markus Armbruster
2015-09-16 20:08   ` Eric Blake
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 26/26] qapi-introspect: Hide type names Markus Armbruster
2015-09-16 15:07 ` [Qemu-devel] [PATCH v8 00/26] qapi: QMP introspection Daniel P. Berrange
2015-09-17 16:16 ` Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150916145410.GK21184@redhat.com \
    --to=berrange@redhat.com \
    --cc=armbru@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.