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 discriminator > 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. > > Signed-off-by: Wenchao Xia <xiaw...@linux.vnet.ibm.com> > --- > 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(-) > > 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: > > 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 ('type' is > -then no longer generated). The discriminator must always be a string field. > +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 will 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 <ebl...@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature