Hi,
as you might know, I'm working on Vala bindings for EFL
(http://git.freesmartphone.org/?p=libeflvala.git;a=tree;f=vapi). To generate
proper C code, Vala requires function pointers to have types -- anonymous
callbacks won't do. Here are my first two commits to retrofit these. Ok to
commit?
Cheers,
:M:
This adds typedefs for some callbacks. This is necessary for
Vala bindings, since Vala does not work with anonymous functions.
Signed-off-By: Michael 'Mickey' Lauer <mla...@vanille-media.de>
Index: src/lib/Edje.h
===================================================================
--- src/lib/Edje.h (Revision 41406)
+++ src/lib/Edje.h (Arbeitskopie)
@@ -162,6 +162,10 @@
EDJE_LOAD_ERROR_RECURSIVE_REFERENCE = 9
};
+typedef void (*Edje_Signal_Cb) (void *data, Evas_Object *obj, const char *emission, const char *source);
+typedef void (*Edje_Text_Change_Cb) (void *data, Evas_Object *obj, const char *part);
+typedef void (*Edje_Message_Handler_Cb) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -222,8 +226,8 @@
EAPI const char *edje_load_error_str (int error);
/* edje_program.c */
- EAPI void edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *obj, const char *emission, const char *source), void *data);
- EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *obj, const char *emission, const char *source));
+ EAPI void edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
+ EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
EAPI void edje_object_signal_emit (Evas_Object *obj, const char *emission, const char *source);
EAPI void edje_object_play_set (Evas_Object *obj, int play);
EAPI int edje_object_play_get (const Evas_Object *obj);
@@ -244,7 +248,7 @@
EAPI int edje_object_part_exists (const Evas_Object *obj, const char *part);
EAPI const Evas_Object *edje_object_part_object_get (const Evas_Object *obj, const char *part);
EAPI void edje_object_part_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
- EAPI void edje_object_text_change_cb_set (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, const char *part), void *data);
+ EAPI void edje_object_text_change_cb_set (Evas_Object *obj, Edje_Text_Change_Cb func, void *data);
EAPI void edje_object_part_text_set (Evas_Object *obj, const char *part, const char *text);
EAPI const char *edje_object_part_text_get (const Evas_Object *obj, const char *part);
EAPI void edje_object_part_text_unescaped_set(Evas_Object *obj, const char *part, const char *text_to_escape);
@@ -290,7 +294,7 @@
/* edje_message_queue.c */
EAPI void edje_object_message_send (Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
- EAPI void edje_object_message_handler_set (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg), void *data);
+ EAPI void edje_object_message_handler_set (Evas_Object *obj, Edje_Message_Handler_Cb func, void *data);
EAPI void edje_object_message_signal_process (Evas_Object *obj);
EAPI void edje_message_signal_process (void);
Index: src/lib/Evas.h
===================================================================
--- src/lib/Evas.h (Revision 41406)
+++ src/lib/Evas.h (Arbeitskopie)
@@ -448,6 +448,8 @@
EVAS_OBJECT_POINTER_MODE_NOGRAB
} Evas_Object_Pointer_Mode;
+typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *event_info);
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -852,8 +854,8 @@
EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI void *evas_object_smart_data_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI void evas_object_smart_data_set (Evas_Object *obj, void *data) EINA_ARG_NONNULL(1);
- EAPI void evas_object_smart_callback_add (Evas_Object *obj, const char *event, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *data) EINA_ARG_NONNULL(1, 2, 3);
- EAPI void *evas_object_smart_callback_del (Evas_Object *obj, const char *event, void (*func) (void *data, Evas_Object *obj, void *event_info)) EINA_ARG_NONNULL(1, 2, 3);
+ EAPI void evas_object_smart_callback_add (Evas_Object *obj, const char *event, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1, 2, 3);
+ EAPI void *evas_object_smart_callback_del (Evas_Object *obj, const char *event, Evas_Smart_Cb func) EINA_ARG_NONNULL(1, 2, 3);
EAPI void evas_object_smart_callback_call (Evas_Object *obj, const char *event, void *event_info) EINA_ARG_NONNULL(1, 2);
EAPI void evas_object_smart_changed (Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void evas_object_smart_need_recalculate_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel