From: "Marc-André Lureau" <marcandre.lureau@redhat.com>
To: qemu-devel@nongnu.org
Cc: armbru@redhat.com
Subject: [Qemu-devel] [PATCH v8 00/22] qapi: add #if pre-processor conditions to generated code (part 2)
Date: Thu, 13 Dec 2018 16:37:02 +0400 [thread overview]
Message-ID: <20181213123724.4866-1-marcandre.lureau@redhat.com> (raw)
This is the second part of the "add #if pre-processor conditions to
generated code" series, adding schema member conditions (roughly
16-38/49).
Members can be exploded as dictionnary with 'type'/'if' keys:
{ 'struct': 'TestIfStruct', 'data':
{ 'foo': 'int',
'bar': { 'type': 'int', 'if': 'defined(TEST_IF_STRUCT_BAR)'} } }
Enum values can be exploded as dictionnary with 'type'/'if' keys:
{ 'enum': 'TestIfEnum', 'data':
[ 'foo',
{ 'name' : 'bar', 'if': 'defined(TEST_IF_ENUM_BAR)' } ] }
Based-on: git://repo.or.cz/qemu/armbru.git qapi-next
v8:
- rebased on Markus qapi-next branch
- based on code changes from Markus in his qapi-next-2 branch (code
changes, commits squashed & reordered)
- minor code cleanup / style fixes
- commit messages update & rb tags
v7:
- replaced osdep.h include by a #warning check
- renamed event_names/event_enum_members, enum_name/event_enum_ename
- move normalization after checking
- simplify make_enum_members()
- some tests changes
- rebase/conflicts tweaks
- squash documentation changes in related patches
- tweak generated documentation code & output
- modify commit comments, add rb tags
v6:
- subset of v5 series: add schema member conditions
- split "qapi: factor out check_known_keys()", error report improvements
- add a patch to "qapi: include osdep.h in type headers" to avoid
potential build configuration change issues
- rebased, on top of Markus's qapi-next branch (first 4 patches,
included for patchew testing)
Marc-André Lureau (22):
qapi: Do not define enumeration value explicitly
qapi: change enum visitor and gen_enum* to take QAPISchemaMember
tests: print enum type members more like object type members
qapi: factor out checking for keys
qapi: improve reporting of unknown or missing keys
qapi: add a dictionary form with 'name' key for enum members
qapi: pass long form enum to make_enum_members
qapi: simplify make_enum_members()
qapi: add 'if' to enum members
qapi-events: add 'if' condition to implicit event enum
qapi: rename allow_dict to allow_implicit
qapi: add a dictionary form for TYPE
qapi: add 'if' to implicit struct members
qapi: add an error in case a discriminator is conditional
qapi: add 'if' to union members
qapi: add 'if' to alternate members
qapi: add #if conditions to generated code members
qapi: add 'If:' condition to enum values documentation
qapi: add 'If:' condition to struct members documentation
qapi: add condition to variants documentation
qapi: add more conditions to SPICE
qapi: add conditions to REPLICATION type/commands on the schema
qapi/block-core.json | 13 +-
qapi/char.json | 16 +-
qapi/migration.json | 12 +-
scripts/qapi/common.py | 201 +++++++++++-------
scripts/qapi/doc.py | 31 +--
scripts/qapi/events.py | 13 +-
scripts/qapi/introspect.py | 17 +-
scripts/qapi/types.py | 10 +-
scripts/qapi/visit.py | 8 +-
migration/colo.c | 16 +-
monitor.c | 5 -
docs/devel/qapi-code-gen.txt | 19 ++
tests/Makefile.include | 11 +-
tests/qapi-schema/alternate-base.err | 1 +
tests/qapi-schema/alternate-invalid-dict.err | 1 +
...ember.exit => alternate-invalid-dict.exit} | 0
tests/qapi-schema/alternate-invalid-dict.json | 4 +
...-member.out => alternate-invalid-dict.out} | 0
tests/qapi-schema/comments.out | 14 +-
tests/qapi-schema/doc-bad-section.out | 13 +-
tests/qapi-schema/doc-good.json | 11 +-
tests/qapi-schema/doc-good.out | 22 +-
tests/qapi-schema/doc-good.texi | 7 +-
tests/qapi-schema/double-type.err | 1 +
tests/qapi-schema/empty.out | 9 +-
tests/qapi-schema/enum-bad-member.err | 1 +
tests/qapi-schema/enum-bad-member.exit | 1 +
tests/qapi-schema/enum-bad-member.json | 2 +
tests/qapi-schema/enum-bad-member.out | 0
.../qapi-schema/enum-dict-member-unknown.err | 2 +
.../qapi-schema/enum-dict-member-unknown.exit | 1 +
.../qapi-schema/enum-dict-member-unknown.json | 2 +
.../qapi-schema/enum-dict-member-unknown.out | 0
tests/qapi-schema/enum-dict-member.err | 1 -
tests/qapi-schema/enum-dict-member.json | 2 -
tests/qapi-schema/enum-if-invalid.err | 1 +
tests/qapi-schema/enum-if-invalid.exit | 1 +
tests/qapi-schema/enum-if-invalid.json | 3 +
tests/qapi-schema/enum-if-invalid.out | 0
tests/qapi-schema/event-case.out | 9 +-
.../qapi-schema/event-member-invalid-dict.err | 1 +
.../event-member-invalid-dict.exit | 1 +
.../event-member-invalid-dict.json | 2 +
.../qapi-schema/event-member-invalid-dict.out | 0
tests/qapi-schema/event-nest-struct.json | 2 +-
.../flat-union-inline-invalid-dict.err | 1 +
.../flat-union-inline-invalid-dict.exit | 1 +
.../flat-union-inline-invalid-dict.json | 11 +
.../flat-union-inline-invalid-dict.out | 0
tests/qapi-schema/flat-union-inline.json | 2 +-
.../flat-union-invalid-if-discriminator.err | 1 +
.../flat-union-invalid-if-discriminator.exit | 1 +
.../flat-union-invalid-if-discriminator.json | 17 ++
.../flat-union-invalid-if-discriminator.out | 0
tests/qapi-schema/ident-with-escape.out | 9 +-
tests/qapi-schema/include-relpath.out | 14 +-
tests/qapi-schema/include-repetition.out | 14 +-
tests/qapi-schema/include-simple.out | 14 +-
tests/qapi-schema/indented-expr.out | 9 +-
.../nested-struct-data-invalid-dict.err | 1 +
.../nested-struct-data-invalid-dict.exit | 1 +
.../nested-struct-data-invalid-dict.json | 3 +
.../nested-struct-data-invalid-dict.out | 0
tests/qapi-schema/nested-struct-data.json | 2 +-
tests/qapi-schema/qapi-schema-test.json | 33 ++-
tests/qapi-schema/qapi-schema-test.out | 62 +++++-
.../struct-member-invalid-dict.err | 1 +
.../struct-member-invalid-dict.exit | 1 +
.../struct-member-invalid-dict.json | 3 +
.../struct-member-invalid-dict.out | 0
tests/qapi-schema/test-qapi.py | 9 +-
.../qapi-schema/union-branch-invalid-dict.err | 1 +
.../union-branch-invalid-dict.exit | 1 +
.../union-branch-invalid-dict.json | 4 +
.../qapi-schema/union-branch-invalid-dict.out | 0
tests/qapi-schema/unknown-expr-key.err | 3 +-
tests/qapi-schema/unknown-expr-key.json | 2 +-
77 files changed, 522 insertions(+), 186 deletions(-)
create mode 100644 tests/qapi-schema/alternate-invalid-dict.err
rename tests/qapi-schema/{enum-dict-member.exit => alternate-invalid-dict.exit} (100%)
create mode 100644 tests/qapi-schema/alternate-invalid-dict.json
rename tests/qapi-schema/{enum-dict-member.out => alternate-invalid-dict.out} (100%)
create mode 100644 tests/qapi-schema/enum-bad-member.err
create mode 100644 tests/qapi-schema/enum-bad-member.exit
create mode 100644 tests/qapi-schema/enum-bad-member.json
create mode 100644 tests/qapi-schema/enum-bad-member.out
create mode 100644 tests/qapi-schema/enum-dict-member-unknown.err
create mode 100644 tests/qapi-schema/enum-dict-member-unknown.exit
create mode 100644 tests/qapi-schema/enum-dict-member-unknown.json
create mode 100644 tests/qapi-schema/enum-dict-member-unknown.out
delete mode 100644 tests/qapi-schema/enum-dict-member.err
delete mode 100644 tests/qapi-schema/enum-dict-member.json
create mode 100644 tests/qapi-schema/enum-if-invalid.err
create mode 100644 tests/qapi-schema/enum-if-invalid.exit
create mode 100644 tests/qapi-schema/enum-if-invalid.json
create mode 100644 tests/qapi-schema/enum-if-invalid.out
create mode 100644 tests/qapi-schema/event-member-invalid-dict.err
create mode 100644 tests/qapi-schema/event-member-invalid-dict.exit
create mode 100644 tests/qapi-schema/event-member-invalid-dict.json
create mode 100644 tests/qapi-schema/event-member-invalid-dict.out
create mode 100644 tests/qapi-schema/flat-union-inline-invalid-dict.err
create mode 100644 tests/qapi-schema/flat-union-inline-invalid-dict.exit
create mode 100644 tests/qapi-schema/flat-union-inline-invalid-dict.json
create mode 100644 tests/qapi-schema/flat-union-inline-invalid-dict.out
create mode 100644 tests/qapi-schema/flat-union-invalid-if-discriminator.err
create mode 100644 tests/qapi-schema/flat-union-invalid-if-discriminator.exit
create mode 100644 tests/qapi-schema/flat-union-invalid-if-discriminator.json
create mode 100644 tests/qapi-schema/flat-union-invalid-if-discriminator.out
create mode 100644 tests/qapi-schema/nested-struct-data-invalid-dict.err
create mode 100644 tests/qapi-schema/nested-struct-data-invalid-dict.exit
create mode 100644 tests/qapi-schema/nested-struct-data-invalid-dict.json
create mode 100644 tests/qapi-schema/nested-struct-data-invalid-dict.out
create mode 100644 tests/qapi-schema/struct-member-invalid-dict.err
create mode 100644 tests/qapi-schema/struct-member-invalid-dict.exit
create mode 100644 tests/qapi-schema/struct-member-invalid-dict.json
create mode 100644 tests/qapi-schema/struct-member-invalid-dict.out
create mode 100644 tests/qapi-schema/union-branch-invalid-dict.err
create mode 100644 tests/qapi-schema/union-branch-invalid-dict.exit
create mode 100644 tests/qapi-schema/union-branch-invalid-dict.json
create mode 100644 tests/qapi-schema/union-branch-invalid-dict.out
--
2.20.0
next reply other threads:[~2018-12-13 12:37 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-13 12:37 Marc-André Lureau [this message]
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 01/22] qapi: Do not define enumeration value explicitly Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 02/22] qapi: change enum visitor and gen_enum* to take QAPISchemaMember Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 03/22] tests: print enum type members more like object type members Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 04/22] qapi: factor out checking for keys Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 05/22] qapi: improve reporting of unknown or missing keys Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 06/22] qapi: add a dictionary form with 'name' key for enum members Marc-André Lureau
2018-12-13 13:23 ` Markus Armbruster
2018-12-13 14:32 ` Markus Armbruster
2018-12-13 14:35 ` Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 07/22] qapi: pass long form enum to make_enum_members Marc-André Lureau
2018-12-13 14:29 ` Markus Armbruster
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 08/22] qapi: simplify make_enum_members() Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 09/22] qapi: add 'if' to enum members Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 10/22] qapi-events: add 'if' condition to implicit event enum Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 11/22] qapi: rename allow_dict to allow_implicit Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 12/22] qapi: add a dictionary form for TYPE Marc-André Lureau
2018-12-13 13:31 ` Markus Armbruster
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 13/22] qapi: add 'if' to implicit struct members Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 14/22] qapi: add an error in case a discriminator is conditional Marc-André Lureau
2018-12-13 13:34 ` Markus Armbruster
2018-12-13 15:45 ` Markus Armbruster
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 15/22] qapi: add 'if' to union members Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 16/22] qapi: add 'if' to alternate members Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 17/22] qapi: add #if conditions to generated code members Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 18/22] qapi: add 'If:' condition to enum values documentation Marc-André Lureau
2018-12-13 14:03 ` Markus Armbruster
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 19/22] qapi: add 'If:' condition to struct members documentation Marc-André Lureau
2018-12-13 14:05 ` Markus Armbruster
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 20/22] qapi: add condition to variants documentation Marc-André Lureau
2018-12-13 14:06 ` Markus Armbruster
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 21/22] qapi: add more conditions to SPICE Marc-André Lureau
2018-12-13 12:37 ` [Qemu-devel] [PATCH v8 22/22] qapi: add conditions to REPLICATION type/commands on the schema Marc-André Lureau
2018-12-13 14:47 ` [Qemu-devel] [PATCH v8 00/22] qapi: add #if pre-processor conditions to generated code (part 2) Markus Armbruster
2018-12-13 14:52 ` Marc-André Lureau
2018-12-13 16:52 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181213123724.4866-1-marcandre.lureau@redhat.com \
--to=marcandre.lureau@redhat.com \
--cc=armbru@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).