2.7 material; much less churn this time through, but enough that it was easier for me to repost than to make Markus do the touchups his review found.
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-cleanupv16e 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 v15 was: https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg04147.html Since then, I deferred the qmp-commands.hx patch to later (Marc-André's solution may be better), and split two others while addressing review comments. 001/24:[----] [--] 'qapi-visit: Add visitor.type classification' 002/24:[0014] [FC] 'qapi: Guarantee NULL obj on input visitor callback error' 003/24:[----] [--] 'qmp: Drop dead command->type' 004/24:[----] [--] 'qmp-input: Clean up stack handling' 005/24:[down] 'qapi: Consolidate QMP input visitor creation' 006/24:[0042] [FC] 'qapi: Use strict QMP input visitor in more places' 007/24:[----] [--] 'qmp-input: Don't consume input when checking has_member' 008/24:[----] [--] 'qapi-commands: Wrap argument visit in visit_start_struct' 009/24:[0025] [FC] 'qom: Wrap prop visit in visit_start_struct' 010/24:[0002] [FC] 'qmp-input: Require struct push to visit members of top dict' 011/24:[0004] [FC] 'qmp-input: Refactor when list is advanced' 012/24:[0021] [FC] 'qapi: Document visitor interfaces, add assertions' 013/24:[----] [--] 'tests: Add check-qnull' 014/24:[0005] [FC] 'qapi: Add visit_type_null() visitor' 015/24:[0014] [FC] 'qmp: Support explicit null during visits' 016/24:[----] [--] 'spapr_drc: Expose 'null' in qom-get when there is no fdt' 017/24:[----] [--] 'qmp: Add qmp_output_visitor_reset()' 018/24:[----] [--] 'qmp: Tighten output visitor rules' 019/24:[0010] [FC] 'qapi: Split visit_end_struct() into pieces' 020/24:[down] 'qapi: Don't pass NULL to printf in string input visitor' 021/24:[----] [--] 'tests/string-input-visitor: Add negative integer tests' 022/24:[0002] [FC] 'qapi: Fix string input visitor handling of invalid list' 023/24:[0010] [FC] 'qapi: Simplify semantics of visit_next_list()' 024/24:[0012] [FC] 'qapi: Change visit_type_FOO() to no longer return partial objects' Eric Blake (23): 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: Consolidate QMP input visitor creation 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 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: Don't pass NULL to printf in string input visitor 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 | 12 +- 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 | 111 ++++++-- block/crypto.c | 14 +- hw/ppc/spapr_drc.c | 11 +- hw/virtio/virtio-balloon.c | 15 +- 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 | 42 +-- 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 | 42 ++- 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 +++- tests/.gitignore | 1 + tests/Makefile | 6 +- 40 files changed, 1198 insertions(+), 432 deletions(-) create mode 100644 tests/check-qnull.c -- 2.5.5