summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2013-08-01 15:41:12 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2013-09-17 22:37:01 +0200
commitd195e317b1194728ee5e5bc2c5a3d4036d718799 (patch)
treed2b8963e6852aee6c7c6146f0af33417da1901d0
parent04767956e3128713fa1d4103382bca0f3de2b4dc (diff)
downloadefl-d195e317b1194728ee5e5bc2c5a3d4036d718799.tar.gz
add EO2_HOOK_DO_PREPARE
-rw-r--r--src/lib/eo/Eo.h22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
index 373689f401..c8720528e2 100644
--- a/src/lib/eo/Eo.h
+++ b/src/lib/eo/Eo.h
@@ -652,6 +652,10 @@ EAPI extern Eo2_Hook_Class_Do eo2_hook_class_do_post;
if (Hook) \
Hook(call.klass_id, call.obj_id, call.func, __VA_ARGS__);
+#define EO2_HOOK_DO_PREPARE(Hook, Var) \
+ if (Hook) \
+ Hook(__FILE__, __FUNCTION__, __LINE__, Var);
+
// cache OP id, get real fct and object data then do the call
#define EO2_FUNC_COMMON_OP(Name, DefRet, Type) \
Eo2_Op_Call_Data call; \
@@ -703,7 +707,7 @@ EAPI extern Eo2_Hook_Class_Do eo2_hook_class_do_post;
void \
Name(__VA_ARGS__) \
{ \
- typedef void (*__##Name##_func)(Eo *, void *obj_data, __VA_ARGS__); \
+ typedef void (*__##Name##_func)(Eo *, void *obj_data, __VA_ARGS__);\
EO2_FUNC_COMMON_OP(Name, , EO_OP_TYPE_REGULAR); \
EO2_HOOK_CALL_PREPAREV(eo2_hook_call_pre, Arguments); \
_func_(call.obj_id, call.data, Arguments); \
@@ -795,56 +799,56 @@ EAPI int eo2_call_stack_depth();
do \
{ \
Eo *_objid_ = objid; \
- if (eo2_hook_do_pre) eo2_hook_do_pre(__FILE__, __FUNCTION__, __LINE__, _objid_); \
+ EO2_HOOK_DO_PREPARE(eo2_hook_do_pre, _objid_); \
if (eo2_do_start(_objid_, EINA_FALSE)) \
{ \
Eo *_id_clean_ EO2_DO_CLEANUP = _objid_; \
__VA_ARGS__; \
(void) _id_clean_; \
} \
- if (eo2_hook_do_post) eo2_hook_do_post(__FILE__, __FUNCTION__, __LINE__, _objid_); \
+ EO2_HOOK_DO_PREPARE(eo2_hook_do_post, _objid_);\
} while (0)
#define eo2_do_super(objid, ...) \
do \
{ \
Eo *_objid_ = objid; \
- if (eo2_hook_do_pre) eo2_hook_do_pre(__FILE__, __FUNCTION__, __LINE__, _objid_); \
+ EO2_HOOK_DO_PREPARE(eo2_hook_do_pre, _objid_); \
if (eo2_do_start(_objid_, EINA_TRUE)) \
{ \
Eo *_id_clean_ EO2_DO_CLEANUP = _objid_; \
__VA_ARGS__; \
(void) _id_clean_; \
} \
- if (eo2_hook_do_post) eo2_hook_do_post(__FILE__, __FUNCTION__, __LINE__, _objid_); \
+ EO2_HOOK_DO_PREPARE(eo2_hook_do_post, _objid_);\
} while (0)
#define eo2_class_do(clsid, ...) \
do \
{ \
const Eo_Class *_clsid_ = clsid; \
- if (eo2_hook_class_do_pre) eo2_hook_class_do_pre(__FILE__, __FUNCTION__, __LINE__, _clsid_); \
+ EO2_HOOK_DO_PREPARE(eo2_hook_class_do_pre, _clsid_); \
if (eo2_class_do_start(_clsid_, EINA_FALSE)) \
{ \
const Eo_Class *_id_clean_ EO2_CLASS_DO_CLEANUP = _clsid_; \
__VA_ARGS__; \
(void) _id_clean_; \
} \
- if (eo2_hook_class_do_post) eo2_hook_class_do_post(__FILE__, __FUNCTION__, __LINE__, _clsid_); \
+ EO2_HOOK_DO_PREPARE(eo2_hook_class_do_post, _clsid_); \
} while (0)
#define eo2_class_super_do(clsid, ...) \
do \
{ \
const Eo_Class *_clsid_ = clsid; \
- if (eo2_hook_class_do_pre) eo2_hook_class_do_pre(__FILE__, __FUNCTION__, __LINE__, _clsid_); \
+ EO2_HOOK_DO_PREPARE(eo2_hook_class_do_pre, _clsid_); \
if (eo2_class_do_start(_clsid_, EINA_TRUE)) \
{ \
const Eo_Class *_id_clean_ EO2_CLASS_DO_CLEANUP = _clsid_; \
__VA_ARGS__; \
(void) _id_clean_; \
} \
- if (eo2_hook_class_do_post) eo2_hook_class_do_post(__FILE__, __FUNCTION__, __LINE__, _clsid_); \
+ EO2_HOOK_DO_PREPARE(eo2_hook_class_do_post, _clsid_); \
} while (0)
/*****************************************************************************/