From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50619) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WIi2w-0005cZ-TC for qemu-devel@nongnu.org; Wed, 26 Feb 2014 12:13:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WIi2o-0006iN-PD for qemu-devel@nongnu.org; Wed, 26 Feb 2014 12:13:26 -0500 Received: from mx1.redhat.com ([209.132.183.28]:10347) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WIi2o-0006i2-Gi for qemu-devel@nongnu.org; Wed, 26 Feb 2014 12:13:18 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1QHDFHT000792 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 26 Feb 2014 12:13:15 -0500 Message-ID: <530E2152.4060901@redhat.com> Date: Wed, 26 Feb 2014 18:16:02 +0100 From: Max Reitz MIME-Version: 1.0 References: <1393006301-22514-1-git-send-email-mreitz@redhat.com> <5307D40F.4050104@redhat.com> In-Reply-To: <5307D40F.4050104@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 0/3] Extract non-QDicts in qdict_array_split() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake , qemu-devel@nongnu.org Cc: Kevin Wolf , Stefan Hajnoczi On 21.02.2014 23:32, Eric Blake wrote: > On 02/21/2014 11:11 AM, Max Reitz wrote: >> Currently, qdict_array_split() splits a QDict like >> { "0.a": 42, "1": 23, "2.b": 84 } >> into the QList >> [ { "a": 42 } ] >> with the QDict still being >> { "1": 23, "2.b": 84 } >> >> However, it makes more sense to create the QList >> [ { "a": 42 }, 23, { "b": 84 } ] >> and having emptied the QDict. >> >> This is implemented by this series. >> > Question - in the code, we have a comment: > > /** > * qdict_flatten(): For each nested QDict with key x, all fields with key y > * are moved to this QDict and their key is renamed to "x.y". For each > nested > * QList with key x, the field at index y is moved to this QDict with > the key > * "x.y" (i.e., the reverse of what qdict_array_split() does). > * This operation is applied recursively for nested QDicts and QLists. > */ > > With your new split rules, do we need a followup patch to qdict_flatten > that can regenerate the QDict with "%u" keys for non-dict members of the > QList? If you want qdict_flatten() to return a QDict with "%u" keys, you'd have to specify a QList. However, this would no longer be a qdict_flatten(), but rather a qlist_flatten(). It would be easy to make use of qdict_flatten_qdict() and qdict_flatten_qlist() to implement qlist_flatten() as well, but since there is currently no such function, apparently there is no need for it. Of course, I could just implement it preemptively, but then I'd probably be asked for its purpose. ;-) Max