[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v14 10/21] qapi: permit auto-creating nested str
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v14 10/21] qapi: permit auto-creating nested structs |
Date: |
Wed, 12 Oct 2016 16:12:24 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
"Daniel P. Berrange" <address@hidden> writes:
> Some of the historical command line opts that had their
> keys in in a completely flat namespace are now represented
> by QAPI schemas that use a nested structs. When converting
> the QemuOpts to QObject, there is no information about
> compound types available, so the QObject will be completely
> flat, even after the qdict_crumple() call. So when starting
> a struct, we may not have a QDict available in the input
> data, so we auto-create a QDict containing all the currently
> unvisited input data keys. Not all historical command line
> opts require this, so the behaviour is opt-in, by specifying
> how many levels of structs are permitted to be auto-created.
>
> Note that this only works if the child struct is the last
> field to the visited in the parent struct. This is always
> the case for currently existing legacy command line options.
>
> The example is the NetLegacy type which has 3 levels of
> structs. The modern way to represent this in QemuOpts would
> be the dot-separated component approach
>
> -net vlan=1,id=foo,name=bar,opts.type=tap,\
> opts.data.fd=3,opts.data.script=ifup
>
> The legacy syntax will just be presenting
>
> -net vlan=1,id=foo,name=bar,type=tap,fd=3,script=ifup
>
> So we need to auto-create 3 levels of struct when visiting.
>
> The implementation here will enable visiting in both the
> modern and legacy syntax, compared to OptsVisitor which
> only allows the legacy syntax.
>
> Signed-off-by: Daniel P. Berrange <address@hidden>
> ---
> include/qapi/qobject-input-visitor.h | 22 +++++-
> qapi/qobject-input-visitor.c | 59 ++++++++++++++--
> tests/test-qobject-input-visitor.c | 130
> ++++++++++++++++++++++++++++++++---
> 3 files changed, 194 insertions(+), 17 deletions(-)
>
> diff --git a/include/qapi/qobject-input-visitor.h
> b/include/qapi/qobject-input-visitor.h
> index 1809f48..94051f3 100644
> --- a/include/qapi/qobject-input-visitor.h
> +++ b/include/qapi/qobject-input-visitor.h
> @@ -45,7 +45,7 @@ Visitor *qobject_input_visitor_new(QObject *obj, bool
> strict);
> * If @autocreate_list is true, then as an alternative to a normal QList,
> * list values can be stored as a QString or QDict instead, which will
> * be interpreted as representing single element lists. This should only
> - * by used if compatibility is required with the OptsVisitor which allowed
> + * be used if compatibility is required with the OptsVisitor which allowed
> * repeated keys, without list indexes, to represent lists. e.g. set this
> * to true if you have compatibility requirements for
> *
Typo introduced in the previous patch, please fix it there.
Skipping the rest of this patch until it's clear we need it.
[...]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH v14 10/21] qapi: permit auto-creating nested structs,
Markus Armbruster <=