@@ -567,7 +567,7 @@ struct Object
*/
#define DECLARE_INSTANCE_CHECKER(InstanceType, OBJ_NAME, TYPENAME) \
static inline G_GNUC_UNUSED InstanceType * \
- OBJ_NAME(void *obj) \
+ OBJ_NAME(const void *obj) \
{ return OBJECT_CHECK(InstanceType, obj, TYPENAME); }
/**
@@ -581,14 +581,16 @@ struct Object
*
* This macro will provide the three standard type cast functions for a
* QOM type.
+ *
+ *FIXME: Use _Generic to make this const-safe
*/
#define DECLARE_CLASS_CHECKERS(ClassType, OBJ_NAME, TYPENAME) \
static inline G_GNUC_UNUSED ClassType * \
- OBJ_NAME##_GET_CLASS(void *obj) \
+ OBJ_NAME##_GET_CLASS(const void *obj) \
{ return OBJECT_GET_CLASS(ClassType, obj, TYPENAME); } \
\
static inline G_GNUC_UNUSED ClassType * \
- OBJ_NAME##_CLASS(void *klass) \
+ OBJ_NAME##_CLASS(const void *klass) \
{ return OBJECT_CLASS_CHECK(ClassType, klass, TYPENAME); }
/**
The existing type check macros all unconditionally drop const qualifiers from their arguments. Keep this behavior in the macros generated by DECLARE_*CHECKER* by now. In the future, we might use _Generic to preserve const-ness of the cast function arguments. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- include/qom/object.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)