On 19/09/2016 14:12, Daniel P. Berrange wrote:
> On Mon, Sep 19, 2016 at 12:58:30PM +0100, Daniel P. Berrange wrote:
>> The current -object command line syntax only allows for
>> creation of objects with scalar properties, or a list
>> with a fixed scalar element type. Objects which have
>> properties that are represented as structs in the QAPI
>> schema cannot be created using -object.
>> This is a design limitation of the way the OptsVisitor
>> is written. It simply iterates over the QemuOpts values
>> as a flat list. The support for lists is enabled by
>> allowing the same key to be repeated in the opts string.
>> It is not practical to extend the OptsVisitor to support
>> more complex data structures while also maintaining
>> the existing list handling behaviour that is relied upon
>> by other areas of QEMU.
>> Fortunately there is no existing object that implements
>> the UserCreatable interface that relies on the list
>> handling behaviour, so it is possible to swap out the
>> OptsVisitor for a different visitor implementation, so
>> -object supports non-scalar properties, thus leaving
>> other users of OptsVisitor unaffected.
> Urgh, I've just discovered that this is not in fact true.
> The 'memory-backend' object type uses uint16List which
> has the hacky list syntax
> -object memory-backend-ram,\
> So I'll need to figure out a way to preserve this syntax...
Is there a usecase for qdict_crumple without the following
de-stringification pass? If not, qdict_crumple could use a
StringInputVisitor on the values directly.