qemu/include/qapi
Eric Blake 9812e7125b qapi: Add QAPI_LIST_PREPEND() macro
block.c has a useful macro QAPI_LIST_ADD() for inserting at the front
of any QAPI-generated list; move it from block.c to qapi/util.h so
more places can use it, including one earlier place in block.c, and
rename it to something more obvious (since we also have a lot of
places that append, rather than prepend, to a list).

There are many more places in the codebase that can benefit from using
the macro, but converting them will be left to later patches.

In theory, all QAPI list types are child classes of GenericList; but
in practice, that relationship is not explicitly spelled out in the C
type declarations (rather, it is something that happens implicitly due
to C compatible layouts), and the macro does not actually depend on
the GenericList type.  We considered moving GenericList from visitor.h
into util.h to group related code; however, such a move would be
awkward if we do not also move GenericAlternate.  Unfortunately,
moving GenericAlternate would introduce its own problems of
declaration circularity (qapi-builtin-types.h needs a complete
definition of QEnumLookup from util.h, but GenericAlternate needs a
complete definition of QType from qapi-builtin-types.h).

Suggested-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20201027050556.269064-3-eblake@redhat.com>
[eblake: s/ADD/PREPEND/ per suggestion by Markus]
2020-10-30 15:10:14 -05:00
..
qmp qmp: Move dispatcher to a coroutine 2020-10-09 07:08:20 +02:00
clone-visitor.h qapi: Make visitor functions taking Error ** return bool, not void 2020-07-10 15:18:08 +02:00
dealloc-visitor.h
error.h qapi/error: Check format string argument in error_*prepend() 2020-07-24 15:03:09 +02:00
opts-visitor.h Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
qmp-event.h qapi: Eliminate indirection through qmp_event_get_func_emit() 2019-01-24 10:01:05 +01:00
qobject-input-visitor.h Include qapi/qmp/qobject.h exactly where needed 2018-02-09 13:52:15 +01:00
qobject-output-visitor.h Include qapi/qmp/qobject.h exactly where needed 2018-02-09 13:52:15 +01:00
string-input-visitor.h qapi: Rewrite string-input-visitor's integer and list parsing 2018-12-13 19:10:06 +01:00
string-output-visitor.h
util.h qapi: Add QAPI_LIST_PREPEND() macro 2020-10-30 15:10:14 -05:00
visitor-impl.h qapi: Make visitor functions taking Error ** return bool, not void 2020-07-10 15:18:08 +02:00
visitor.h qapi: Make visitor functions taking Error ** return bool, not void 2020-07-10 15:18:08 +02:00