1. 14 8月, 2012 39 次提交
  2. 13 8月, 2012 1 次提交
    • A
      qom: Reimplement Interfaces · 33e95c63
      Anthony Liguori 提交于
      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: NAnthony Liguori <aliguori@us.ibm.com>
      Signed-off-by: NPeter A. G. Crosthwaite <peter.crosthwaite@petalogix.com>
      Acked-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NEdgar E. Iglesias <edgar.iglesias@gmail.com>
      33e95c63