From: Eric Blake <eblake@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, Michael Roth <mdroth@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH] qapi-visit: Honor prefix of discriminator enum
Date: Mon, 7 Mar 2016 16:23:42 -0700 [thread overview]
Message-ID: <56DE0D7E.6020404@redhat.com> (raw)
In-Reply-To: <87h9h7iltx.fsf@blackfin.pond.sub.org>
[-- Attachment #1: Type: text/plain, Size: 2086 bytes --]
On 02/17/2016 05:05 AM, Markus Armbruster wrote:
> Let's check for completeness. Calls of c_enum_const():
>
> * QAPISchemaEnumType.c_null() and (with your patch) gen_visit_union()
> call it like
>
> c_enum_const(TYPE.name, MEMBER, TYPE.prefix)
>
> where MEMBER is a member of enumeration type TYPE.
>
> As your patch shows, the prefix is easy to forget. A safer function
> would take just TYPE and MEMBER:
>
> TYPE.c_member(MEMBER)
>
I took a look at this email again today, and while it still sounds like
a nice action, I wasn't able to get it done quickly (certainly not 2.6
material, at any rate).
> * gen_event_send() calls
>
> c_enum_const(event_enum_name, name)
>
> where name is member of the enum type named event_enum_name. That's
> okay because the type is auto-generated without a prefix. Regardless,
> we could do something like
>
> schema.lookup_type(event_enum_name).c_member(name)
>
> Requires actually constructing the type, which is probably a good idea
> anyway, because it gets us the necessary collision checks. Replacing
> global event_enum_name by event_enum_type would be nice then. Out of
> scope for this patch.
>
> * gen_enum_lookup() and gen_enum() work on name, values, prefix instead
> of the type. I figure they do to support qapi-event.py. If we clean
> it up to create the type, these functions could use the type as well,
> and then c_enum_const() could be dropped.
Well, they also do it to support qapi-types.py, where the
visit_enum_type() visitor callback has already broken things out into
name/values/prefix instead of providing a type, and where we don't have
easy access to the schema to do schema.lookup_type(name).
As I've worked more with the visitors, I'm really wondering if
visit_enum_type(self, type, info) would be a saner callback interface
than visit_enum_type(self, type.name, info, type.values, type.prefix)
--
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:[~2016-03-07 23:23 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-16 23:39 [Qemu-devel] [PATCH] qapi-visit: Honor prefix of discriminator enum Eric Blake
2016-02-17 12:05 ` Markus Armbruster
2016-02-17 13:43 ` Eric Blake
2016-03-07 23:23 ` Eric Blake [this message]
2016-03-08 8:28 ` 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=56DE0D7E.6020404@redhat.com \
--to=eblake@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.