From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35283) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmLuw-0004Tk-Kb for qemu-devel@nongnu.org; Wed, 14 Oct 2015 09:16:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZmLuq-0004UX-Na for qemu-devel@nongnu.org; Wed, 14 Oct 2015 09:16:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52828) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmLuq-0004UT-Fe for qemu-devel@nongnu.org; Wed, 14 Oct 2015 09:16:24 -0400 References: <1443930073-19359-8-git-send-email-eblake@redhat.com> <1444307217-16306-1-git-send-email-armbru@redhat.com> From: Eric Blake Message-ID: <561E55A2.6000401@redhat.com> Date: Wed, 14 Oct 2015 07:16:18 -0600 MIME-Version: 1.0 In-Reply-To: <1444307217-16306-1-git-send-email-armbru@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="nfVpWnr2TvmMFLX7wTpgMBIaHauwf5M2T" Subject: Re: [Qemu-devel] [RFC PATCH] qapi: Rename simple union's generated tag member to type List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster , qemu-devel@nongnu.org Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com, ehabkost@redhat.com This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --nfVpWnr2TvmMFLX7wTpgMBIaHauwf5M2T Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable 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. >=20 > Since the implicit enumeration type is still called *Kind, this > doesn't clean up the type vs. kind mess completely. >=20 > Signed-off-by: Markus Armbruster > --- =2E.. > 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 --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --nfVpWnr2TvmMFLX7wTpgMBIaHauwf5M2T Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJWHlWiAAoJEKeha0olJ0NqbSYH/0ALdOMyifi13cL6uZgqRCNg loK80dHl1vYu516Oxi6KMiEK1yvLxYb9Ptmz3Bv9rOJ6WjefucPUHCbuvVwZ9VMl WcDvMAqsg3OU0JgD6T+5W9VhzP6j96PZB6Anh/n6eKTpWYEz+83qglHZQkywrYGp 7xKmf9/9pZ6SHvcU9gft5WrWZsn26WaK9TuVx26rsQHcfXl61AgC04uoLKN2MiZf JT28jo52jIiOgkCPRsfTfg9PPCYBpQ5UW6yDsapwy9L8ANvfNK12Ug7+7DbOhbmh Msje+kDXGkWrpmZrQmKOS13CkYLJn4DUkKpuNS/nNPy3nicz0eSlDeXhGl9LdoA= =/IL3 -----END PGP SIGNATURE----- --nfVpWnr2TvmMFLX7wTpgMBIaHauwf5M2T--