[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v8 11/18] qapi: Simplify gen_struct_field()
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v8 11/18] qapi: Simplify gen_struct_field() |
Date: |
Tue, 13 Oct 2015 14:12:27 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Eric Blake <address@hidden> writes:
> Rather than having all callers pass a name, type, and optional
> flag, have them instead pass a QAPISchemaObjectTypeMember which
> already has all that information.
>
> This will allow a future patch to simplify alternates to use
> a special tag 'qtype_code type'. In the meantime, it requires
> a hack to create a temporary member 'base' for struct base
> classes; this temporary member will go away in a later patch
> that flattens structs in the same way that flat union base
> classes were flattened in commit 1e6c1616.
>
> No change to generated code.
>
> Signed-off-by: Eric Blake <address@hidden>
>
> ---
> v8: new patch
> ---
> scripts/qapi-types.py | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py
> index e37d529..5ffabf5 100644
> --- a/scripts/qapi-types.py
> +++ b/scripts/qapi-types.py
> @@ -36,18 +36,18 @@ struct %(c_name)s {
> c_name=c_name(name), c_type=element_type.c_type())
>
>
> -def gen_struct_field(name, typ, optional):
> +def gen_struct_field(member):
> ret = ''
>
> - if optional:
> + if member.optional:
> ret += mcgen('''
> bool has_%(c_name)s;
> ''',
> - c_name=c_name(name))
> + c_name=member.c_name())
> ret += mcgen('''
> %(c_type)s %(c_name)s;
> ''',
> - c_type=typ.c_type(), c_name=c_name(name))
> + c_type=member.type.c_type(), c_name=member.c_name())
> return ret
>
>
> @@ -55,7 +55,7 @@ def gen_struct_fields(members):
> ret = ''
>
> for memb in members:
> - ret += gen_struct_field(memb.name, memb.type, memb.optional)
> + ret += gen_struct_field(memb)
> return ret
>
>
> @@ -67,7 +67,11 @@ struct %(c_name)s {
> c_name=c_name(name))
>
> if base:
> - ret += gen_struct_field('base', base, False)
> + # TODO Flatten this struct, similar to flat union bases. Until
> + # then, hack around it with a temporary member.
> + member = QAPISchemaObjectTypeMember('base', base.name, False)
> + member.type = base
> + ret += gen_struct_field(member)
>
> ret += gen_struct_fields(members)
Uff! Are you really, really sure this is the right spot in the series
for this transformation?
- [Qemu-devel] [PATCH v8 05/18] qapi: Drop redundant returns-int test, (continued)
- [Qemu-devel] [PATCH v8 05/18] qapi: Drop redundant returns-int test, Eric Blake, 2015/10/13
- [Qemu-devel] [PATCH v8 01/18] qapi: Use predicate callback to determine visit filtering, Eric Blake, 2015/10/13
- [Qemu-devel] [PATCH v8 07/18] qapi: Don't use info as witness of implicit object type, Eric Blake, 2015/10/13
- [Qemu-devel] [PATCH v8 08/18] qapi: Lazy creation of array types, Eric Blake, 2015/10/13
- [Qemu-devel] [PATCH v8 14/18] qapi: Detect collisions in C member names, Eric Blake, 2015/10/13
- [Qemu-devel] [PATCH v8 11/18] qapi: Simplify gen_struct_field(), Eric Blake, 2015/10/13
- Re: [Qemu-devel] [PATCH v8 11/18] qapi: Simplify gen_struct_field(),
Markus Armbruster <=
- [Qemu-devel] [PATCH v8 09/18] qapi: Create simple union type member earlier, Eric Blake, 2015/10/13
- [Qemu-devel] [PATCH v8 12/18] qapi: Track location that created an implicit type, Eric Blake, 2015/10/13
- [Qemu-devel] [PATCH v8 10/18] qapi: Move union tag quirks into subclass, Eric Blake, 2015/10/13
- [Qemu-devel] [PATCH v8 15/18] qapi: Move duplicate member checks to schema check(), Eric Blake, 2015/10/13