xref: /qemu/scripts/qapi/backend.py (revision dc955052b400572dcfed896532d2b0dcf9d111f5)
1dde27992SDaniel P. Berrangé# This work is licensed under the terms of the GNU GPL, version 2 or later.
2dde27992SDaniel P. Berrangé# See the COPYING file in the top-level directory.
3dde27992SDaniel P. Berrangé
4dde27992SDaniel P. Berrangéfrom abc import ABC, abstractmethod
5dde27992SDaniel P. Berrangé
6dde27992SDaniel P. Berrangéfrom .commands import gen_commands
7dde27992SDaniel P. Berrangéfrom .events import gen_events
8dde27992SDaniel P. Berrangéfrom .features import gen_features
9dde27992SDaniel P. Berrangéfrom .introspect import gen_introspect
10dde27992SDaniel P. Berrangéfrom .schema import QAPISchema
11dde27992SDaniel P. Berrangéfrom .types import gen_types
12dde27992SDaniel P. Berrangéfrom .visit import gen_visit
13dde27992SDaniel P. Berrangé
14dde27992SDaniel P. Berrangé
15dde27992SDaniel P. Berrangéclass QAPIBackend(ABC):
16*dc955052SJohn Snow    # pylint: disable=too-few-public-methods
17dde27992SDaniel P. Berrangé
18dde27992SDaniel P. Berrangé    @abstractmethod
19dde27992SDaniel P. Berrangé    def generate(self,
20dde27992SDaniel P. Berrangé                 schema: QAPISchema,
21dde27992SDaniel P. Berrangé                 output_dir: str,
22dde27992SDaniel P. Berrangé                 prefix: str,
23dde27992SDaniel P. Berrangé                 unmask: bool,
24dde27992SDaniel P. Berrangé                 builtins: bool,
25dde27992SDaniel P. Berrangé                 gen_tracing: bool) -> None:
26dde27992SDaniel P. Berrangé        """
27dde27992SDaniel P. Berrangé        Generate code for the given schema into the target directory.
28dde27992SDaniel P. Berrangé
29dde27992SDaniel P. Berrangé        :param schema: The primary QAPI schema object.
30dde27992SDaniel P. Berrangé        :param output_dir: The output directory to store generated code.
31dde27992SDaniel P. Berrangé        :param prefix: Optional C-code prefix for symbol names.
32dde27992SDaniel P. Berrangé        :param unmask: Expose non-ABI names through introspection?
33dde27992SDaniel P. Berrangé        :param builtins: Generate code for built-in types?
34dde27992SDaniel P. Berrangé
35dde27992SDaniel P. Berrangé        :raise QAPIError: On failures.
36dde27992SDaniel P. Berrangé        """
37dde27992SDaniel P. Berrangé
38dde27992SDaniel P. Berrangé
39dde27992SDaniel P. Berrangéclass QAPICBackend(QAPIBackend):
40*dc955052SJohn Snow    # pylint: disable=too-few-public-methods
41dde27992SDaniel P. Berrangé
42dde27992SDaniel P. Berrangé    def generate(self,
43dde27992SDaniel P. Berrangé                 schema: QAPISchema,
44dde27992SDaniel P. Berrangé                 output_dir: str,
45dde27992SDaniel P. Berrangé                 prefix: str,
46dde27992SDaniel P. Berrangé                 unmask: bool,
47dde27992SDaniel P. Berrangé                 builtins: bool,
48dde27992SDaniel P. Berrangé                 gen_tracing: bool) -> None:
49dde27992SDaniel P. Berrangé        """
50dde27992SDaniel P. Berrangé        Generate C code for the given schema into the target directory.
51dde27992SDaniel P. Berrangé
52dde27992SDaniel P. Berrangé        :param schema_file: The primary QAPI schema file.
53dde27992SDaniel P. Berrangé        :param output_dir: The output directory to store generated code.
54dde27992SDaniel P. Berrangé        :param prefix: Optional C-code prefix for symbol names.
55dde27992SDaniel P. Berrangé        :param unmask: Expose non-ABI names through introspection?
56dde27992SDaniel P. Berrangé        :param builtins: Generate code for built-in types?
57dde27992SDaniel P. Berrangé
58dde27992SDaniel P. Berrangé        :raise QAPIError: On failures.
59dde27992SDaniel P. Berrangé        """
60dde27992SDaniel P. Berrangé        gen_types(schema, output_dir, prefix, builtins)
61dde27992SDaniel P. Berrangé        gen_features(schema, output_dir, prefix)
62dde27992SDaniel P. Berrangé        gen_visit(schema, output_dir, prefix, builtins)
63dde27992SDaniel P. Berrangé        gen_commands(schema, output_dir, prefix, gen_tracing)
64dde27992SDaniel P. Berrangé        gen_events(schema, output_dir, prefix)
65dde27992SDaniel P. Berrangé        gen_introspect(schema, output_dir, prefix, unmask)
66