This is a subset of my earlier post "Rip out dynamic JSON parsing"[1], and then a rebase of that work onto master. It is available here:
git fetch git://repo.or.cz/qemu/ericb.git qapi-dynamic-json-v3 the tag name is a bit of a misnomer for the current series, but is historically accurate. Since v2 [2], I've split up the original patches 2-3 (done manually, and mixing multiple cleanups into one) into a much longer sequence of patches 2-11 (separate cleanups in 2, 3, 10, 11, and use of Coccinelle instead of manual for the bulk of the work); I've also dropped the original patch 6. I've also addressed some of the comments left by Markus on v2, although I still couldn't figure out how to use an 'id' instead of "device":"floppy0" in 12. This is 2.10 material, and will probably be a conflict magnet the longer it is not applied (conversely, since it is now generated by Coccinelle, it will be a lot easier to regenerate the series if another round of rebasing is needed). [1] https://lists.gnu.org/archive/html/qemu-devel/2016-11/msg05425.html [2] https://lists.gnu.org/archive/html/qemu-devel/2017-01/msg03661.html 001/13:[0030] [FC] 'pci: Use struct instead of QDict to pass back parameters' 002/13:[down] 'pci: Reduce scope of error injection' 003/13:[down] 's390x: Drop useless casts' 004/13:[down] 'coccinelle: Add script to remove useless QObject casts' 005/13:[down] 'qobject: Drop useless QObject casts' 006/13:[down] 'qobject: Add helper macros for common scalar insertions' 007/13:[down] 'block: Use simpler QDict/QList scalar insertion macros' 008/13:[down] 'tests: Use simpler QDict/QList scalar insertion macros' 009/13:[down] 'qobject: Use simpler QDict/QList scalar insertion macros' 010/13:[down] 'block: Simplify bdrv_append_temp_snapshot() logic' 011/13:[down] 'QemuOpts: Simplify qemu_opts_to_qdict()' 012/13:[----] [--] 'fdc-test: Avoid deprecated 'change' command' 013/13:[0024] [FC] 'test-qga: Actually test 0xff sync bytes' Eric Blake (13): pci: Use struct instead of QDict to pass back parameters pci: Reduce scope of error injection s390x: Drop useless casts coccinelle: Add script to remove useless QObject casts qobject: Drop useless QObject casts qobject: Add helper macros for common scalar insertions block: Use simpler QDict/QList scalar insertion macros tests: Use simpler QDict/QList scalar insertion macros qobject: Use simpler QDict/QList scalar insertion macros block: Simplify bdrv_append_temp_snapshot() logic QemuOpts: Simplify qemu_opts_to_qdict() fdc-test: Avoid deprecated 'change' command test-qga: Actually test 0xff sync bytes include/hw/pci/pcie_aer.h | 4 - include/qapi/qmp/qdict.h | 8 ++ include/qapi/qmp/qlist.h | 8 ++ block.c | 58 ++++++--------- block/blkdebug.c | 8 +- block/blkverify.c | 11 ++- block/curl.c | 2 +- block/file-posix.c | 8 +- block/file-win32.c | 4 +- block/iscsi.c | 2 +- block/nbd.c | 41 +++++------ block/nfs.c | 43 +++++------ block/null.c | 2 +- block/qcow2.c | 4 +- block/quorum.c | 16 ++-- block/rbd.c | 16 ++-- block/ssh.c | 16 ++-- block/vvfat.c | 10 +-- blockdev.c | 30 ++++---- hw/block/xen_disk.c | 2 +- hw/pci/pcie_aer.c | 48 +++++++----- hw/usb/xen-usb.c | 12 +-- monitor.c | 23 +++--- qapi/qmp-event.c | 2 +- qemu-img.c | 6 +- qemu-io.c | 2 +- qemu-nbd.c | 2 +- qobject/qdict.c | 2 +- target/s390x/cpu_models.c | 4 +- tests/check-qdict.c | 142 ++++++++++++++++++------------------ tests/check-qlist.c | 4 +- tests/device-introspect-test.c | 4 +- tests/fdc-test.c | 5 +- tests/libqtest.c | 8 ++ tests/test-qemu-opts.c | 4 +- tests/test-qga.c | 34 +++++++-- tests/test-qmp-commands.c | 30 ++++---- tests/test-qmp-event.c | 30 ++++---- tests/test-qobject-output-visitor.c | 6 +- util/qemu-option.c | 6 +- MAINTAINERS | 1 + scripts/coccinelle/qobject.cocci | 35 +++++++++ 42 files changed, 375 insertions(+), 328 deletions(-) create mode 100644 scripts/coccinelle/qobject.cocci -- 2.9.3