From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59853) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5BrK-00038I-5h for qemu-devel@nongnu.org; Wed, 17 Jun 2015 07:50:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z5BrI-0000Tf-Op for qemu-devel@nongnu.org; Wed, 17 Jun 2015 07:50:22 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52217) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5BrI-0000TX-HG for qemu-devel@nongnu.org; Wed, 17 Jun 2015 07:50:20 -0400 From: Markus Armbruster References: <88a1cc0775d3d4f5262b31b9452f8acccc6bbb41.1434458391.git.DirtY.iCE.hu@gmail.com> <87oakeg4eo.fsf@blackfin.pond.sub.org> <1434530501.5549.23.camel@redhat.com> <5581537F.3040005@gmail.com> Date: Wed, 17 Jun 2015 13:50:17 +0200 In-Reply-To: <5581537F.3040005@gmail.com> (=?utf-8?B?IkvFkXbDoWfDsyBab2x0?= =?utf-8?B?w6FuIidz?= message of "Wed, 17 Jun 2015 13:01:19 +0200") Message-ID: <87vbem7dvq.fsf@blackfin.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v2 2/6] qapi: support nested structs in OptsVisitor List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?utf-8?B?S8WRdsOhZ8OzIFpvbHTDoW4=?= Cc: Michael Roth , =?utf-8?B?TMOhc3psw7M=?= Ersek , Gerd Hoffmann , qemu-devel@nongnu.org "K=C5=91v=C3=A1g=C3=B3 Zolt=C3=A1n" writes: > 2015-06-17 10:41 keltez=C3=A9ssel, Gerd Hoffmann =C3=ADrta: >> On Mi, 2015-06-17 at 09:50 +0200, Markus Armbruster wrote: >>> Copying L=C3=A1szl=C3=B3 because his fingerprints are on OptsVisitor. >>> >>> "K=C5=91v=C3=A1g=C3=B3, Zolt=C3=A1n" writes: >>> >>>> The current OptsVisitor flattens the whole structure, if there are >>>> same named >>>> fields under different paths (like `in' and `out' in `Audiodev'), >>>> the current >>>> visitor can't cope with them (for example setting >>>> frequency=3D44100' will set the >>>> in's frequency to 44100 and leave out's frequency unspecified). >>>> >>>> This patch fixes it, by the following changes: >>>> 1) Specifying just the field name will apply to all fields that has the >>>> specified name (this means it would set both in's and out's freque= ncy to >>>> 44100 in the above example). >>>> 2) Optionally user can specify the path in the hierarchy. Names >>>> are separated by >>>> a dot (e.g. `in.frequency', `foo.bar.something', etc). The user ne= ed not >>>> specify the whole path, only the last few components >>>> (i.e. `bar.something' is >>>> equivalent to `foo.bar.something' if only `foo' has a `bar' >>>> field). This way >>>> 1) is just a special case of this when only the last component >>>> is specified. >>>> 3) In case of an ambiguity (e.g >>>> frequency=3D44100,in.frequency=3D8000') the longest >>>> matching (the most specific) path wins (so in this example, >>>> in's frequency >>>> would become 8000, because `in.frequency' is more specific >>>> that `frequency', >>>> and out's frequency would become 44100, because only >>>> frequency' matches it). >>> >>> Can you explain why the complexity is needed, i.e. why we can't just >>> require full paths always? >> >> Keeping the short names is required for -netdev backward compatibility. >> >> Restricting to short or full (i.e. something=3D or foo.bar.something=3D,= but >> disallow bar.something=3D) should not be a problem. I'm not sure this >> simplifies things much though. We have to build the full path anyway, >> and I think bar.something=3D is just a convenient thing we get almost for >> free ... > > With the current implementation you can specify (see my previous > patch) in.try-poll=3Doff in case of alsa. If we would need full paths, > it would look like opts.data.in.try-poll=3Doff, which is probably not > something we want. I agree opts.data.in.try-poll would be an ugly user interface. But instead of hiding opts.data. with a convenience feature, I'd like us to investigate avoiding it altogether.