[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v1 3/7] qdev-core: Introduce DEVICE super cl
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] [RFC PATCH v1 3/7] qdev-core: Introduce DEVICE super class cast macros |
Date: |
Tue, 18 Jun 2013 13:12:02 +0300 |
On Tue, Jun 18, 2013 at 07:45:36PM +1000, address@hidden wrote:
> From: Peter Crosthwaite <address@hidden>
>
> Add macros DEVICE_SUPER_CLASS and DEVICE_GET_SUPER_CLASS. These are the
> similar to their respective non SUPER versions, except instead of
> returning the class object for the concrete class, they return their
> parent classes implementation (usually some form of abstract class).
>
> Signed-off-by: Peter Crosthwaite <address@hidden>
> ---
>
> include/hw/qdev-core.h | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
> index 7fbffcb..96647c4 100644
> --- a/include/hw/qdev-core.h
> +++ b/include/hw/qdev-core.h
> @@ -16,6 +16,10 @@ enum {
> #define DEVICE(obj) OBJECT_CHECK(DeviceState, (obj), TYPE_DEVICE)
> #define DEVICE_CLASS(klass) OBJECT_CLASS_CHECK(DeviceClass, (klass),
> TYPE_DEVICE)
> #define DEVICE_GET_CLASS(obj) OBJECT_GET_CLASS(DeviceClass, (obj),
> TYPE_DEVICE)
> +#define DEVICE_SUPER_CLASS(klass, typename) \
> + DEVICE_CLASS(object_class_get_super(OBJECT_CLASS(klass), typename))
> +#define DEVICE_GET_SUPER_CLASS(obj, typename) \
> + DEVICE_SUPER_CLASS(DEVICE_GET_CLASS(obj), typename)
DEVICE_GET_SUPER_CLASS is not a great name. It actually gets you
a device not a class.
I know this mirrors DEVICE_GET_CLASS that's not
a great name too.
Generally in cases where we change the type of object but in fact return
same pointer, it would be better to rename _GET to _CAST I think.
>
> typedef int (*qdev_initfn)(DeviceState *dev);
> typedef int (*qdev_event)(DeviceState *dev);
> --
> 1.8.3.rc1.44.gb387c77.dirty
- [Qemu-devel] [RFC PATCH v1 0/7] QOM Super class access, peter . crosthwaite, 2013/06/18
- [Qemu-devel] [RFC PATCH v1 1/7] target-arm/cpu.c: delete un-needed instance/class sizes, peter . crosthwaite, 2013/06/18
- [Qemu-devel] [RFC PATCH v1 2/7] qom: Add super class accessor, peter . crosthwaite, 2013/06/18
- [Qemu-devel] [RFC PATCH v1 3/7] qdev-core: Introduce DEVICE super class cast macros, peter . crosthwaite, 2013/06/18
- Re: [Qemu-devel] [RFC PATCH v1 3/7] qdev-core: Introduce DEVICE super class cast macros,
Michael S. Tsirkin <=
- [Qemu-devel] [RFC PATCH v1 4/7] qom/cpu: Introduce CPU super class cast macros, peter . crosthwaite, 2013/06/18
- [Qemu-devel] [RFC PATCH v1 5/7] target-arm: Remove ARMCPUClass, peter . crosthwaite, 2013/06/18
- [Qemu-devel] [RFC PATCH v1 6/7] target-microblaze: Remove MicroblazeCPUClass, peter . crosthwaite, 2013/06/18
- [Qemu-devel] [RFC PATCH v1 7/7] i8254: Remove [KVM]PITClass, peter . crosthwaite, 2013/06/18
- Re: [Qemu-devel] [RFC PATCH v1 0/7] QOM Super class access, Andreas Färber, 2013/06/18
- Re: [Qemu-devel] [RFC PATCH v1 0/7] QOM Super class access, Michael S. Tsirkin, 2013/06/18