This series makes it possible to use downstream extensions (such as __com.redhat_xyz) and temporary names (such as x-foo) in every position possible in QAPI schemes, with added tests that the generated code still compiles.
There's still some things we could do to the qapi generator, such as normalizing struct member names and C manglings and creating named implicit types up front on the initial parse rather than multiple times in each backend. But that should wait until existing pending patches have landed, to minimize rebase churn. v2 was here: https://lists.gnu.org/archive/html/qemu-devel/2015-04/msg01300.html v3 includes several more of Markus' original RFC series, splits up my work into smaller pieces, incorporates fixes suggested by Markus, and rebases on top of the pending v8 qapi drop nested structs series. The series has changed enough from v2 that it is not worth showing git backport-diff statistics (as only patch 1 survived intact). Eric Blake (8): qapi: Rename identical c_fun()/c_var() into c_name() qapi: Make c_type() consistently convert qapi names qapi: Support downstream enums qapi: Support downstream structs qapi: Support downstream simple unions qapi: Support downstream flat unions qapi: Support downstream alternates qapi: Support downstream events and commands Markus Armbruster (6): qapi: Fix C identifiers generated for names containing '.' qapi: Rename _generate_enum_string() to camel_to_upper() qapi: Rename generate_enum_full_value() to c_enum_const() qapi: Simplify c_enum_const() qapi: Use c_enum_const() in generate_alternate_qtypes() qapi: Move camel_to_upper(), c_enum_const() to closely related code scripts/qapi-commands.py | 51 ++++++++---------- scripts/qapi-event.py | 15 +++--- scripts/qapi-types.py | 44 +++++++-------- scripts/qapi-visit.py | 54 ++++++++++--------- scripts/qapi.py | 96 ++++++++++++++++----------------- tests/qapi-schema/qapi-schema-test.json | 20 +++++++ tests/qapi-schema/qapi-schema-test.out | 21 ++++++-- tests/test-qmp-commands.c | 15 ++++++ 8 files changed, 179 insertions(+), 137 deletions(-) -- 2.1.0