eo: eo_vdo_internal() supports objects and classes

Conflicts:
	src/lib/eo/Eo.h
	src/lib/eo/eo.c
This commit is contained in:
Jérémy Zurcher 2013-09-27 00:11:19 +02:00 committed by Tom Hacohen
parent 12bfc76483
commit ef62885c93
2 changed files with 13 additions and 4 deletions

View File

@ -638,7 +638,7 @@ EAPI Eina_Bool eo_do_internal(const char *file, int line, const Eo *obj, ...);
*
* @see #eo_vdo
*/
EAPI Eina_Bool eo_vdo_internal(const char *file, int line, Eo *obj, va_list *ops);
EAPI Eina_Bool eo_vdo_internal(const char *file, int line, const Eo *obj, va_list *ops);
/**
* @brief Calls the super function for the specific op.

View File

@ -408,11 +408,20 @@ eo_do_internal(const char *file, int line, const Eo *obj_id, ...)
}
EAPI Eina_Bool
eo_vdo_internal(const char *file, int line, Eo *obj_id, va_list *ops)
eo_vdo_internal(const char *file, int line, const Eo *obj_id, va_list *ops)
{
EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, EINA_FALSE);
Eina_Bool obj_ref = !_eo_is_a_class(obj_id);
return _eo_obj_dov_internal(file, line, obj, ops);
if (obj_ref)
{
EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, EINA_FALSE);
return _eo_obj_dov_internal(file, line, obj, ops);
}
else
{
EO_CLASS_POINTER_RETURN_VAL(obj_id, klass, EINA_FALSE);
return _eo_class_dov_internal(file, line, klass, ops);
}
}
EAPI Eina_Bool