qemu/scripts/qapi
Daniel P. Berrangé dde279925c qapi: pluggable backend code generators
The 'qapi.backend.QAPIBackend' class defines an API contract for code
generators. The current generator is put into a new class
'qapi.backend.QAPICBackend' and made to be the default impl.

A custom generator can be requested using the '-k' arg which takes a
fully qualified python class name

   qapi-gen.py -B the.python.module.QAPIMyBackend

This allows out of tree code to use the QAPI generator infrastructure
to create new language bindings for QAPI schemas. This has the caveat
that the QAPI generator APIs are not guaranteed stable, so consumers
of this feature may have to update their code to be compatible with
future QEMU releases.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <20250224182030.2089959-1-berrange@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
[Error checking and messages tweaked]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2025-03-04 08:02:29 +01:00
..
.flake8 qapi: Update flake8 config 2023-02-23 12:49:39 +01:00
.isort.cfg qapi: enforce import order/styling with isort 2020-10-10 11:37:47 +02:00
__init__.py qapi-gen: New common driver for code and doc generators 2018-03-02 13:14:09 -06:00
backend.py qapi: pluggable backend code generators 2025-03-04 08:02:29 +01:00
commands.py qapi: expose all schema features to code 2025-02-10 15:45:04 +01:00
common.py qapi: Smarter camel_to_upper() to reduce need for 'prefix' 2024-09-10 13:22:47 +02:00
error.py qapi/error: Add type hints 2021-04-30 12:59:54 +02:00
events.py qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
expr.py qapi: Fix to reject 'data': 'mumble' in struct 2023-04-24 15:21:39 +02:00
features.py qapi: expose all schema features to code 2025-02-10 15:45:04 +01:00
gen.py qapi: expose all schema features to code 2025-02-10 15:45:04 +01:00
introspect.py qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
main.py qapi: pluggable backend code generators 2025-03-04 08:02:29 +01:00
mypy.ini qapi/schema: turn on mypy strictness 2024-04-24 10:03:54 +02:00
parser.py qapi: remove "Example" doc section 2024-07-17 10:20:54 +02:00
pylintrc qapi: update pylintrc config 2025-02-26 11:09:49 +01:00
schema.py qapi: expose all schema features to code 2025-02-10 15:45:04 +01:00
source.py qapi: Require member documentation (with loophole) 2024-02-12 10:04:31 +01:00
types.py qapi: expose all schema features to code 2025-02-10 15:45:04 +01:00
visit.py qapi: expose all schema features to code 2025-02-10 15:45:04 +01:00