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