This series is a spin-off from https://lists.nongnu.org/archive/html/qemu-devel/2024-06/msg00807.html
That series introduced a pragma allowing a schema to declare extra features that would be exposed to code. Following Markus' suggestion: https://lists.nongnu.org/archive/html/qemu-devel/2024-07/msg03765.html I've changed impl such that we expose all features to the code regardless of whether they are special, and don't require any pragma. I've split it from the QGA patches since it makes more sense to work on this bit in isolation. Changed in v2: * Reference QapiSpecialFeature enums constants when defining QapiFeature enums constants for deprecated & unstable * Don't expose qapi-features.h in qapi-types.h, to avoid global namespace pollution, instead pull it into only the .c files that need it. This avoids the need to add a 'prefix' to enum constants * Collect all features during parse time, rather than generate time, to allow earlier error reporting of the 64 feature limit Daniel P. Berrangé (4): qapi: cope with feature names containing a '-' qapi: change 'unsigned special_features' to 'uint64_t features' qapi: rename 'special_features' to 'features' qapi: expose all schema features to code include/qapi/compat-policy.h | 2 +- include/qapi/qmp/dispatch.h | 4 +-- include/qapi/util.h | 2 +- include/qapi/visitor-impl.h | 4 +-- include/qapi/visitor.h | 12 +++---- meson.build | 1 + qapi/qapi-forward-visitor.c | 8 ++--- qapi/qapi-util.c | 6 ++-- qapi/qapi-visit-core.c | 12 +++---- qapi/qmp-dispatch.c | 2 +- qapi/qmp-registry.c | 4 +-- qapi/qobject-input-visitor.c | 4 +-- qapi/qobject-output-visitor.c | 6 ++-- scripts/qapi/commands.py | 5 +-- scripts/qapi/features.py | 62 +++++++++++++++++++++++++++++++++++ scripts/qapi/gen.py | 9 ++--- scripts/qapi/main.py | 2 ++ scripts/qapi/schema.py | 19 ++++++++++- scripts/qapi/types.py | 18 +++++----- scripts/qapi/visit.py | 17 +++++----- 20 files changed, 143 insertions(+), 56 deletions(-) create mode 100644 scripts/qapi/features.py -- 2.46.0