[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFC v4 12/29] qapi: Use consistent generated code pa
From: |
Eric Blake |
Subject: |
[Qemu-devel] [PATCH RFC v4 12/29] qapi: Use consistent generated code patterns |
Date: |
Wed, 9 Sep 2015 22:06:14 -0600 |
We had a pointless difference in label names, and on whether
the generated code used:
if (*obj) {
stuff;
...
}
vs.
if (!*obj) {
goto out_obj;
}
stuff;
...
Pick a single style, as it will make it easier for later patches
to uniformly apply any updates to generated code.
No change in semantics to the generated code.
Signed-off-by: Eric Blake <address@hidden>
---
scripts/qapi-visit.py | 47 ++++++++++++++++++++++++-----------------------
1 file changed, 24 insertions(+), 23 deletions(-)
diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py
index 5d4fb3a..d968642 100644
--- a/scripts/qapi-visit.py
+++ b/scripts/qapi-visit.py
@@ -215,7 +215,7 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj,
const char *name, Error
}
visit_get_next_type(m, &(*obj)->type, %(promote_int)s, name, &err);
if (err) {
- goto out_end;
+ goto out_obj;
}
switch ((*obj)->type) {
''',
@@ -236,7 +236,7 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj,
const char *name, Error
error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
"%(name)s");
}
-out_end:
+out_obj:
visit_end_implicit_struct(m, err ? NULL : &err);
out:
error_propagate(errp, err);
@@ -269,30 +269,32 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj,
const char *name, Error
if (err) {
goto out;
}
- if (*obj) {
+ if (!*obj) {
+ goto out_obj;
+ }
''',
c_name=c_name(name), name=name)
tag_key = variants.tag_member.name
if base:
ret += mcgen('''
- visit_type_%(c_name)s_fields(m, (%(c_name)s **)obj, &err);
+ visit_type_%(c_name)s_fields(m, (%(c_name)s **)obj, &err);
''',
c_name=c_name(base.name))
else:
ret += mcgen('''
- visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "%(name)s", &err);
+ visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "%(name)s", &err);
''',
c_type=variants.tag_member.type.c_name(),
c_name=c_name(tag_key), name=tag_key)
ret += mcgen('''
- if (err) {
- goto out_obj;
- }
- if (!visit_start_union(m, !!(*obj)->data, &err) || err) {
- goto out_obj;
- }
- switch ((*obj)->%(c_name)s) {
+ if (err) {
+ goto out_obj;
+ }
+ if (!visit_start_union(m, !!(*obj)->data, &err) || err) {
+ goto out_obj;
+ }
+ switch ((*obj)->%(c_name)s) {
''',
c_name=c_name(tag_key))
@@ -300,35 +302,34 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj,
const char *name, Error
# TODO ugly special case for simple union
simple_union_type = var.simple_union_type()
ret += mcgen('''
- case %(case)s:
+ case %(case)s:
''',
case=c_enum_const(variants.tag_member.type.name,
var.name))
if simple_union_type:
ret += mcgen('''
- visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "data", &err);
+ visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "data", &err);
''',
c_type=simple_union_type.c_name(),
c_name=c_name(var.name))
else:
ret += mcgen('''
- visit_type_implicit_%(c_type)s(m, &(*obj)->%(c_name)s, &err);
+ visit_type_implicit_%(c_type)s(m, &(*obj)->%(c_name)s, &err);
''',
c_type=var.type.c_name(),
c_name=c_name(var.name))
ret += mcgen('''
- break;
+ break;
''')
ret += mcgen('''
- default:
- abort();
- }
-out_obj:
- error_propagate(errp, err);
- err = NULL;
- visit_end_union(m, !!(*obj)->data, &err);
+ default:
+ abort();
}
+out_obj:
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_union(m, !!(*obj)->data, &err);
visit_end_struct(m, err ? NULL : &err);
out:
error_propagate(errp, err);
--
2.4.3
- [Qemu-devel] [PATCH RFC v4 00/29] qapi-ify netdev_add, and other post-introspection cleanups, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 01/29] qapi: Provide nicer array names in introspection, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 04/29] vnc: hoist allocation of VncBasicInfo to callers, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 06/29] qapi-visit: Remove redundant functions for flat union base, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 02/29] net: use Netdev instead of NetClientOptions in client init, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 05/29] qapi: Unbox base members, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 07/29] qapi: Test use of 'number' within alternates, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 09/29] qapi: Hide tag_name data member of variants, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 08/29] qapi: Simplify visiting of alternate types, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 12/29] qapi: Use consistent generated code patterns,
Eric Blake <=
- [Qemu-devel] [PATCH RFC v4 17/29] qapi: Drop useless 'data' member of unions, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 11/29] qapi: Don't pass pre-existing error to later call, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 14/29] qapi: Rework deallocation of partial struct, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 10/29] qapi: Fix alternates that accept 'number' but not 'int', Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 13/29] qapi: Add tests for empty unions, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 16/29] qapi: Forbid empty unions and useless alternates, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 15/29] qapi: Avoid use of 'data' member of qapi unions, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 18/29] qapi: Remove dead visitor code, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 21/29] qapi: Test failure in middle of array parse, Eric Blake, 2015/09/10
- [Qemu-devel] [PATCH RFC v4 19/29] qapi: Document visitor interfaces, Eric Blake, 2015/09/10