[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFC v5 20/32] qapi-visit: Rearrange code a bit
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH RFC v5 20/32] qapi-visit: Rearrange code a bit |
Date: |
Mon, 7 Sep 2015 12:16:31 +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>
---
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 2ac244b..d776948 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
- [Qemu-devel] [PATCH RFC v5 03/32] qapi: QAPISchema code generation helper methods, (continued)
- [Qemu-devel] [PATCH RFC v5 03/32] qapi: QAPISchema code generation helper methods, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 10/32] qapi-types: Convert to QAPISchemaVisitor, fixing flat unions, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 13/32] qapi: De-duplicate enum code generation, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 08/32] Revert "qapi: Generate comments to simplify splitting for review", Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 12/32] qapi-commands: Convert to QAPISchemaVisitor, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 05/32] tests/qapi-schema: Convert test harness to QAPISchemaVisitor, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 18/32] qapi: Replace dirty is_c_ptr() by method c_null(), Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 02/32] qapi: New QAPISchema intermediate reperesentation, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 15/32] qapi-event: Convert to QAPISchemaVisitor, fixing data with base, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 11/32] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 20/32] qapi-visit: Rearrange code a bit,
Markus Armbruster <=
- [Qemu-devel] [PATCH RFC v5 25/32] qapi: Improve built-in type documentation, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 31/32] qapi-introspect: Map all integer types to 'int', Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 23/32] qapi: De-duplicate parameter list generation, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 16/32] qapi: Generate comments to simplify splitting for review, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 28/32] qapi-schema: Fix up misleading specification of netdev_add, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 17/32] Revert "qapi: Generate comments to simplify splitting for review", Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 24/32] qapi-commands: De-duplicate output marshaling functions, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 32/32] qapi-introspect: Hide type names, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 27/32] qom: Don't use 'gen': false for qom-get, qom-set, object-add, Markus Armbruster, 2015/09/07
- [Qemu-devel] [PATCH RFC v5 26/32] qapi: Introduce a first class 'any' type, Markus Armbruster, 2015/09/07