Here is the patch series from last thursday, on steroids. Patches 1 to 12 include the QOM parts of the previous series, plus other things I found after a more thorough code review. In particular I implemented the restriction of partial-path search to a particular type, fixed some problems with interfaces and the composition tree, and added some docs.
Patches 13 to 25 include the qdev parts of the previous series, rebased to include the LostTickPolicy property type (which, it turns out, can be very nicely generalized). I added a cleanup patch to remove two fields from PropertyInfo. Patches 26 and 27 are the beginning of cool things to come. By converting the OMAP clock into a QOM object, the clocks can be changed from PROP_PTR to link properties. Paolo Bonzini (27): qom: clean up cast macros qom: more documentation on subclassing qom: clean up/optimize object_dynamic_cast qom: avoid useless conversions from string to type qom: do not include qdev header file qom: add QObject-based property get/set wrappers qom: add property get/set wrappers for C types qom: fix off-by-one qom: add object_resolve_path_type qom: use object_resolve_path_type for links qom: fix canonical paths vs. interfaces qom: add property get/set wrappers for links qdev: remove direct calls to print/parse qdev: allow reusing get/set for legacy property qdev: remove parse method for string properties qdev: remove print/parse methods from LostTickPolicy properties qdev: remove parse/print methods for mac properties qdev: make the non-legacy pci address property accept an integer qdev: remove parse/print methods for pointer properties qdev: let QOM free properties qdev: fix off-by-one qdev: access properties via QOM qdev: inline qdev_prop_set into qdev_prop_set_ptr qdev: initialize properties via QOM qdev: remove unused fields from PropertyInfo omap_clk: convert to QOM omap: remove PROP_PTR properties hw/omap.h | 4 + hw/omap1.c | 6 +- hw/omap2.c | 16 +- hw/omap_clk.c | 357 ++++++++++++++++++++--------------- hw/omap_gpio.c | 46 +++-- hw/omap_intc.c | 26 ++- hw/qdev-addr.c | 7 +- hw/qdev-monitor.c | 30 ++-- hw/qdev-properties.c | 510 +++++++++++++++++++++----------------------- hw/qdev.c | 32 ++-- hw/qdev.h | 39 +--- include/qemu/object.h | 241 ++++++++++++++++++++++-- include/qemu/qom-qobject.h | 43 ++++ qemu-common.h | 1 + qerror.c | 4 + qerror.h | 3 + qmp.c | 18 +-- qom/object.c | 289 ++++++++++++++++++++++------ qom/Makefile | 2 +- qom/qom-qobject.c | 44 ++++ create mode 100644 include/qemu/qom-qobject.h create mode 100644 qom/qom-qobject.c 17 files changed, 1036 insertions(+), 592 deletions(-) -- 1.7.7.6