eo2: fixed EO2_CLASS_FUNC_BODY and etc. functions.

This commit is contained in:
Tom Hacohen 2013-07-31 17:16:59 +01:00
parent 4f73887b47
commit 1db137fa8c
1 changed files with 9 additions and 8 deletions

View File

@ -634,9 +634,10 @@ typedef struct _Eo2_Op_Call_Data
__##Name##_func _func_ = (__##Name##_func) call.func; \
return Func; \
#define _EO2_CLASS_FUNC_COMMON(Name, Ret, Func, DefRet, Class) \
#define _EO2_CLASS_FUNC_COMMON(Name, Ret, Func, DefRet) \
static Eo_Op op = EO_NOOP; \
if ( op == EO_NOOP ) op = eo2_api_op_id_get((void*)Name, Class); \
if ( op == EO_NOOP ) \
op = eo2_api_op_id_get((void*)Name, call.klass_id); \
Eo2_Op_Call_Data call; \
if (!eo2_call_resolve(op, &call)) return DefRet; \
__##Name##_func _func_ = (__##Name##_func) call.func; \
@ -664,25 +665,25 @@ typedef struct _Eo2_Op_Call_Data
#define EO2_VOID_FUNC_BODYV(Name, Func, ...) EO2_FUNC_BODYV(Name, void, Func, , __VA_ARGS__)
// to define a EAPI class function
#define EO2_CLASS_FUNC_BODY(Name, Ret, DefRet, Class) \
#define EO2_CLASS_FUNC_BODY(Name, Ret, DefRet) \
Ret \
Name(void) \
{ \
typedef Ret (*__##Name##_func)(Eo_Class *); \
_EO2_CLASS_FUNC_COMMON(Name, Ret, _func_(call.klass_id), DefRet, Class) \
_EO2_CLASS_FUNC_COMMON(Name, Ret, _func_(call.klass_id), DefRet) \
}
#define EO2_VOID_CLASS_FUNC_BODY(Name, Class) EO2_CLASS_FUNC_BODY(Name, void, , Class)
#define EO2_VOID_CLASS_FUNC_BODY(Name) EO2_CLASS_FUNC_BODY(Name, void, )
#define EO2_CLASS_FUNC_BODYV(Name, Ret, Func, DefRet, Class, ...) \
#define EO2_CLASS_FUNC_BODYV(Name, Ret, Func, DefRet, ...) \
Ret \
Name(__VA_ARGS__) \
{ \
typedef Ret (*__##Name##_func)(Eo_Class *, __VA_ARGS__); \
_EO2_CLASS_FUNC_COMMON(Name, Ret, Func, DefRet, Class) \
_EO2_CLASS_FUNC_COMMON(Name, Ret, Func, DefRet) \
}
#define EO2_VOID_CLASS_FUNC_BODYV(Name, Func, Class, ...) EO2_CLASS_FUNC_BODYV(Name, void, Func, , Class, __VA_ARGS__)
#define EO2_VOID_CLASS_FUNC_BODYV(Name, Func, ...) EO2_CLASS_FUNC_BODYV(Name, void, Func, , __VA_ARGS__)
// OP ID of an overriding function
#define EO2_OP_OVERRIDE ((Eo_Op) -1)