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