2.7 material; hopefully this iteration is close enough for Markus to stick it in his qapi-next staging branch, so we can move on to my other pending series.
Based on master, with no prerequisite patches. Also available as a tag at this location: git fetch git://repo.or.cz/qemu/ericb.git qapi-cleanupv15e and will soon be part of my branch with the rest of the v5 series, at: http://repo.or.cz/qemu/ericb.git/shortlog/refs/heads/qapi v14 was: https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg01486.html Since then, I've rearranged several patches (including moving hunks between patches), added a couple of new ones, and in general addressed a lot of Markus' findings. The comparison to the previous posting looks rather big, but a lot of it is due to comment changes or rebase artifacts from shuffling things around, where a lot of the end results are still the same. 001/23:[0024] [FC] 'qapi-visit: Add visitor.type classification' 002/23:[0036] [FC] 'qapi: Guarantee NULL obj on input visitor callback error' 003/23:[----] [--] 'qmp: Drop dead command->type' 004/23:[0019] [FC] 'qmp-input: Clean up stack handling' 005/23:[down] 'qapi: Use strict QMP input visitor in more places' 006/23:[0007] [FC] 'qmp-input: Don't consume input when checking has_member' 007/23:[0014] [FC] 'qapi-commands: Wrap argument visit in visit_start_struct' 008/23:[down] 'monitor: Let generated code validate arguments' 009/23:[0005] [FC] 'qom: Wrap prop visit in visit_start_struct' 010/23:[0052] [FC] 'qmp-input: Require struct push to visit members of top dict' 011/23:[0032] [FC] 'qmp-input: Refactor when list is advanced' 012/23:[0253] [FC] 'qapi: Document visitor interfaces, add assertions' 013/23:[0006] [FC] 'tests: Add check-qnull' 014/23:[0026] [FC] 'qapi: Add visit_type_null() visitor' 015/23:[0046] [FC] 'qmp: Support explicit null during visits' 016/23:[----] [--] 'spapr_drc: Expose 'null' in qom-get when there is no fdt' 017/23:[down] 'qmp: Add qmp_output_visitor_reset()' 018/23:[0024] [FC] 'qmp: Tighten output visitor rules' 019/23:[0040] [FC] 'qapi: Split visit_end_struct() into pieces' 020/23:[down] 'tests/string-input-visitor: Add negative integer tests' 021/23:[down] 'qapi: Fix string input visitor handling of invalid list' 022/23:[0082] [FC] 'qapi: Simplify semantics of visit_next_list()' 023/23:[0108] [FC] 'qapi: Change visit_type_FOO() to no longer return partial objects' Eric Blake (22): qapi-visit: Add visitor.type classification qapi: Guarantee NULL obj on input visitor callback error qmp: Drop dead command->type qmp-input: Clean up stack handling qapi: Use strict QMP input visitor in more places qmp-input: Don't consume input when checking has_member qapi-commands: Wrap argument visit in visit_start_struct monitor: Let generated code validate arguments qom: Wrap prop visit in visit_start_struct qmp-input: Require struct push to visit members of top dict qmp-input: Refactor when list is advanced qapi: Document visitor interfaces, add assertions tests: Add check-qnull qapi: Add visit_type_null() visitor qmp: Support explicit null during visits spapr_drc: Expose 'null' in qom-get when there is no fdt qmp: Add qmp_output_visitor_reset() qmp: Tighten output visitor rules qapi: Split visit_end_struct() into pieces qapi: Fix string input visitor handling of invalid list qapi: Simplify semantics of visit_next_list() qapi: Change visit_type_FOO() to no longer return partial objects Markus Armbruster (1): tests/string-input-visitor: Add negative integer tests include/qapi/visitor.h | 492 +++++++++++++++++++++++++++++++++-- include/qapi/visitor-impl.h | 81 ++++-- scripts/qapi-commands.py | 20 +- scripts/qapi-event.py | 5 +- scripts/qapi-visit.py | 53 ++-- include/qapi/dealloc-visitor.h | 5 + include/qapi/opts-visitor.h | 5 + include/qapi/qmp-input-visitor.h | 9 +- include/qapi/qmp-output-visitor.h | 1 + include/qapi/qmp/dispatch.h | 6 - include/qapi/string-input-visitor.h | 5 + include/qapi/string-output-visitor.h | 5 + qapi/qapi-visit-core.c | 106 ++++++-- block/crypto.c | 14 +- hw/ppc/spapr_drc.c | 11 +- hw/virtio/virtio-balloon.c | 15 +- monitor.c | 4 + qapi/opts-visitor.c | 70 ++--- qapi/qapi-dealloc-visitor.c | 43 +-- qapi/qmp-dispatch.c | 18 +- qapi/qmp-input-visitor.c | 189 ++++++++------ qapi/qmp-output-visitor.c | 71 ++--- qapi/qmp-registry.c | 1 - qapi/string-input-visitor.c | 51 ++-- qapi/string-output-visitor.c | 43 ++- qmp.c | 2 +- qom/object.c | 5 +- qom/object_interfaces.c | 33 ++- qom/qom-qobject.c | 3 +- replay/replay-input.c | 2 +- tests/check-qnull.c | 75 ++++++ tests/test-qmp-commands.c | 15 +- tests/test-qmp-input-strict.c | 21 +- tests/test-qmp-input-visitor.c | 39 ++- tests/test-qmp-output-visitor.c | 29 ++- tests/test-string-input-visitor.c | 23 +- tests/test-visitor-serialization.c | 2 +- util/qemu-sockets.c | 2 +- docs/qapi-code-gen.txt | 44 +++- qmp-commands.hx | 148 +---------- tests/.gitignore | 1 + tests/Makefile | 6 +- 42 files changed, 1198 insertions(+), 575 deletions(-) create mode 100644 tests/check-qnull.c -- 2.5.5