Eobj: Rename to Eo.
[profile/ivi/eobj.git] / examples / function_overrides / simple.c
1 #include "Eo.h"
2 #include "simple.h"
3
4 #include "config.h"
5
6 EAPI Eo_Op SIMPLE_BASE_ID = 0;
7
8 #define MY_CLASS SIMPLE_CLASS
9
10 static void
11 _a_set(Eo *obj EINA_UNUSED, void *class_data, va_list *list)
12 {
13    Simple_Public_Data *pd = class_data;
14    int a;
15    a = va_arg(*list, int);
16    printf("%s %d\n", eo_class_name_get(MY_CLASS), a);
17    pd->a = a;
18 }
19
20 static void
21 _a_print(const Eo *obj EINA_UNUSED, const void *class_data, va_list *list)
22 {
23    const Simple_Public_Data *pd = class_data;
24    (void) list;
25    printf("Print %s %d\n", eo_class_name_get(MY_CLASS), pd->a);
26 }
27
28 static void
29 _class_constructor(Eo_Class *klass)
30 {
31    const Eo_Op_Func_Description func_desc[] = {
32         EO_OP_FUNC(SIMPLE_ID(SIMPLE_SUB_ID_A_SET), _a_set),
33         EO_OP_FUNC_CONST(SIMPLE_ID(SIMPLE_SUB_ID_A_PRINT), _a_print),
34         EO_OP_FUNC_SENTINEL
35    };
36
37    eo_class_funcs_set(klass, func_desc);
38 }
39
40 static const Eo_Op_Description op_desc[] = {
41      EO_OP_DESCRIPTION(SIMPLE_SUB_ID_A_SET, "i", "Set property A"),
42      EO_OP_DESCRIPTION_CONST(SIMPLE_SUB_ID_A_PRINT, "", "Print property A"),
43      EO_OP_DESCRIPTION_SENTINEL
44 };
45
46 static const Eo_Class_Description class_desc = {
47      "Simple",
48      EO_CLASS_TYPE_REGULAR,
49      EO_CLASS_DESCRIPTION_OPS(&SIMPLE_BASE_ID, op_desc, SIMPLE_SUB_ID_LAST),
50      NULL,
51      sizeof(Simple_Public_Data),
52      NULL,
53      NULL,
54      _class_constructor,
55      NULL
56 };
57
58 EO_DEFINE_CLASS(simple_class_get, &class_desc, EO_BASE_CLASS, NULL);
59