qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 11/17] qapi-visit: Simplify visit of empty branch in


From: Eric Blake
Subject: [Qemu-devel] [PATCH 11/17] qapi-visit: Simplify visit of empty branch in union
Date: Fri, 19 Feb 2016 17:19:41 -0700

Now that we have is_empty() and gen_visit_fields_call(), it's
fairly easy to skip the visit of a variant type that has no
members.  Only one such instance exists at the moment
(CpuInfoOther), but the idea of a union where some branches
add no fields beyond the base type is common enough that we
may add syntax for other cases, as in
  { 'union':'U', 'base':'B', 'discriminator':'D',
    'data': { 'default': {}, 'extra':'Type' } }

Note that the Abort type is another example of an empty type,
but it is only used by a simple union rather than a flat
union; and with simple unions, the wrapper type providing
the 'data' QMP key is not empty.

Signed-off-by: Eric Blake <address@hidden>
---
 scripts/qapi-visit.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py
index ab773f6..127c84e0 100644
--- a/scripts/qapi-visit.py
+++ b/scripts/qapi-visit.py
@@ -44,7 +44,9 @@ static void visit_type_%(c_type)s_fields(Visitor *v, 
%(c_type)s *obj, Error **er
 def gen_visit_fields_call(typ, c_name):
     ret = ''
     assert isinstance(typ, QAPISchemaObjectType)
-    if typ.is_implicit():
+    if typ.is_empty():
+        pass
+    elif typ.is_implicit():
         # TODO ugly special case for simple union
         assert len(typ.members) == 1
         assert not typ.variants
-- 
2.5.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]