diff options
author | Kevin Wolf | 2019-06-06 17:37:57 +0200 |
---|---|---|
committer | Markus Armbruster | 2019-06-12 18:34:26 +0200 |
commit | 6a8c0b51025314cdb1a8b4be24d45e690f1217dd (patch) | |
tree | c4fb5778169c61051d941b3f9d0deb8d6d608ee2 /scripts/qapi/types.py | |
parent | block/gluster: update .help of BLOCK_OPT_PREALLOC option (diff) | |
download | qemu-6a8c0b51025314cdb1a8b4be24d45e690f1217dd.tar.gz qemu-6a8c0b51025314cdb1a8b4be24d45e690f1217dd.tar.xz qemu-6a8c0b51025314cdb1a8b4be24d45e690f1217dd.zip |
qapi: Add feature flags to struct types
Sometimes, the behaviour of QEMU changes without a change in the QMP
syntax (usually by allowing values or operations that previously
resulted in an error). QMP clients may still need to know whether
they can rely on the changed behavior.
Let's add feature flags to the QAPI schema language, so that we can make
such changes visible with schema introspection.
An example for a schema definition using feature flags looks like this:
{ 'struct': 'TestType',
'data': { 'number': 'int' },
'features': [ 'allow-negative-numbers' ] }
Introspection information then looks like this:
{ "name": "TestType", "meta-type": "object",
"members": [
{ "name": "number", "type": "int" } ],
"features": [ "allow-negative-numbers" ] }
This patch implements feature flags only for struct types. We'll
implement them more widely as needed.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20190606153803.5278-2-armbru@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'scripts/qapi/types.py')
-rw-r--r-- | scripts/qapi/types.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/scripts/qapi/types.py b/scripts/qapi/types.py index 2bd6fcd44f..3edd9374aa 100644 --- a/scripts/qapi/types.py +++ b/scripts/qapi/types.py @@ -227,7 +227,8 @@ class QAPISchemaGenTypeVisitor(QAPISchemaModularCVisitor): self._genh.add(gen_array(name, element_type)) self._gen_type_cleanup(name) - def visit_object_type(self, name, info, ifcond, base, members, variants): + def visit_object_type(self, name, info, ifcond, base, members, variants, + features): # Nothing to do for the special empty builtin if name == 'q_empty': return |