qemu/qapi
Markus Armbruster 0b2c1beea4 keyval: Support lists
Additionally permit non-negative integers as key components.  A
dictionary's keys must either be all integers or none.  If all keys
are integers, convert the dictionary to a list.  The set of keys must
be [0,N].

Examples:

* list.1=goner,list.0=null,list.1=eins,list.2=zwei
  is equivalent to JSON [ "null", "eins", "zwei" ]

* a.b.c=1,a.b.0=2
  is inconsistent: a.b.c clashes with a.b.0

* list.0=null,list.2=eins,list.2=zwei
  has a hole: list.1 is missing

Similar design flaw as for objects: there is no way to denote an empty
list.  While interpreting "key absent" as empty list seems natural
(removing a list member from the input string works when there are
multiple ones, so why not when there's just one), it doesn't work:
"key absent" already means "optional list absent", which isn't the
same as "empty list present".

Update the keyval object visitor to use this a.0 syntax in error
messages rather than the usual a[0].

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1488317230-26248-25-git-send-email-armbru@redhat.com>
[Off-by-one fix squashed in, as per Kevin's review]
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
2017-03-07 16:07:48 +01:00
..
block-core.json -----BEGIN PGP SIGNATURE----- 2017-03-02 23:20:37 +00:00
block.json qmp-events: move 'DEVICE_TRAY_MOVED' doc to schema 2017-01-16 09:19:48 +01:00
common.json qmp-commands: move 'query-commands' doc to schema 2017-01-16 09:19:47 +01:00
crypto.json qapi: add some sections in docs 2017-01-16 09:15:25 +01:00
event.json qmp-events: fix GUEST_PANICKED description formatting 2017-03-03 16:40:03 +01:00
introspect.json qapi: Reorder doc comments for future doc generator 2017-01-16 09:15:25 +01:00
Makefile.objs qapi: rename *qmp-*-visitor* to *qobject-*-visitor* 2016-10-25 16:25:48 +02:00
opts-visitor.c qapi: Make input visitors detect unvisited list tails 2017-03-05 09:14:20 +01:00
qapi-clone-visitor.c qapi: rename *qmp-*-visitor* to *qobject-*-visitor* 2016-10-25 16:25:48 +02:00
qapi-dealloc-visitor.c qapi: Add new visit_free() function 2016-07-06 10:52:04 +02:00
qapi-util.c qapi: New parse_qapi_name() 2017-03-07 16:07:47 +01:00
qapi-visit-core.c qapi: Make input visitors detect unvisited list tails 2017-03-05 09:14:20 +01:00
qmp-dispatch.c qmp: Eliminate silly QERR_QMP_* macros 2017-03-05 09:14:19 +01:00
qmp-event.c qmp-event: Avoid qobject_from_jsonf("%"PRId64) 2016-12-05 17:09:34 +01:00
qmp-registry.c qapi: Support multiple command registries per program 2017-03-05 09:12:25 +01:00
qobject-input-visitor.c keyval: Support lists 2017-03-07 16:07:48 +01:00
qobject-output-visitor.c qapi: rename QmpOutputVisitor to QObjectOutputVisitor 2016-10-25 16:25:54 +02:00
rocker.json qmp-commands: move 'query-rocker-of-dpa-groups' doc to schema 2017-01-16 09:19:47 +01:00
string-input-visitor.c qapi: Make input visitors detect unvisited list tails 2017-03-05 09:14:20 +01:00
string-output-visitor.c qapi: Add new visit_complete() function 2016-07-06 10:52:04 +02:00
trace-events qapi: Make input visitors detect unvisited list tails 2017-03-05 09:14:20 +01:00
trace.json qmp-commands: move 'trace-event-set-state' doc to schema 2017-01-16 09:19:47 +01:00