Hi,
object_class_dynamic_cast() checks whether a class implements
a type name, and return the class casted appropriately. This
also works with interfaces, except when an interface is
implemented multiple times (by intermediate abstract parents /
interfaces).
This series factors object_class_implements_type() out of
object_class_dynamic_cast() and use it (at least the meaning
seems clearer to me when reviewing).
I could get it working with object_class_foreach() but for
some reason fail at writing a proper test. Posting the last
patch as RFC so we can discuss it on the list.
Regards,
Phil.
Philippe Mathieu-Daudé (6):
qom: Factor object_class_dynamic_cast_ambiguous() out
qom: Add object_class_implements_type()
qom: Test object_class_implements_type()
qom: Prefer object_class_implements_type() to check type
implementation
qom: Use object_class_implements_type() in object_class_foreach()
XXX qom: Test object_class_get_list()
include/qom/object.h | 10 ++++++
chardev/char.c | 2 +-
hw/arm/xlnx-versal-virt.c | 2 +-
hw/core/cpu-common.c | 2 +-
hw/core/machine.c | 4 +--
hw/i386/xen/xen_platform.c | 2 +-
hw/pci/pci.c | 6 ++--
qom/object.c | 29 ++++++++++++++---
qom/object_interfaces.c | 2 +-
qom/qom-qmp-cmds.c | 4 +--
system/qdev-monitor.c | 4 +--
system/tpm.c | 2 +-
target/alpha/cpu.c | 2 +-
target/rx/cpu.c | 2 +-
tests/unit/check-qom-interface.c | 56 ++++++++++++++++++++++++++++++++
15 files changed, 108 insertions(+), 21 deletions(-)
--
2.47.1