qapi: Simplify QAPISchemaModularCVisitor

Since the previous commit, QAPISchemaVisitor.visit_module() is called
just once.  Simplify QAPISchemaModularCVisitor accordingly.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20191120182551.23795-7-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
master
Markus Armbruster 2019-11-20 19:25:51 +01:00
parent 3e7fb5811b
commit 3bef3aaec9
5 changed files with 23 additions and 22 deletions

View File

@ -239,7 +239,7 @@ class QAPISchemaGenCommandVisitor(QAPISchemaModularCVisitor):
def __init__(self, prefix): def __init__(self, prefix):
QAPISchemaModularCVisitor.__init__( QAPISchemaModularCVisitor.__init__(
self, prefix, 'qapi-commands', self, prefix, 'qapi-commands',
' * Schema-defined QAPI/QMP commands', __doc__) ' * Schema-defined QAPI/QMP commands', None, __doc__)
self._regy = QAPIGenCCode(None) self._regy = QAPIGenCCode(None)
self._visited_ret_types = {} self._visited_ret_types = {}

View File

@ -140,7 +140,7 @@ class QAPISchemaGenEventVisitor(QAPISchemaModularCVisitor):
def __init__(self, prefix): def __init__(self, prefix):
QAPISchemaModularCVisitor.__init__( QAPISchemaModularCVisitor.__init__(
self, prefix, 'qapi-events', self, prefix, 'qapi-events',
' * Schema-defined QAPI/QMP events', __doc__) ' * Schema-defined QAPI/QMP events', None, __doc__)
self._event_enum_name = c_name(prefix + 'QAPIEvent', protect=False) self._event_enum_name = c_name(prefix + 'QAPIEvent', protect=False)
self._event_enum_members = [] self._event_enum_members = []
self._event_emit_name = c_name(prefix + 'qapi_event_emit') self._event_emit_name = c_name(prefix + 'qapi_event_emit')

View File

@ -201,10 +201,11 @@ class QAPISchemaMonolithicCVisitor(QAPISchemaVisitor):
class QAPISchemaModularCVisitor(QAPISchemaVisitor): class QAPISchemaModularCVisitor(QAPISchemaVisitor):
def __init__(self, prefix, what, blurb, pydoc): def __init__(self, prefix, what, user_blurb, builtin_blurb, pydoc):
self._prefix = prefix self._prefix = prefix
self._what = what self._what = what
self._blurb = blurb self._user_blurb = user_blurb
self._builtin_blurb = builtin_blurb
self._pydoc = pydoc self._pydoc = pydoc
self._genc = None self._genc = None
self._genh = None self._genh = None
@ -245,7 +246,7 @@ class QAPISchemaModularCVisitor(QAPISchemaVisitor):
genc = QAPIGenC(basename + '.c', blurb, self._pydoc) genc = QAPIGenC(basename + '.c', blurb, self._pydoc)
genh = QAPIGenH(basename + '.h', blurb, self._pydoc) genh = QAPIGenH(basename + '.h', blurb, self._pydoc)
self._module[name] = (genc, genh) self._module[name] = (genc, genh)
self._set_module(name) self._genc, self._genh = self._module[name]
def _add_user_module(self, name, blurb): def _add_user_module(self, name, blurb):
assert self._is_user_module(name) assert self._is_user_module(name)
@ -256,9 +257,6 @@ class QAPISchemaModularCVisitor(QAPISchemaVisitor):
def _add_system_module(self, name, blurb): def _add_system_module(self, name, blurb):
self._add_module(name and './' + name, blurb) self._add_module(name and './' + name, blurb)
def _set_module(self, name):
self._genc, self._genh = self._module[name]
def write(self, output_dir, opt_builtins=False): def write(self, output_dir, opt_builtins=False):
for name in self._module: for name in self._module:
if self._is_builtin_module(name) and not opt_builtins: if self._is_builtin_module(name) and not opt_builtins:
@ -271,15 +269,17 @@ class QAPISchemaModularCVisitor(QAPISchemaVisitor):
pass pass
def visit_module(self, name): def visit_module(self, name):
if name in self._module: if name is None:
self._set_module(name) if self._builtin_blurb:
elif self._is_builtin_module(name): self._add_system_module(None, self._builtin_blurb)
# The built-in module has not been created. No code may self._begin_system_module(name)
# be generated. else:
self._genc = None # The built-in module has not been created. No code may
self._genh = None # be generated.
self._genc = None
self._genh = None
else: else:
self._add_user_module(name, self._blurb) self._add_user_module(name, self._user_blurb)
self._begin_user_module(name) self._begin_user_module(name)
def visit_include(self, name, info): def visit_include(self, name, info):

View File

@ -243,8 +243,9 @@ class QAPISchemaGenTypeVisitor(QAPISchemaModularCVisitor):
def __init__(self, prefix): def __init__(self, prefix):
QAPISchemaModularCVisitor.__init__( QAPISchemaModularCVisitor.__init__(
self, prefix, 'qapi-types', ' * Schema-defined QAPI types', self, prefix, 'qapi-types', ' * Schema-defined QAPI types',
__doc__) ' * Built-in QAPI types', __doc__)
self._add_system_module(None, ' * Built-in QAPI types')
def _begin_system_module(self, name):
self._genc.preamble_add(mcgen(''' self._genc.preamble_add(mcgen('''
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include "qapi/dealloc-visitor.h" #include "qapi/dealloc-visitor.h"

View File

@ -285,8 +285,9 @@ class QAPISchemaGenVisitVisitor(QAPISchemaModularCVisitor):
def __init__(self, prefix): def __init__(self, prefix):
QAPISchemaModularCVisitor.__init__( QAPISchemaModularCVisitor.__init__(
self, prefix, 'qapi-visit', ' * Schema-defined QAPI visitors', self, prefix, 'qapi-visit', ' * Schema-defined QAPI visitors',
__doc__) ' * Built-in QAPI visitors', __doc__)
self._add_system_module(None, ' * Built-in QAPI visitors')
def _begin_system_module(self, name):
self._genc.preamble_add(mcgen(''' self._genc.preamble_add(mcgen('''
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include "qapi/error.h" #include "qapi/error.h"
@ -296,8 +297,7 @@ class QAPISchemaGenVisitVisitor(QAPISchemaModularCVisitor):
#include "qapi/visitor.h" #include "qapi/visitor.h"
#include "qapi/qapi-builtin-types.h" #include "qapi/qapi-builtin-types.h"
''', '''))
prefix=prefix))
def _begin_user_module(self, name): def _begin_user_module(self, name):
types = self._module_basename('qapi-types', name) types = self._module_basename('qapi-types', name)