On 02/23/2016 08:18 AM, Eric Blake wrote: >> >> I could visit_type_QCryptoBlockOptionsLUKS_fields(v, opts.u.luks, errp) >> but the '_fields' methods are all declared static in qapi-visit.c >> preventing their use. >> >> IMHO, now that QAPI inlines the flat unions, we should be making >> the _fields() methods public. > > But my suggestion would just be a hack. Yours makes more sense in the > long run, so I'll go ahead and propose that patch.
Another alternative, but not my preference (mentioning only for completeness): We could change the contract of visit_type_FOO(&obj) to say that if it points to non-NULL, we just visit the fields in place. All callers would then be required to set *obj = NULL prior to visit_type_FOO(&obj) for existing semantics, and you would set *obj = &parent.u.luks for new semantics. But this would entail an audit of existing callers (too many are passing uninitialized pointers, which must now be initialized), and feels a bit too complex. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature