diff options
author | John Snow <jsnow@redhat.com> | 2021-02-01 14:37:36 -0500 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2021-02-08 14:15:58 +0100 |
commit | 98967c248c4c01085af2ff49ed3d378f79019902 (patch) | |
tree | b22821aed3943dd1513b1586122d29e5e8f8c5e1 /scripts/qapi/schema.py | |
parent | a253b3eb9a194a0b2e8b55095ce5f28c2d5cfa11 (diff) |
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 <jsnow@redhat.com>
Message-Id: <20210201193747.2169670-6-jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'scripts/qapi/schema.py')
-rw-r--r-- | scripts/qapi/schema.py | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py index 720449feee..e80d9320ed 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): |