[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v12 30/36] qapi: Convert QType into qapi builtin
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v12 30/36] qapi: Convert QType into qapi builtin enum type |
Date: |
Wed, 18 Nov 2015 19:40:37 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Eric Blake <address@hidden> writes:
> 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.
I figure putting the typedef in include/qemu/typedefs.h would be
simpler. Didn't think of it when I reviewed v11.
>
> [*] 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 <address@hidden>
Patch looks sane.
- Re: [Qemu-devel] [PATCH v12 17/36] qapi: Fix c_name() munging, (continued)
[Qemu-devel] [PATCH v12 26/36] qapi: Change munging of CamelCase enum values, Eric Blake, 2015/11/18
[Qemu-devel] [PATCH v12 14/36] qapi: Remove outdated tests related to QMP/branch collisions, Eric Blake, 2015/11/18
[Qemu-devel] [PATCH v12 23/36] qapi: Remove dead tests for max collision, Eric Blake, 2015/11/18
[Qemu-devel] [PATCH v12 32/36] qapi: Inline _make_implicit_tag(), Eric Blake, 2015/11/18
[Qemu-devel] [PATCH v12 30/36] qapi: Convert QType into qapi builtin enum type, Eric Blake, 2015/11/18
[Qemu-devel] [PATCH v12 34/36] qapi: Add positive tests to qapi-schema-test, Eric Blake, 2015/11/18
[Qemu-devel] [PATCH v12 36/36] qapi: Shorter visits of optional fields, Eric Blake, 2015/11/18
[Qemu-devel] [PATCH v12 22/36] qapi: Don't let implicit enum MAX member collide, Eric Blake, 2015/11/18