qemu/include/qemu
Eric Blake 7264f5c50c qapi: Convert QType into QAPI built-in enum type
What's more meta than using qapi to define qapi? :)

Convert QType into a full-fledged[*] builtin qapi enum type, so
that a subsequent patch can then use it as the discriminator
type of qapi alternate types.  Fortunately, the judicious use of
'prefix' in the qapi definition avoids churn to the spelling of
the enum constants.

To avoid circular definitions, we have to flip the order of
inclusion between "qobject.h" vs. "qapi-types.h".  Back in commit
28770e0, we had the latter include the former, so that we could
use 'QObject *' for our implementation of 'any'.  But that usage
also works with only a forward declaration, whereas the
definition of QObject requires QType to be a complete type.

[*] The type has to be builtin, rather than declared in
qapi/common.json, because we want to use it for alternates even
when common.json is not included. But since it is the first
builtin enum type, we have to add special cases to qapi-types
and qapi-visit to only emit definitions once, even when two
qapi files are being compiled into the same binary (the way we
already handled builtin list types like 'intList').  We may
need to revisit how multiple qapi files share common types,
but that's a project for another day.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1449033659-25497-4-git-send-email-eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2015-12-17 08:21:28 +01:00
..
acl.h misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
atomic.h atomics: add explicit compiler fence in __atomic memory barriers 2015-06-05 19:45:13 +02:00
bitmap.h bitmap: add atomic test and clear 2015-06-05 17:10:00 +02:00
bitops.h bitmap: add atomic set functions 2015-06-05 17:10:00 +02:00
bswap.h cpu_ldst.h, cpu-all.h, bswap.h: Update documentation on ld/st accessors 2015-01-20 15:19:35 +00:00
buffer.h buffer: allow a buffer to shrink gracefully 2015-11-05 09:09:58 +01:00
compatfd.h util: Remove unused functions 2015-04-30 16:05:48 +03:00
compiler.h compiler.h: Use glue() in QEMU_BUILD_BUG_ON define 2015-08-19 16:29:53 +01:00
config-file.h qemu-option: introduce qemu_find_opts_singleton 2014-04-27 13:04:18 +04:00
coroutine_int.h coroutine: move into libqemuutil.a library 2015-10-20 14:59:04 +01:00
coroutine.h coroutine: move into libqemuutil.a library 2015-10-20 14:59:04 +01:00
crc32c.h include/qemu/crc32c.h: Rename include guards to match filename 2014-02-26 17:20:07 +00:00
envlist.h misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
error-report.h qemu-error: Add error_vreport() 2014-10-09 15:36:15 +02:00
event_notifier.h util: const event_notifier_get_fd() argument 2015-10-24 18:02:49 +02:00
fifo8.h util/fifo8: implement push/pop of multiple bytes 2014-02-08 14:50:48 +00:00
fprintf-fn.h Stop including qemu-common.h in memory.h 2015-07-06 14:59:09 +02:00
hbitmap.h util/hbitmap: Add an API to reset all set bits in hbitmap 2015-06-23 15:06:16 +01:00
host-utils.h host-utils: Add revbit functions 2015-09-15 07:45:33 -07:00
int128.h int128: Add int128_exts64() 2014-05-30 13:00:28 -06:00
iov.h iov: don't touch iov in iov_send_recv() 2015-06-23 16:05:34 +01:00
log.h qemu-log: remove -d ioport 2015-11-04 15:02:30 +01:00
main-loop.h iohandler: Use aio API 2015-09-07 18:14:03 +02:00
memfd.h vhost: add migration block if memfd failed 2015-10-22 14:34:49 +03:00
mmap-alloc.h util/mmap-alloc: fix hugetlb support on ppc64 2015-12-02 22:38:23 +02:00
module.h module: implement module loading 2014-02-20 13:14:18 +01:00
notify.h notify: add NotiferWithReturn so notifier list can abort 2013-06-28 09:20:26 +02:00
option_int.h QemuOpts: change opt->name|str from (const char *) to (char *) 2014-06-16 17:23:20 +08:00
option.h typedef: add typedef for QemuOpts 2015-09-25 12:04:45 +02:00
osdep.h osdep: Change default value of qemu_hw_version() to "2.5+" 2015-11-25 13:42:37 +02:00
queue.h block: Remove bdrv_swap() 2015-10-16 15:34:30 +02:00
range.h Introduce signed range. 2014-06-19 18:44:19 +03:00
ratelimit.h aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
rcu_queue.h rcu: introduce RCU-enabled QLIST 2015-02-16 17:30:19 +01:00
rcu.h rcu: fix comment with s/rcu_gp_lock/rcu_registry_lock/ 2015-09-09 15:34:54 +02:00
readline.h readline: Add missing GCC_FMT_ATTR 2014-02-01 13:46:06 +04:00
rfifolock.h rfifolock: add recursive FIFO lock 2014-03-13 14:42:21 +01:00
seqlock.h seqlock: read sequence number atomically 2015-09-07 18:12:39 +02:00
sockets.h sockets: move qapi_copy_SocketAddress into qemu-sockets.c 2015-10-20 14:15:48 +01:00
thread-posix.h qemu-thread: add QemuEvent 2013-10-17 17:30:55 +02:00
thread-win32.h qemu-thread: add a fast path to the Win32 QemuEvent 2015-09-24 20:52:28 +02:00
thread.h rcu: add rcu library 2015-02-02 16:55:10 +01:00
throttle.h throttle: refuse bps_max/iops_max without bps/iops 2015-08-05 12:53:48 +01:00
timed-average.h block: Add average I/O queue depth to BlockDeviceTimedStats 2015-11-12 16:22:46 +01:00
timer.h s/cpu_get_real_ticks/cpu_get_host_ticks/ 2015-10-08 19:46:01 +03:00
typedefs.h qapi: Convert QType into QAPI built-in enum type 2015-12-17 08:21:28 +01:00
uri.h misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
xattr.h misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00