From: Eric Blake <eblake@redhat.com>
To: Markus Armbruster <armbru@redhat.com>, qemu-devel@nongnu.org
Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com,
ehabkost@redhat.com
Subject: Re: [Qemu-devel] [RFC PATCH] qapi: Rename simple union's generated tag member to type
Date: Wed, 14 Oct 2015 07:16:18 -0600 [thread overview]
Message-ID: <561E55A2.6000401@redhat.com> (raw)
In-Reply-To: <1444307217-16306-1-git-send-email-armbru@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 3628 bytes --]
On 10/08/2015 06:26 AM, Markus Armbruster wrote:
> Struct and union type members are generally named alike in QMP and C,
> except for a simple union's implicit tag member, which is "type" in
> QMP, and "kind" in C. Can't change QMP, so rename it in C.
>
> Since the implicit enumeration type is still called *Kind, this
> doesn't clean up the type vs. kind mess completely.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
...
> scripts/qapi-types.py | 12 ++++--------
> scripts/qapi-visit.py | 15 ++++-----------
> tests/test-qmp-commands.c | 2 +-
> tests/test-qmp-input-visitor.c | 30 +++++++++++++++---------------
> tests/test-qmp-output-visitor.c | 8 ++++----
> tpm.c | 2 +-
> ui/input-keymap.c | 10 +++++-----
> ui/input-legacy.c | 2 +-
> ui/input.c | 22 +++++++++++-----------
> util/qemu-sockets.c | 12 ++++++------
> 33 files changed, 113 insertions(+), 123 deletions(-)
This touches a lot of files all in one commit (both your RFC and my v5
version), and then I get to touch the same files all over again when I
swap to a named rather than anonymous union in the C struct. So here's
what I'm currently playing with:
first patch: hack _just_ scripts/qapi*py to turn:
{ 'union':'Foo', 'data':{'a':'int','b':'bool'}}
into:
struct Foo {
union {
FooKind type;
FooKind kind; /* temporary hack */
};
union { /* union tag is @type */
void *data; /* will go away much later in series */
int64_t a;
bool b;
union {
void *data;
int64_t a;
int b;
} u;
};
};
so that old code accessing foo->kind and foo->a just works, but also
leaving the door open to access foo->type and foo->u.a. Then a series
of patches grouped by logical file sets (so no one patch is too huge to
review, and spreading the load among maintainers), and a final patch to
scripts/qapi*.py to get to the desired:
struct Foo {
FooKind type;
union { /* union tag is @type */
void *data; /* will go away much later in series */
int64_t a;
bool b;
} u;
};
at which point we've gotten rid of any collisions between tag value
(branch names) and QMP names, at the possible expense of a new collision
with 'u'. I'm also beefing up the testsuite and check_name() function
(or maybe somewhere else, still haven't actually written that part of my
planned series) to reject 'u' and anything spelled 'has_*' as member
names, to proactively avoid the need to worry about collisions with 'u'
or the added members for optional fields. I'll probably also reject
'*List' as a user-supplied type name, addressing the comment just barely
added in current qapi-next that we don't have a reserved namespace for
arrays.
The collision with 'data' is harder; I can't remove it until we delete
visit_start_union()/visit_end_union() which starts to get in the mess of
patches that work with qapi visitor interfaces, so that will be in a
later subset.
It may be a day or two before I can post the pending work. Meanwhile, I
previously posted subset C which is somewhat orthogonal (not sure if it
needs any minor rebasing to apply against current qapi-next), if you
want to dive into reviewing that, instead of waiting:
https://lists.gnu.org/archive/html/qemu-devel/2015-10/msg01980.html
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
next prev parent reply other threads:[~2015-10-14 13:16 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-04 3:40 [Qemu-devel] [PATCH v7 00/14] post-introspection cleanups, subset B Eric Blake
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 01/14] qapi: Use predicate callback to determine visit filtering Eric Blake
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 02/14] qapi: Prepare for errors during check() Eric Blake
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 03/14] qapi: Drop redundant alternate-good test Eric Blake
2015-10-07 16:15 ` Markus Armbruster
2015-10-07 16:33 ` Eric Blake
2015-10-13 8:12 ` Markus Armbruster
2015-10-13 12:31 ` Eric Blake
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 04/14] qapi: Don't use info as witness of implicit object type Eric Blake
2015-10-07 16:27 ` Markus Armbruster
2015-10-09 22:41 ` Eric Blake
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 05/14] qapi: Lazy creation of array types Eric Blake
2015-10-07 16:38 ` Markus Armbruster
2015-10-10 20:16 ` Eric Blake
2015-10-12 8:24 ` Markus Armbruster
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 06/14] qapi: Create simple union type member earlier Eric Blake
2015-10-07 16:44 ` Markus Armbruster
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 07/14] qapi: Move union tag quirks into subclass Eric Blake
2015-10-07 16:11 ` [Qemu-devel] [PATCH] fixup to " Eric Blake
2015-10-08 12:25 ` [Qemu-devel] [PATCH v7 07/14] " Markus Armbruster
2015-10-08 15:02 ` Eric Blake
2015-10-08 12:26 ` [Qemu-devel] [RFC PATCH] qapi: Rename simple union's generated tag member to type Markus Armbruster
2015-10-08 14:56 ` Eric Blake
2015-10-14 13:16 ` Eric Blake [this message]
2015-10-14 16:04 ` Markus Armbruster
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 08/14] qapi: Track location that created an implicit type Eric Blake
2015-10-08 14:19 ` Markus Armbruster
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 09/14] qapi: Track owner of each object member Eric Blake
2015-10-09 13:17 ` Markus Armbruster
2015-10-09 14:30 ` Eric Blake
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 10/14] qapi: Detect collisions in C member names Eric Blake
2015-10-09 14:11 ` Markus Armbruster
2015-10-09 14:33 ` Eric Blake
2015-10-12 8:34 ` Markus Armbruster
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 11/14] qapi: Move duplicate member checks to schema check() Eric Blake
2015-10-12 15:53 ` Markus Armbruster
2015-10-12 16:22 ` Eric Blake
2015-10-13 4:10 ` Eric Blake
2015-10-13 7:08 ` Markus Armbruster
2015-10-13 12:46 ` Eric Blake
2015-10-13 15:39 ` Markus Armbruster
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 12/14] qapi: Move duplicate enum value " Eric Blake
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 13/14] qapi: Add test for alternate branch 'kind' clash Eric Blake
2015-10-04 3:41 ` [Qemu-devel] [PATCH v7 14/14] qapi: Detect base class loops Eric Blake
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=561E55A2.6000401@redhat.com \
--to=eblake@redhat.com \
--cc=armbru@redhat.com \
--cc=ehabkost@redhat.com \
--cc=marcandre.lureau@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.