[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v7 22/31] qapi: Add type.is_empty() helper
From: |
Eric Blake |
Subject: |
[Qemu-devel] [PATCH v7 22/31] qapi: Add type.is_empty() helper |
Date: |
Mon, 7 Dec 2015 20:55:12 -0700 |
And use it in qapi-types and qapi-event. Down the road, we may
want to lift our artificial restriction of no variants at the
top level of an event, at which point, inlining our check for
whether members is empty will no longer be sufficient. More
immediately, the new .is_empty() helper will help fix a bug in
qapi-visit.
Signed-off-by: Eric Blake <address@hidden>
---
v7: rebase to context change
v6: new patch
---
scripts/qapi-event.py | 6 +++---
scripts/qapi-types.py | 2 +-
scripts/qapi.py | 3 +++
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/scripts/qapi-event.py b/scripts/qapi-event.py
index 111958d..f2feaaf 100644
--- a/scripts/qapi-event.py
+++ b/scripts/qapi-event.py
@@ -39,7 +39,7 @@ def gen_event_send(name, arg_type):
''',
proto=gen_event_send_proto(name, arg_type))
- if arg_type and arg_type.members:
+ if arg_type and not arg_type.is_empty():
ret += mcgen('''
QObject *obj;
QmpOutputVisitor *qov;
@@ -58,7 +58,7 @@ def gen_event_send(name, arg_type):
''',
name=name)
- if arg_type and arg_type.members:
+ if arg_type and not arg_type.is_empty():
ret += mcgen('''
qov = qmp_output_visitor_new();
v = qmp_output_get_visitor(qov);
@@ -88,7 +88,7 @@ out_obj:
''',
c_enum=c_enum_const(event_enum_name, name))
- if arg_type and arg_type.members:
+ if arg_type and not arg_type.is_empty():
ret += mcgen('''
out:
qmp_output_visitor_cleanup(qov);
diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py
index 0d86269..8f57200 100644
--- a/scripts/qapi-types.py
+++ b/scripts/qapi-types.py
@@ -76,7 +76,7 @@ struct %(c_name)s {
# potential issues with attempting to malloc space for zero-length
# structs in C, and also incompatibility with C++ (where an empty
# struct is size 1).
- if not (base and base.members) and not members and not variants:
+ if (not base or base.is_empty()) and not members and not variants:
ret += mcgen('''
char qapi_dummy_field_for_empty_struct;
''')
diff --git a/scripts/qapi.py b/scripts/qapi.py
index 497eaba..8b388ee 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -973,6 +973,9 @@ class QAPISchemaObjectType(QAPISchemaType):
# See QAPISchema._make_implicit_object_type()
return self.name[0] == ':'
+ def is_empty(self):
+ return not self.members and not self.variants
+
def c_name(self):
assert not self.is_implicit()
return QAPISchemaType.c_name(self)
--
2.4.3
- [Qemu-devel] [PATCH v7 12/31] qapi: Don't cast Enum* to int*, (continued)
- [Qemu-devel] [PATCH v7 12/31] qapi: Don't cast Enum* to int*, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 15/31] qmp: Fix reference-counting of qnull on empty output visit, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 13/31] qapi: Drop unused 'kind' for struct/enum visit, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 18/31] qapi: Add visit_type_null() visitor, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 08/31] qapi: Track all failures between visit_start/stop, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 07/31] qapi: Improve generated event use of qapi visitor, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 14/31] qapi: Drop unused error argument for list and implicit struct, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 22/31] qapi: Add type.is_empty() helper,
Eric Blake <=
- [Qemu-devel] [PATCH v7 20/31] spapr_drc: Expose 'null' in qom-get when there is no fdt, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 24/31] qapi: Eliminate empty visit_type_FOO_fields, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 19/31] qmp: Tighten output visitor rules, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 21/31] qapi: Simplify excess input reporting in input visitors, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 09/31] qapi: Prefer type_int64 over type_int in visitors, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 23/31] qapi: Fix command with named empty argument type, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 26/31] qapi-visit: Unify struct and union visit, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 27/31] qapi: Rework deallocation of partial struct, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 25/31] qapi: Canonicalize missing object to :empty, Eric Blake, 2015/12/07