# 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): @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): 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)