qemu-e2k/qom
Anthony Liguori 33e95c6328 qom: Reimplement Interfaces
The current implementation of Interfaces is poorly designed.  Each interface
that an object implements ends up being an object that's tracked by the
implementing object.  There's all sorts of gymnastics to deal with casting
between these objects.

But an interface shouldn't be associated with an Object.  Interfaces are global
to a class.  This patch moves all Interface knowledge to ObjectClass eliminating
the relationship between Object and Interfaces.

Interfaces are now abstract (as they should be) but this is okay.  Interfaces
essentially act as additional parents for the classes and are treated as such.

With this new implementation, we should fully support derived interfaces
including reimplementing an inherited interface.

PC: Rebased against qom-next merge Jun-2012.

PC: Removed replication of cast logic for interfaces, i.e. there is only
one cast function - object_dynamic_cast() (and object_dynamic_cast_assert())

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Peter A. G. Crosthwaite <peter.crosthwaite@petalogix.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
2012-08-13 11:20:41 +02:00
..
Makefile.objs build: adapt qom/Makefile and move it to Makefile.objs 2012-06-07 09:21:12 +02:00
container.c qom: Fix memory leak in function container_get 2012-05-03 07:04:48 +02:00
cpu.c qom: Introduce CPU class 2012-03-14 22:20:27 +01:00
object.c qom: Reimplement Interfaces 2012-08-13 11:20:41 +02:00
qom-qobject.c qom: add QObject-based property get/set wrappers 2012-02-07 13:52:40 +01:00