eo2: add eo2_data_scope_get()

use it in function body
This commit is contained in:
Jérémy Zurcher 2013-07-09 14:21:11 +02:00 committed by Tom Hacohen
parent bfa48634cf
commit 71341334a9
2 changed files with 10 additions and 9 deletions

View File

@ -594,7 +594,7 @@ EAPI Eina_Bool eo_shutdown(void);
typedef struct _Eo_Internal _Eo;
#define EO_FUNC_CALL(...) func(objid, __VA_ARGS__)
#define EO_FUNC_CALL(...) func(obj_data, __VA_ARGS__)
/* XXX: Essential, because we need to adjust objid for comp objects. */
#define EO_FUNC_BODY(Name, Ret, Id, Func, DefRet, ...) \
@ -602,18 +602,14 @@ EAPI Ret \
Name(_Eo *obj, Eo *objid, __VA_ARGS__) \
{ \
Ret (*func)(Eo *, __VA_ARGS__) = eo2_func_get(obj, Id(Name)); \
if (func) \
{ \
return Func; \
} \
else \
{ \
return DefRet; \
} \
if (!func) return DefRet; \
void *obj_data = eo2_data_scope_get(obj); \
return Func; \
}
EAPI _Eo * eo2_do_start(Eo *obj_id);
EAPI void * eo2_data_scope_get(const _Eo *obj);
#define eo2_func_get(obj_id, op) eo2_func_get_internal(obj_id, NULL, op)
EAPI void * eo2_func_get_internal(_Eo *obj, const Eo_Class *klass, Eo_Op op);

View File

@ -263,6 +263,11 @@ eo2_do_start(Eo *obj_id)
return obj;
}
EAPI void *eo2_data_scope_get(const _Eo *obj)
{
return _eo_data_scope_get(obj, obj->klass);
}
static void *
_eo2_func_get(const _Eo_Class *cur_klass, Eo_Op op)
{