Patchwork [v2,01/27] qom: clean up cast macros

login
register
mail settings
Submitter Paolo Bonzini
Date Feb. 4, 2012, 8:02 a.m.
Message ID <1328342577-25732-2-git-send-email-pbonzini@redhat.com>
Download mbox | patch
Permalink /patch/139532/
State New
Headers show

Comments

Paolo Bonzini - Feb. 4, 2012, 8:02 a.m.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 include/qemu/object.h |   22 +++++++++++++++-------
 1 files changed, 15 insertions(+), 7 deletions(-)
Anthony Liguori - Feb. 6, 2012, 2:03 p.m.
On 02/04/2012 02:02 AM, Paolo Bonzini wrote:
> Signed-off-by: Paolo Bonzini<pbonzini@redhat.com>

Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>

Regards,

Anthony Liguori

> ---
>   include/qemu/object.h |   22 +++++++++++++++-------
>   1 files changed, 15 insertions(+), 7 deletions(-)
>
> diff --git a/include/qemu/object.h b/include/qemu/object.h
> index 9d0251d..ab1c48c 100644
> --- a/include/qemu/object.h
> +++ b/include/qemu/object.h
> @@ -259,6 +259,16 @@ struct TypeInfo
>       ((Object *)(obj))
>
>   /**
> + * OBJECT_CLASS:
> + * @class: A derivative of #ObjectClas.
> + *
> + * Converts a class to an #ObjectClass.  Since all objects are #Objects,
> + * this function will always succeed.
> + */
> +#define OBJECT_CLASS(class) \
> +    ((ObjectClass *)(class))
> +
> +/**
>    * OBJECT_CHECK:
>    * @type: The C type to use for the return value.
>    * @obj: A derivative of @type to cast.
> @@ -272,7 +282,7 @@ struct TypeInfo
>    * generated.
>    */
>   #define OBJECT_CHECK(type, obj, name) \
> -    ((type *)object_dynamic_cast_assert((Object *)(obj), (name)))
> +    ((type *)object_dynamic_cast_assert(OBJECT(obj), (name)))
>
>   /**
>    * OBJECT_CLASS_CHECK:
> @@ -280,11 +290,12 @@ struct TypeInfo
>    * @obj: A derivative of @type to cast.
>    * @name: the QOM typename of @class.
>    *
> - * A type safe version of @object_check_class.  This macro is typically wrapped
> - * by each type to perform type safe casts of a class to a specific class type.
> + * A type safe version of @object_class_dynamic_cast_assert.  This macro is
> + * typically wrapped by each type to perform type safe casts of a class to a
> + * specific class type.
>    */
>   #define OBJECT_CLASS_CHECK(class, obj, name) \
> -    ((class *)object_class_dynamic_cast_assert((ObjectClass *)(obj), (name)))
> +    ((class *)object_class_dynamic_cast_assert(OBJECT_CLASS(obj), (name)))
>
>   /**
>    * OBJECT_GET_CLASS:
> @@ -299,9 +310,6 @@ struct TypeInfo
>   #define OBJECT_GET_CLASS(class, obj, name) \
>       OBJECT_CLASS_CHECK(class, object_get_class(OBJECT(obj)), name)
>
> -#define OBJECT_CLASS(class) \
> -    ((ObjectClass *)(class))
> -
>   /**
>    * InterfaceClass:
>    * @parent_class: the base class

Patch

diff --git a/include/qemu/object.h b/include/qemu/object.h
index 9d0251d..ab1c48c 100644
--- a/include/qemu/object.h
+++ b/include/qemu/object.h
@@ -259,6 +259,16 @@  struct TypeInfo
     ((Object *)(obj))
 
 /**
+ * OBJECT_CLASS:
+ * @class: A derivative of #ObjectClas.
+ *
+ * Converts a class to an #ObjectClass.  Since all objects are #Objects,
+ * this function will always succeed.
+ */
+#define OBJECT_CLASS(class) \
+    ((ObjectClass *)(class))
+
+/**
  * OBJECT_CHECK:
  * @type: The C type to use for the return value.
  * @obj: A derivative of @type to cast.
@@ -272,7 +282,7 @@  struct TypeInfo
  * generated.
  */
 #define OBJECT_CHECK(type, obj, name) \
-    ((type *)object_dynamic_cast_assert((Object *)(obj), (name)))
+    ((type *)object_dynamic_cast_assert(OBJECT(obj), (name)))
 
 /**
  * OBJECT_CLASS_CHECK:
@@ -280,11 +290,12 @@  struct TypeInfo
  * @obj: A derivative of @type to cast.
  * @name: the QOM typename of @class.
  *
- * A type safe version of @object_check_class.  This macro is typically wrapped
- * by each type to perform type safe casts of a class to a specific class type.
+ * A type safe version of @object_class_dynamic_cast_assert.  This macro is
+ * typically wrapped by each type to perform type safe casts of a class to a
+ * specific class type.
  */
 #define OBJECT_CLASS_CHECK(class, obj, name) \
-    ((class *)object_class_dynamic_cast_assert((ObjectClass *)(obj), (name)))
+    ((class *)object_class_dynamic_cast_assert(OBJECT_CLASS(obj), (name)))
 
 /**
  * OBJECT_GET_CLASS:
@@ -299,9 +310,6 @@  struct TypeInfo
 #define OBJECT_GET_CLASS(class, obj, name) \
     OBJECT_CLASS_CHECK(class, object_get_class(OBJECT(obj)), name)
 
-#define OBJECT_CLASS(class) \
-    ((ObjectClass *)(class))
-
 /**
  * InterfaceClass:
  * @parent_class: the base class