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