From 4040d995e49c5b818be79e50a18c1bf8d2354d12 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 17 Mar 2016 16:48:28 -0600 Subject: 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 Signed-off-by: Eric Blake Message-Id: <1458254921-17042-4-git-send-email-eblake@redhat.com> Signed-off-by: Markus Armbruster --- scripts/qapi-types.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'scripts/qapi-types.py') diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py index 0306a884c3..f194beaae4 100644 --- a/scripts/qapi-types.py +++ b/scripts/qapi-types.py @@ -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(''' -- cgit 1.4.1