[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC v4 11/32] qapi-visit: Convert to QAPISchemaV
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH RFC v4 11/32] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs |
Date: |
Thu, 3 Sep 2015 21:14:57 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 |
On 09/03/2015 08:30 AM, Markus Armbruster wrote:
> Fixes flat unions to visit the base's base members (the previous
> commit merely added them to the struct). Same test case.
>
>
> Signed-off-by: Markus Armbruster <address@hidden>
> Reviewed-by: Eric Blake <address@hidden>
> ---
> scripts/qapi-visit.py | 260
> +++++++++++++-------------------
> tests/qapi-schema/qapi-schema-test.json | 3 -
> tests/test-qmp-input-strict.c | 4 +-
> tests/test-qmp-input-visitor.c | 4 +-
> 4 files changed, 107 insertions(+), 164 deletions(-)
>
> +def gen_visit_union(name, base, variants):
> + ret = ''
>
> if base:
> + disc_key = variants.tag_member.name
> + if not variants.tag_name:
> + # we pointlessly use a different key for simple unions
> + disc_key = 'type'
> ret += mcgen('''
> - visit_type_%(disc_type)s(m, &(*obj)->%(c_tag)s, "%(disc_key)s",
> &err);
> + visit_type_%(disc_type)s(m, &(*obj)->%(c_name)s, "%(disc_key)s",
> &err);
> if (err) {
> goto out_obj;
> }
> if (!visit_start_union(m, !!(*obj)->data, &err) || err) {
> goto out_obj;
> }
> - switch ((*obj)->%(c_tag)s) {
> + switch ((*obj)->%(c_name)s) {
> ''',
> - disc_type = disc_type,
> - c_tag=c_name(tag),
> + disc_type=variants.tag_member.type.c_name(),
> + c_name=c_name(variants.tag_member.name),
> disc_key = disc_key)
See my comments on 30/32, and patches in 2 and 10. This is the final
place that cannot refer to tag_member.name until after we unify the C
and wire spelling.
diff --git i/scripts/qapi-visit.py w/scripts/qapi-visit.py
index 6819866..468080e 100644
--- i/scripts/qapi-visit.py
+++ w/scripts/qapi-visit.py
@@ -284,7 +284,7 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s
**obj, const char *name, Error
switch ((*obj)->%(c_name)s) {
''',
c_type=variants.tag_member.type.c_name(),
- c_name=c_name(variants.tag_member.name),
+ c_name=c_name(variants.tag_name or 'kind'),
name=tag_key)
for var in variants.variants:
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH RFC v4 03/32] qapi: QAPISchema code generation helper methods, (continued)
- [Qemu-devel] [PATCH RFC v4 03/32] qapi: QAPISchema code generation helper methods, Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 06/32] qapi: Split up some typedefs to ease review, Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 13/32] qapi: De-duplicate enum code generation, Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 18/32] qapi: Replace dirty is_c_ptr() by method c_null(), Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 12/32] qapi-commands: Convert to QAPISchemaVisitor, Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 09/32] Revert "qapi: Split up some typedefs to ease review", Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 15/32] qapi-event: Convert to QAPISchemaVisitor, fixing data with base, Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 11/32] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Markus Armbruster, 2015/09/03
- Re: [Qemu-devel] [PATCH RFC v4 11/32] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs,
Eric Blake <=
- [Qemu-devel] [PATCH RFC v4 07/32] qapi: Generate comments to simplify splitting for review, Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 04/32] qapi: New QAPISchemaVisitor, Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 08/32] Revert "qapi: Generate comments to simplify splitting for review", Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 14/32] qapi-event: Eliminate global variable event_enum_value, Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 20/32] qapi-visit: Rearrange code a bit, Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 10/32] qapi-types: Convert to QAPISchemaVisitor, fixing flat unions, Markus Armbruster, 2015/09/03
- [Qemu-devel] [PATCH RFC v4 23/32] qapi: De-duplicate parameter list generation, Markus Armbruster, 2015/09/03