From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56245) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VrTSG-00060I-K0 for qemu-devel@nongnu.org; Fri, 13 Dec 2013 09:11:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VrTSC-0008JR-B2 for qemu-devel@nongnu.org; Fri, 13 Dec 2013 09:11:00 -0500 Received: from mx1.redhat.com ([209.132.183.28]:26602) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VrTSC-0008JM-3L for qemu-devel@nongnu.org; Fri, 13 Dec 2013 09:10:56 -0500 Message-ID: <52AB155E.4090209@redhat.com> Date: Fri, 13 Dec 2013 07:10:38 -0700 From: Eric Blake MIME-Version: 1.0 References: <1386740912-1655-1-git-send-email-xiawenc@linux.vnet.ibm.com> <1386740912-1655-7-git-send-email-xiawenc@linux.vnet.ibm.com> In-Reply-To: <1386740912-1655-7-git-send-email-xiawenc@linux.vnet.ibm.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="hOGNpfWsb7X3BiTknnvSSlnaiA7U6vKn8" Subject: Re: [Qemu-devel] [PATCH V4 6/9] qapi script: support pre-defined enum type as discriminator in union List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wenchao Xia , qemu-devel@nongnu.org Cc: kwolf@redhat.com, mdroth@linux.vnet.ibm.com, armbru@redhat.com, lcapitulino@redhat.com This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --hOGNpfWsb7X3BiTknnvSSlnaiA7U6vKn8 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 12/10/2013 10:48 PM, Wenchao Xia wrote: > By default, any union will automatically generate a enum type as > "[UnionName]Kind" in C code, and it is duplicated when the discriminato= r > is specified as a pre-defined enum type in schema. After this patch, > the pre-defined enum type will be really used as the switch case > condition in generated C code, if discriminator is an enum field. >=20 > Signed-off-by: Wenchao Xia > --- > docs/qapi-code-gen.txt | 8 ++++++-- > scripts/qapi-types.py | 18 ++++++++++++++---- > scripts/qapi-visit.py | 23 ++++++++++++++++------- > scripts/qapi.py | 4 +++- > 4 files changed, 39 insertions(+), 14 deletions(-) >=20 > diff --git a/docs/qapi-code-gen.txt b/docs/qapi-code-gen.txt > index 0728f36..f00640b 100644 > --- a/docs/qapi-code-gen.txt > +++ b/docs/qapi-code-gen.txt > @@ -123,11 +123,15 @@ And it looks like this on the wire: > =20 > Flat union types avoid the nesting on the wire. They are used whenever= a > specific field of the base type is declared as the discriminator ('typ= e' is > -then no longer generated). The discriminator must always be a string f= ield. > +then no longer generated). The discriminator can be a string field or = a > +predefined enum field. If it is a string field, a hidden enum type wil= l be > +generated as "[UNION_NAME]Kind". If it is an enum field, compile time = check s/compile/a compile/ Minor enough that I'm okay giving: Reviewed-by: Eric Blake --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --hOGNpfWsb7X3BiTknnvSSlnaiA7U6vKn8 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.15 (GNU/Linux) Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJSqxVeAAoJEKeha0olJ0NqCa8H/3ZBxRYuHyT448Jq5fhMrN0P v1oXn+BqhZ0vSVM88UBYe0ayszV/FCgLdGKS+Cj49kytk43kMsDLBsJDALPMvLFT R/7XwPocb6Hz9Gcg/PwLe5LXasrq2mZXWO6nnUYkRK/Zt3Yfs2XGngDx9/o11ONl LD4xQj6r9jZZI2pIjO3pO+wuM44NTVrRIPykLJe+WJRLzenWJRkiw/50OMaLOM4x 5hxKvqi/qyjufi2h9TeEx8O9C1+L6UKLTDjTxYz4GfD3vxlFA9eCQ+pKKpEqwbmN CuElj5KeyYOPcKqZkOQLa7gxiyGKDVJl9WAs+10JLeN4J2oc6Dyobh3c4nTLd/I= =2L60 -----END PGP SIGNATURE----- --hOGNpfWsb7X3BiTknnvSSlnaiA7U6vKn8--