@@ -242,7 +242,7 @@ class QAPISchemaGenCommandVisitor(QAPISchemaModularCVisitor):
self._regy = QAPIGenCCode()
self._visited_ret_types = {}
- def _begin_module(self, name):
+ def _begin_user_module(self, name):
self._visited_ret_types[self._genc] = set()
commands = self._module_basename('qapi-commands', name)
types = self._module_basename('qapi-types', name)
@@ -1868,6 +1868,7 @@ class QAPISchema(object):
def visit(self, visitor):
visitor.visit_begin(self)
module = None
+ visitor.visit_module(module)
for entity in self._entity_list:
if visitor.visit_needed(entity):
if entity.module != module:
@@ -2321,9 +2322,15 @@ class QAPISchemaModularCVisitor(QAPISchemaVisitor):
self._what = what
self._blurb = blurb
self._pydoc = pydoc
+ self._genc = None
+ self._genh = None
self._module = {}
self._main_module = None
+ @staticmethod
+ def _is_builtin_module(name):
+ return not name
+
def _module_basename(self, what, name):
if name is None:
return re.sub(r'-', '-builtin-', what)
@@ -2334,7 +2341,7 @@ class QAPISchemaModularCVisitor(QAPISchemaVisitor):
return basename + '-' + os.path.splitext(os.path.basename(name))[0]
def _add_module(self, name, blurb):
- if self._main_module is None and name is not None:
+ if self._main_module is None and not self._is_builtin_module(name):
self._main_module = name
genc = QAPIGenC(blurb, self._pydoc)
genh = QAPIGenH(blurb, self._pydoc)
@@ -2346,22 +2353,27 @@ class QAPISchemaModularCVisitor(QAPISchemaVisitor):
def write(self, output_dir, opt_builtins=False):
for name in self._module:
- if name is None and not opt_builtins:
+ if self._is_builtin_module(name) and not opt_builtins:
continue
basename = self._module_basename(self._what, name)
(genc, genh) = self._module[name]
genc.write(output_dir, basename + '.c')
genh.write(output_dir, basename + '.h')
- def _begin_module(self, name):
+ def _begin_user_module(self, name):
pass
def visit_module(self, name):
if name in self._module:
self._set_module(name)
- return
- self._add_module(name, self._blurb)
- self._begin_module(name)
+ elif self._is_builtin_module(name):
+ # The built-in module has not been created. No code may
+ # be generated.
+ self._genc = None
+ self._genh = None
+ else:
+ self._add_module(name, self._blurb)
+ self._begin_user_module(name)
def visit_include(self, name, info):
basename = self._module_basename(self._what, name)
@@ -142,7 +142,7 @@ class QAPISchemaGenEventVisitor(QAPISchemaModularCVisitor):
self._event_enum_members = []
self._event_emit_name = c_name(prefix + 'qapi_event_emit')
- def _begin_module(self, name):
+ def _begin_user_module(self, name):
types = self._module_basename('qapi-types', name)
visit = self._module_basename('qapi-visit', name)
self._genc.add(mcgen('''
@@ -194,7 +194,7 @@ class QAPISchemaGenTypeVisitor(QAPISchemaModularCVisitor):
#include "qapi/util.h"
'''))
- def _begin_module(self, name):
+ def _begin_user_module(self, name):
types = self._module_basename('qapi-types', name)
visit = self._module_basename('qapi-visit', name)
self._genc.preamble_add(mcgen('''
@@ -298,7 +298,7 @@ class QAPISchemaGenVisitVisitor(QAPISchemaModularCVisitor):
''',
prefix=prefix))
- def _begin_module(self, name):
+ def _begin_user_module(self, name):
types = self._module_basename('qapi-types', name)
visit = self._module_basename('qapi-visit', name)
self._genc.preamble_add(mcgen('''
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE
@@ -1,3 +1,4 @@
+module None
object q_empty
enum QType
prefix QTYPE