[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor |
Date: |
Mon, 02 May 2016 17:00:39 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Eric Blake <address@hidden> writes:
> We have several places that want to go from qapi to JSON; right now,
> they have to create an intermediate QObject to do the work. That
> also has the drawback that the JSON formatting of a QDict will
> rearrange keys (according to a deterministic, but unpredictable,
> hash), when humans have an easier time if dicts are produced in
> the same order as the qapi type.
>
> For these reasons, it is time to add a new JSON output visitor.
> This patch just adds the basic visitor and tests that it works;
> later patches will add pretty-printing, and convert clients to
> use the visitor.
>
> Design choices: Unlike the QMP output visitor, the JSON visitor
> refuses to visit a required string with a NULL value (abort), as
> well as a non-finite number (raises an error message). Reusing
> QString to grow the contents means that we easily share code with
> both qobject-json.c and qjson.c; although it might be nice to
> enhance things to take an optional output callback function so
> that the output can truly be streamed instead of collected in
> memory.
>
> Signed-off-by: Eric Blake <address@hidden>
>
> ---
> v3: retitle, rebase to master, minor cleanups
> v2: rebase to qapi subset E v8; add test of error outputting
> infinity; use unsigned depth
> ---
> include/qapi/visitor.h | 20 +-
> include/qapi/json-output-visitor.h | 29 +++
> qapi/json-output-visitor.c | 202 ++++++++++++++++++
> tests/test-json-output-visitor.c | 418
> +++++++++++++++++++++++++++++++++++++
> qapi/Makefile.objs | 2 +-
> tests/.gitignore | 1 +
> tests/Makefile | 4 +
> 7 files changed, 665 insertions(+), 11 deletions(-)
> create mode 100644 include/qapi/json-output-visitor.h
> create mode 100644 qapi/json-output-visitor.c
> create mode 100644 tests/test-json-output-visitor.c
>
> diff --git a/include/qapi/visitor.h b/include/qapi/visitor.h
> index a430c19..e8a4403 100644
> --- a/include/qapi/visitor.h
> +++ b/include/qapi/visitor.h
> @@ -26,16 +26,16 @@
> *
> * There are three kinds of visitor classes: input visitors (QMP,
> * string, and QemuOpts) parse an external representation and build
> - * the corresponding QAPI graph, output visitors (QMP and string) take
> - * a completed QAPI graph and generate an external representation, and
> - * the dealloc visitor can take a QAPI graph (possibly partially
> - * constructed) and recursively free its resources. While the dealloc
> - * and QMP input/output visitors are general, the string and QemuOpts
> - * visitors have some implementation limitations; see the
> - * documentation for each visitor for more details on what it
> - * supports. Also, see visitor-impl.h for the callback contracts
> - * implemented by each visitor, and docs/qapi-code-gen.txt for more
> - * about the QAPI code generator.
> + * the corresponding QAPI graph, output visitors (QMP, string, and
> + * JSON) take a completed QAPI graph and generate an external
> + * representation, and the dealloc visitor can take a QAPI graph
> + * (possibly partially constructed) and recursively free its
> + * resources. While the dealloc and QMP input/output visitors are
and the JSON output visitor?
> + * general, the string and QemuOpts visitors have some implementation
> + * limitations; see the documentation for each visitor for more
> + * details on what it supports. Also, see visitor-impl.h for the
> + * callback contracts implemented by each visitor, and
> + * docs/qapi-code-gen.txt for more about the QAPI code generator.
> *
> * All QAPI types have a corresponding function with a signature
> * roughly compatible with this:
[...]
- Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor, Markus Armbruster, 2016/05/02
- Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor, Eric Blake, 2016/05/02
- Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor, Markus Armbruster, 2016/05/03
- Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor, Markus Armbruster, 2016/05/04
- Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor, Eric Blake, 2016/05/06
- Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor, Markus Armbruster, 2016/05/06
- Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor, Eric Blake, 2016/05/06
- Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor, Eric Blake, 2016/05/10
Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor, Eric Blake, 2016/05/18
- Re: [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor,
Markus Armbruster <=