On 10/27/2015 01:52 AM, Markus Armbruster wrote: > Eric Blake <ebl...@redhat.com> writes: > >> Rather than storing a base class as a pointer to a box, just >> store the fields of that base class in the same order, so that >> a child struct can be directly cast to its parent. This gives >> less malloc overhead, less pointer dereferencing, and even less >> generated code. Compare to the earlier commit 1e6c1616a "qapi: >> Generate a nicer struct for flat unions" (although that patch >> had fewer places to change, as less of qemu was directly using >> qapi structs for flat unions). It also allows us to turn on >> automatic type-safe wrappers for upcasting to the base class >> of a struct. >> >> Changes to the generated code look like this in qapi-types.h: >> >> | struct SpiceChannel { >> |- SpiceBasicInfo *base; >> |+ /* Members inherited from SpiceBasicInfo: */ >> |+ char *host; >> |+ char *port; >> |+ NetworkAddressFamily family; >> |+ /* Own members: */ >> | int64_t connection_id; >> >> as well as added upcast functions like qapi_SpiceChannel_base(). > > "additional upcast functions" sounds better to my ears.
Indeed. > > Patch looks good. I can touch up the commit message in my tree. Yay - looks like we won't need a v12. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature