From 348f3d3d3a35afe7dca4b695972677ce03da91ca Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 22 Jul 2015 14:58:25 -0600 Subject: [PATCH 4/4] qapi: squash to visitor Prior to conversion to a visitor, all code related to lists of builtins were lumped together. Doing so in the visitor code reduces the churn in comparing the generated files, making it easier to prove the conversion to the visitor is correct. --- scripts/qapi-types.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py index d6185c6..0817628 100644 --- a/scripts/qapi-types.py +++ b/scripts/qapi-types.py @@ -240,27 +240,26 @@ class QAPISchemaGenTypeVisitor(QAPISchemaVisitor): self.defn = None self.fwdecl = None self.fwdefn = None - self.btin = None + self.btindecl = None + self.btindefn = None def visit_begin(self): self.decl = '' self.defn = '' self.fwdecl = '' self.fwdefn = '' - self.btin = guardstart('QAPI_TYPES_BUILTIN') + self.btindecl = guardstart('QAPI_TYPES_BUILTIN') + self.btindefn = '' def visit_end(self): - self.decl = self.fwdecl + self.decl - self.fwdecl = None - self.defn = self.fwdefn + self.defn - self.fwdefn = None # To avoid header dependency hell, we always generate # declarations for built-in types in our header files and # simply guard them. - self.btin += guardend('QAPI_TYPES_BUILTIN') - self.decl = self.btin + self.decl - self.btin = None - # Doesn't work for cases where we link in multiple objects - # that have the functions defined, so generate them only with - # option -b (do_builtins). + self.btindecl += guardend('QAPI_TYPES_BUILTIN') + self.decl = self.fwdecl + self.btindecl + self.decl + self.fwdecl = None + self.btindecl = None + self.defn = self.fwdefn + self.btindefn + self.defn + self.fwdefn = None + self.btindefn = None def _gen_type_cleanup(self, name): self.decl += generate_type_cleanup_decl(name) self.defn += generate_type_cleanup(name) @@ -269,11 +268,11 @@ class QAPISchemaGenTypeVisitor(QAPISchemaVisitor): self.fwdefn += generate_enum_lookup(name, values) def visit_array_type(self, name, info, element_type): if isinstance(element_type, QAPISchemaBuiltinType): - self.btin += gen_fwd_object_or_array(name) - self.btin += gen_array(name, element_type) - self.btin += generate_type_cleanup_decl(name) + self.btindecl += gen_fwd_object_or_array(name) + self.btindecl += gen_array(name, element_type) + self.btindecl += generate_type_cleanup_decl(name) if do_builtins: - self.defn += generate_type_cleanup(name) + self.btindefn += generate_type_cleanup(name) else: self.fwdecl += gen_fwd_object_or_array(name) self.decl += gen_array(name, element_type) -- 2.4.3