qemu-patch-raspberry4/qapi
Paolo Bonzini 3a86a0fa76 qapi: untangle next_list
Right now, the semantics of next_list are complicated.  The caller must:

* call start_list

* call next_list for each element *including the first*

* on the first call to next_list, the second argument should point to
NULL and the result is the head of the list.  On subsequent calls,
the second argument should point to the last node (last result of
next_list) and next_list itself tacks the element at the tail of the
list.

This works for both input and output visitor, but having the visitor
write memory when it is only reading the list is ugly.  Plus, relying
on *list to detect the first call is tricky and undocumented.

We can initialize so->entry in next_list instead of start_list, leaving
it NULL in start_list.  This way next_list sees clearly whether it is
on the first call---as a bonus, it discriminates the cases based on
internal state of the visitor rather than external state.  We can
also pull the assignment of the list head from generated code up to
next_list.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
2012-03-27 09:14:19 -03:00
..
qapi-dealloc-visitor.c qapi: dealloc visitor, support freeing of nested lists 2011-10-04 11:00:46 -03:00
qapi-dealloc-visitor.h qapi: add QAPI dealloc visitor 2011-07-21 16:48:13 -03:00
qapi-types-core.h qapi: add code generation support for middle mode 2011-10-04 11:00:46 -03:00
qapi-visit-core.c qapi: allow sharing enum implementation across visitors 2012-02-21 10:21:05 +01:00
qapi-visit-core.h qapi: add QAPI visitor core 2011-07-21 16:48:13 -03:00
qapi-visit-impl.h qapi: allow sharing enum implementation across visitors 2012-02-21 10:21:05 +01:00
qmp-core.h guest agent: add supported command list to guest-info RPC 2011-12-12 17:06:21 -06:00
qmp-dispatch.c guest agent: add RPC blacklist command-line option 2011-12-12 17:06:21 -06:00
qmp-input-visitor.c qapi: untangle next_list 2012-03-27 09:14:19 -03:00
qmp-input-visitor.h qapi: add QMP input visitor 2011-07-21 16:48:13 -03:00
qmp-output-visitor.c qapi: fix double free in qmp_output_visitor_cleanup() 2012-03-27 09:11:00 -03:00
qmp-output-visitor.h qapi: add QMP output visitor 2011-07-21 16:48:13 -03:00
qmp-registry.c guest agent: add supported command list to guest-info RPC 2011-12-12 17:06:21 -06:00
string-input-visitor.c qapi: add string-based visitors 2012-02-21 10:21:05 +01:00
string-input-visitor.h qapi: add string-based visitors 2012-02-21 10:21:05 +01:00
string-output-visitor.c qapi: add string-based visitors 2012-02-21 10:21:05 +01:00
string-output-visitor.h qapi: add string-based visitors 2012-02-21 10:21:05 +01:00