[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v8 14/26] qapi-visit: Rearrange code a bit
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH v8 14/26] qapi-visit: Rearrange code a bit |
Date: |
Wed, 16 Sep 2015 13:06:17 +0200 |
Move gen_visit_decl() to a better place. Inline
generate_visit_struct_body().
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Daniel P. Berrange <address@hidden>
---
scripts/qapi-visit.py | 50 ++++++++++++++++++++------------------------------
1 file changed, 20 insertions(+), 30 deletions(-)
diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py
index fae70e2..97343cf 100644
--- a/scripts/qapi-visit.py
+++ b/scripts/qapi-visit.py
@@ -19,6 +19,16 @@ implicit_structs_seen = set()
struct_fields_seen = set()
+def gen_visit_decl(name, scalar=False):
+ c_type = c_name(name) + ' *'
+ if not scalar:
+ c_type += '*'
+ return mcgen('''
+void visit_type_%(c_name)s(Visitor *m, %(c_type)sobj, const char *name, Error
**errp);
+''',
+ c_name=c_name(name), c_type=c_type)
+
+
def gen_visit_implicit_struct(typ):
if typ in implicit_structs_seen:
return ''
@@ -117,12 +127,17 @@ out:
return ret
-def gen_visit_struct_body(name):
+def gen_visit_struct(name, base, members):
+ ret = gen_visit_struct_fields(name, base, members)
+
# FIXME: if *obj is NULL on entry, and visit_start_struct() assigns to
# *obj, but then visit_type_FOO_fields() fails, we should clean up *obj
# rather than leaving it non-NULL. As currently written, the caller must
# call qapi_free_FOO() to avoid a memory leak of the partial FOO.
- ret = mcgen('''
+ ret += mcgen('''
+
+void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name,
Error **errp)
+{
Error *err = NULL;
visit_start_struct(m, (void **)obj, "%(name)s", name, sizeof(%(c_name)s),
&err);
@@ -133,25 +148,10 @@ def gen_visit_struct_body(name):
visit_end_struct(m, &err);
}
error_propagate(errp, err);
-''',
- name=name, c_name=c_name(name))
- return ret
-
-
-def gen_visit_struct(name, base, members):
- ret = gen_visit_struct_fields(name, base, members)
- ret += mcgen('''
-
-void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name,
Error **errp)
-{
-''',
- c_name=c_name(name))
-
- ret += gen_visit_struct_body(name)
-
- ret += mcgen('''
}
-''')
+''',
+ name=name, c_name=c_name(name))
+
return ret
@@ -342,16 +342,6 @@ out:
return ret
-def gen_visit_decl(name, scalar=False):
- c_type = c_name(name) + ' *'
- if not scalar:
- c_type += '*'
- return mcgen('''
-void visit_type_%(c_name)s(Visitor *m, %(c_type)sobj, const char *name, Error
**errp);
-''',
- c_name=c_name(name), c_type=c_type)
-
-
class QAPISchemaGenVisitVisitor(QAPISchemaVisitor):
def __init__(self):
self.decl = None
--
2.4.3
- Re: [Qemu-devel] [PATCH v8 02/26] qapi: New QAPISchema intermediate reperesentation, (continued)
[Qemu-devel] [PATCH v8 08/26] qapi-commands: Convert to QAPISchemaVisitor, Markus Armbruster, 2015/09/16
[Qemu-devel] [PATCH v8 01/26] qapi: Rename class QAPISchema to QAPISchemaParser, Markus Armbruster, 2015/09/16
[Qemu-devel] [PATCH v8 06/26] qapi-types: Convert to QAPISchemaVisitor, fixing flat unions, Markus Armbruster, 2015/09/16
[Qemu-devel] [PATCH v8 14/26] qapi-visit: Rearrange code a bit,
Markus Armbruster <=
[Qemu-devel] [PATCH v8 07/26] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Markus Armbruster, 2015/09/16
[Qemu-devel] [PATCH v8 03/26] qapi: QAPISchema code generation helper methods, Markus Armbruster, 2015/09/16
[Qemu-devel] [PATCH v8 20/26] qapi: Make output visitor return qnull() instead of NULL, Markus Armbruster, 2015/09/16
[Qemu-devel] [PATCH v8 17/26] qapi: De-duplicate parameter list generation, Markus Armbruster, 2015/09/16
[Qemu-devel] [PATCH v8 18/26] qapi-commands: De-duplicate output marshaling functions, Markus Armbruster, 2015/09/16
[Qemu-devel] [PATCH v8 22/26] qom: Don't use 'gen': false for qom-get, qom-set, object-add, Markus Armbruster, 2015/09/16