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