| # This work is licensed under the terms of the GNU GPL, version 2 or later. | |
| # See the COPYING file in the top-level directory. | |
| from abc import ABC, abstractmethod | |
| from .commands import gen_commands | |
| from .events import gen_events | |
| from .features import gen_features | |
| from .introspect import gen_introspect | |
| from .schema import QAPISchema | |
| from .types import gen_types | |
| from .visit import gen_visit | |
| class QAPIBackend(ABC): | |
| # pylint: disable=too-few-public-methods | |
| @abstractmethod | |
| def generate(self, | |
| schema: QAPISchema, | |
| output_dir: str, | |
| prefix: str, | |
| unmask: bool, | |
| builtins: bool, | |
| gen_tracing: bool) -> None: | |
| """ | |
| Generate code for the given schema into the target directory. | |
| :param schema: The primary QAPI schema object. | |
| :param output_dir: The output directory to store generated code. | |
| :param prefix: Optional C-code prefix for symbol names. | |
| :param unmask: Expose non-ABI names through introspection? | |
| :param builtins: Generate code for built-in types? | |
| :raise QAPIError: On failures. | |
| """ | |
| class QAPICBackend(QAPIBackend): | |
| # pylint: disable=too-few-public-methods | |
| def generate(self, | |
| schema: QAPISchema, | |
| output_dir: str, | |
| prefix: str, | |
| unmask: bool, | |
| builtins: bool, | |
| gen_tracing: bool) -> None: | |
| """ | |
| Generate C code for the given schema into the target directory. | |
| :param schema_file: The primary QAPI schema file. | |
| :param output_dir: The output directory to store generated code. | |
| :param prefix: Optional C-code prefix for symbol names. | |
| :param unmask: Expose non-ABI names through introspection? | |
| :param builtins: Generate code for built-in types? | |
| :raise QAPIError: On failures. | |
| """ | |
| gen_types(schema, output_dir, prefix, builtins) | |
| gen_features(schema, output_dir, prefix) | |
| gen_visit(schema, output_dir, prefix, builtins) | |
| gen_commands(schema, output_dir, prefix, gen_tracing) | |
| gen_events(schema, output_dir, prefix) | |
| gen_introspect(schema, output_dir, prefix, unmask) |