From 98967c248c4c01085af2ff49ed3d378f79019902 Mon Sep 17 00:00:00 2001 From: John Snow Date: Mon, 1 Feb 2021 14:37:36 -0500 Subject: qapi: centralize is_[user|system|builtin]_module methods Define what a module is and define what kind of a module it is once and for all, in one place. Signed-off-by: John Snow Message-Id: <20210201193747.2169670-6-jsnow@redhat.com> Reviewed-by: Markus Armbruster Signed-off-by: Markus Armbruster --- scripts/qapi/schema.py | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'scripts/qapi/schema.py') diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py index 720449f..e80d932 100644 --- a/scripts/qapi/schema.py +++ b/scripts/qapi/schema.py @@ -141,6 +141,33 @@ class QAPISchemaModule: self.name = name self._entity_list = [] + @staticmethod + def is_system_module(name: Optional[str]) -> bool: + """ + System modules are internally defined modules. + + Their names start with the "./" prefix. + """ + return name is None or name.startswith('./') + + @classmethod + def is_user_module(cls, name: Optional[str]) -> bool: + """ + User modules are those defined by the user in qapi JSON files. + + They do not start with the "./" prefix. + """ + return not cls.is_system_module(name) + + @staticmethod + def is_builtin_module(name: Optional[str]) -> bool: + """ + The built-in module is a single System module for the built-in types. + + It is presently always the value 'None'. + """ + return name is None + def add_entity(self, ent): self._entity_list.append(ent) @@ -871,8 +898,8 @@ class QAPISchema: return typ def _module_name(self, fname): - if fname is None: - return None + if QAPISchemaModule.is_system_module(fname): + return fname return os.path.relpath(fname, self._schema_dir) def _make_module(self, fname): -- cgit v1.1