eo2: add macros for functions with no argument
authorJérémy Zurcher <jeremy@asynk.ch>
Tue, 9 Jul 2013 15:43:46 +0000 (17:43 +0200)
committerTom Hacohen <tom@stosb.com>
Thu, 10 Apr 2014 03:20:15 +0000 (04:20 +0100)
src/lib/eo/Eo.h

index 816ac67..d522d98 100644 (file)
@@ -594,11 +594,22 @@ EAPI Eina_Bool eo_shutdown(void);
 
 typedef struct _Eo_Internal _Eo;
 
-#define EO_FUNC_CALL(...) func(objid, obj_data, __VA_ARGS__)
+#define EO_FUNC_CALL() func(objid, obj_data)
+#define EO_FUNC_CALLV(...) func(objid, obj_data, __VA_ARGS__)
 
 /* XXX: Essential, because we need to adjust objid for comp objects. */
-#define EO_FUNC_BODY(Name, Ret, Id, Func, DefRet, ...) \
-EAPI Ret \
+#define EO_FUNC_BODY(Name, Ret, Id, Func, DefRet) \
+Ret \
+Name(_Eo *obj, Eo *objid) \
+{ \
+   Ret (*func)(Eo *, void *obj_data) = eo2_func_get(obj, Id(Name)); \
+   if (!func) return DefRet; \
+   void *obj_data = eo2_data_scope_get(obj); \
+   return Func; \
+}
+
+#define EO_FUNC_BODYV(Name, Ret, Id, Func, DefRet, ...) \
+Ret \
 Name(_Eo *obj, Eo *objid, __VA_ARGS__) \
 { \
    Ret (*func)(Eo *, void *obj_data, __VA_ARGS__) = eo2_func_get(obj, Id(Name)); \