diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2013-08-14 14:31:29 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2013-09-17 22:37:01 +0200 |
commit | cf611abc6a7035328136d1c9b56b3f56ef609226 (patch) | |
tree | f52e20e7a754e3b0e76d8e17f803ac8c104f59d0 | |
parent | f731f507bf34b7a20cfba51d15fc63dd8dd4f907 (diff) | |
download | efl-cf611abc6a7035328136d1c9b56b3f56ef609226.tar.gz |
eo_simple: add eo_set_evt and associated event EO_EV_X_CHANGED
-rw-r--r-- | eo2test/eo_simple.c | 24 | ||||
-rw-r--r-- | eo2test/eo_simple.h | 6 |
2 files changed, 28 insertions, 2 deletions
diff --git a/eo2test/eo_simple.c b/eo2test/eo_simple.c index 3213bb9754..8b41d1343a 100644 --- a/eo2test/eo_simple.c +++ b/eo2test/eo_simple.c @@ -4,6 +4,9 @@ EAPI Eo_Op EO_SIMPLE_BASE_ID = 0; #define MY_CLASS EO_SIMPLE_CLASS +EAPI const Eo_Event_Description _EO_EV_X_CHANGED = + EO_EVENT_DESCRIPTION("x,changed", "Called when x has changed."); + typedef struct { int x; @@ -36,6 +39,16 @@ _set(Eo *obj EINA_UNUSED, void *obj_data, va_list *list) } static void +_set_evt(Eo *obj EINA_UNUSED, void *obj_data, va_list *list) +{ + Private_Data *pd = (Private_Data *) obj_data; + + pd->x = va_arg(*list, int); + + eo_do(obj, eo_event_callback_call(EO_EV_X_CHANGED, &pd->x, NULL)); +} + +static void _constructor(Eo *obj, void *obj_data, va_list *list EINA_UNUSED) { Private_Data *pd = (Private_Data *) obj_data; @@ -60,6 +73,7 @@ _class_constructor(Eo_Class *klass) EO_OP_FUNC(EO_SIMPLE_ID(EO_SIMPLE_SUB_ID_INC), _inc), EO_OP_FUNC(EO_SIMPLE_ID(EO_SIMPLE_SUB_ID_GET), _get), EO_OP_FUNC(EO_SIMPLE_ID(EO_SIMPLE_SUB_ID_SET), _set), + EO_OP_FUNC(EO_SIMPLE_ID(EO_SIMPLE_SUB_ID_SET_EVT), _set_evt), EO_OP_FUNC_SENTINEL }; @@ -69,16 +83,22 @@ _class_constructor(Eo_Class *klass) static const Eo_Op_Description op_desc[] = { EO_OP_DESCRIPTION(EO_SIMPLE_SUB_ID_INC, "Inc X"), EO_OP_DESCRIPTION(EO_SIMPLE_SUB_ID_GET, "Get X"), - EO_OP_DESCRIPTION(EO_SIMPLE_SUB_ID_SET, "Get X"), + EO_OP_DESCRIPTION(EO_SIMPLE_SUB_ID_SET, "Set X"), + EO_OP_DESCRIPTION(EO_SIMPLE_SUB_ID_SET_EVT, "Set X + event"), EO_OP_DESCRIPTION_SENTINEL }; +static const Eo_Event_Description *event_desc[] = { + EO_EV_X_CHANGED, + NULL +}; + static const Eo_Class_Description class_desc = { EO_VERSION, "Eo Simple", EO_CLASS_TYPE_REGULAR, EO_CLASS_DESCRIPTION_OPS(&EO_SIMPLE_BASE_ID, op_desc, EO_SIMPLE_SUB_ID_LAST), - NULL, + event_desc, sizeof(Private_Data), _class_constructor, NULL diff --git a/eo2test/eo_simple.h b/eo2test/eo_simple.h index 2950ef3053..1f80f0494e 100644 --- a/eo2test/eo_simple.h +++ b/eo2test/eo_simple.h @@ -9,6 +9,7 @@ enum { EO_SIMPLE_SUB_ID_INC, EO_SIMPLE_SUB_ID_GET, EO_SIMPLE_SUB_ID_SET, + EO_SIMPLE_SUB_ID_SET_EVT, EO_SIMPLE_SUB_ID_LAST }; @@ -20,6 +21,11 @@ enum { #define eo_set(x) EO_SIMPLE_ID(EO_SIMPLE_SUB_ID_SET), EO_TYPECHECK(int, x) +#define eo_set_evt(x) EO_SIMPLE_ID(EO_SIMPLE_SUB_ID_SET_EVT), EO_TYPECHECK(int, x) + +extern const Eo_Event_Description _EO_EV_X_CHANGED; +#define EO_EV_X_CHANGED (&(_EO_EV_X_CHANGED)) + #define EO_SIMPLE_CLASS simple_class_get() const Eo_Class *simple_class_get(void); |