On 07/14/2016 08:16 AM, Daniel P. Berrange wrote: > Add a qmp_mixed_input_visitor_new() method which returns > a QMP input visitor that accepts either strings or the > native data types. > > Signed-off-by: Daniel P. Berrange <[email protected]> > --- > > NB, just a demo - this should have tests added before submitting > for real. >
>
> +static void qmp_input_type_int64_mixed(Visitor *v, const char *name, int64_t
> *obj,
> + Error **errp)
> +{
> + QmpInputVisitor *qiv = to_qiv(v);
> + QObject *qobj = qmp_input_get_object(qiv, name, true);
This consumes the key out of the QDict input stream...
> +
> + if (qobj && qobj->type == QTYPE_QSTRING) {
> + qmp_input_type_int64_str(v, name, obj, errp);
then calls a helper function that also wants to consume the key. You'll
have to use qmp_input_get_object(,false) for this to work (in other
words, do a peek instead of consume when deciding which other helper to
use).
> +
> +Visitor *qmp_mixed_input_visitor_new(QObject *obj, bool strict)
> +{
I guess it's not too hard to generate 'qmp_mixed_input_visitor_new'
instead of 'qmp_input_visitor_new' when 'autocast':true is set in QAPI,
so that's a minor tweak to my series. Your version also has the benefit
of not changing all existing callers to add another parameter.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
