mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
qapi: Make c_type() more OO-like
QAPISchemaType.c_type() is a bit awkward: it takes two optional boolean flags is_param and is_unboxed, and they should never both be True. Add a new method for each of the flags, and drop the flags from c_type(). Most callers pass no flags; they remain unchanged. One caller passes is_param=True; call the new .c_param_type() instead. One caller passes is_unboxed=True, except for simple union types. This is actually an ugly special case that will go away soon, so until then, we now have to call either .c_type() or the new .c_unboxed_type(). Tolerable in the interim. It requires slightly more Python, but is arguably easier to read. Suggested-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1458254921-17042-4-git-send-email-eblake@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
972a110162
commit
4040d995e4
2 changed files with 35 additions and 11 deletions
|
@ -124,11 +124,14 @@ def gen_variants(variants):
|
|||
for var in variants.variants:
|
||||
# Ugly special case for simple union TODO get rid of it
|
||||
simple_union_type = var.simple_union_type()
|
||||
typ = simple_union_type or var.type
|
||||
if simple_union_type:
|
||||
typ = simple_union_type.c_type()
|
||||
else:
|
||||
typ = var.type.c_unboxed_type()
|
||||
ret += mcgen('''
|
||||
%(c_type)s %(c_name)s;
|
||||
''',
|
||||
c_type=typ.c_type(is_unboxed=not simple_union_type),
|
||||
c_type=typ,
|
||||
c_name=c_name(var.name))
|
||||
|
||||
ret += mcgen('''
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue