[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v9 22/37] qapi: Add visit_type_null() visitor
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v9 22/37] qapi: Add visit_type_null() visitor |
Date: |
Fri, 22 Jan 2016 18:00:47 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Eric Blake <address@hidden> writes:
> Right now, qmp-output-visitor happens to produce a QNull result
> if nothing is actually visited between the creation of the visitor
> and the request for the resulting QObject. A stronger protocol
> would require that a QMP output visit MUST visit something. But
> to still be able to produce a JSON 'null' output, we need a new
> visitor function that states our intentions.
Overdue. When we extended the json-parser to accept null, we neglected
to extend visitors accordingly. We need to:
* Extend the visitor core (this patch).
* Implement it in at least the visitors that aren't restricted to a
subset: dealloc (this patch), QMP input (next patch), QMP output
(patch after next, together with other stuff).
* Update users, if any.
* If QAPI had a 'null' type, we'd also have to use it in the generated
visitor functions. It doesn't. I think the 'any' type can hold a
null, but that's it. A 'null' type might be useful as an alternate
member type. We'll create one when we need it.
> This patch introduces the new visit_type_null() interface, and
> later patches will then wire it up into the qmp visitors.
>
> Signed-off-by: Eric Blake <address@hidden>
> Reviewed-by: Marc-André Lureau <address@hidden>
>
> ---
> v9: no change
> v8: rebase to 'name' motion
> v7: new patch, based on discussion about spapr_drc.c
> ---
> include/qapi/visitor-impl.h | 3 +++
> include/qapi/visitor.h | 8 ++++++++
> qapi/qapi-dealloc-visitor.c | 5 +++++
> qapi/qapi-visit-core.c | 5 +++++
> 4 files changed, 21 insertions(+)
>
> diff --git a/include/qapi/visitor-impl.h b/include/qapi/visitor-impl.h
> index aab46bc..8705136 100644
> --- a/include/qapi/visitor-impl.h
> +++ b/include/qapi/visitor-impl.h
> @@ -75,6 +75,9 @@ struct Visitor
> * visitors do not currently visit arbitrary types). */
> void (*type_any)(Visitor *v, const char *name, QObject **obj,
> Error **errp);
> + /* Must be provided to visit explicit null values (right now, only the
> + * dealloc visitor supports this). */
Will need updating to match whatever convention we pick in the previous
patch for documenting "mandatory to visit X", and the restrictions on
visitor use resulting from some of them not implementing it.
> + void (*type_null)(Visitor *v, const char *name, Error **errp);
>
> /* May be NULL; most useful for input visitors. */
> void (*optional)(Visitor *v, const char *name, bool *present);
[...]
- Re: [Qemu-devel] [PATCH v9 18/37] qapi: Drop unused error argument for list and implicit struct, (continued)
[Qemu-devel] [PATCH v9 17/37] qapi: Drop unused 'kind' for struct/enum visit, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 29/37] qapi: Eliminate empty visit_type_FOO_fields, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 27/37] qapi: Add type.is_empty() helper, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 37/37] qapi: Update docs to match recent generator changes, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 22/37] qapi: Add visit_type_null() visitor, Eric Blake, 2016/01/19
- Re: [Qemu-devel] [PATCH v9 22/37] qapi: Add visit_type_null() visitor,
Markus Armbruster <=
[Qemu-devel] [PATCH v9 25/37] spapr_drc: Expose 'null' in qom-get when there is no fdt, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 24/37] qmp: Tighten output visitor rules, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 31/37] qapi-visit: Unify struct and union visit, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 30/37] qapi: Canonicalize missing object to :empty, Eric Blake, 2016/01/19