summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2013-08-14 14:31:29 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2013-09-17 22:37:01 +0200
commitcf611abc6a7035328136d1c9b56b3f56ef609226 (patch)
treef52e20e7a754e3b0e76d8e17f803ac8c104f59d0
parentf731f507bf34b7a20cfba51d15fc63dd8dd4f907 (diff)
downloadefl-cf611abc6a7035328136d1c9b56b3f56ef609226.tar.gz
eo_simple: add eo_set_evt and associated event EO_EV_X_CHANGED
-rw-r--r--eo2test/eo_simple.c24
-rw-r--r--eo2test/eo_simple.h6
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);