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,\ > id=ram-node2,size=24578621440,policy=bind,\ > host-nodes=1-2,host-nodes=5,host-nodes=7, > > 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. Paolo