#include "inherit.h"
+#include "config.h"
+
EAPI Eobj_Op INHERIT_BASE_ID = 0;
static Eobj_Class *_my_class = NULL;
static void
-_prot_print(Eobj *obj, Eobj_Op op, va_list *list)
+_prot_print(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
Simple_Protected_Data *pd = eobj_data_get(obj, SIMPLE_CLASS);
- (void) op;
(void) list;
printf("%s %d\n", __func__, pd->protected_x1);
}
static Eobj_Class *_my_class = NULL;
static void
-_a_set(Eobj *obj, Eobj_Op op, va_list *list)
+_a_set(Eobj *obj, void *class_data, va_list *list)
{
- Private_Data *pd = eobj_data_get(obj, _my_class);
- (void) op;
+ Private_Data *pd = class_data;
int a;
a = va_arg(*list, int);
pd->a = a;
#include "simple.h"
#include "comp.h"
+#include "config.h"
+
#include "../eunit_tests.h"
EAPI Eobj_Op COMP_BASE_ID = 0;
static Eobj_Class *_my_class = NULL;
static void
-_a_get(Eobj *obj, Eobj_Op op, va_list *list)
+_a_get(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
- (void) op;
int *a;
a = va_arg(*list, int *);
eobj_super_do(obj, SIMPLE_A_GET(a));
}
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_constructor_super(obj);
#include "Eobj.h"
#include "simple.h"
+#include "config.h"
+
EAPI Eobj_Op SIMPLE_BASE_ID = 0;
EAPI const Eobj_Event_Description _SIG_A_CHANGED =
static Eobj_Class *_my_class = NULL;
static void
-_a_set(Eobj *obj, Eobj_Op op, va_list *list)
+_a_set(Eobj *obj, void *class_data, va_list *list)
{
- Simple_Public_Data *pd = eobj_data_get(obj, _my_class);
- (void) op;
+ Simple_Public_Data *pd = class_data;
int a;
a = va_arg(*list, int);
printf("%s %d\n", eobj_class_name_get(_my_class), a);
}
static void
-_a_get(Eobj *obj, Eobj_Op op, va_list *list)
+_a_get(Eobj *obj __UNUSED__, void *class_data, va_list *list)
{
- Simple_Public_Data *pd = eobj_data_get(obj, _my_class);
- (void) op;
+ Simple_Public_Data *pd = class_data;
int *a;
a = va_arg(*list, int *);
*a = pd->a;
#include "mixin.h"
#include "simple.h"
+#include "config.h"
+
EAPI Eobj_Op MIXIN_BASE_ID = 0;
static Eobj_Class *_my_class = NULL;
static void
-_add_and_print_set(Eobj *obj, Eobj_Op op, va_list *list)
+_add_and_print_set(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
- (void) op;
int a, b, x;
eobj_do(obj, SIMPLE_A_GET(&a), SIMPLE_B_GET(&b));
x = va_arg(*list, const int);
extern int my_init_count;
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_constructor_super(obj);
}
static void
-_destructor(Eobj *obj)
+_destructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_destructor_super(obj);
#include "mixin.h"
#include "simple.h"
+#include "config.h"
+
EAPI Eobj_Op SIMPLE_BASE_ID = 0;
typedef struct
#define _GET_SET_FUNC(name) \
static void \
-_##name##_get(Eobj *obj, Eobj_Op op, va_list *list) \
+_##name##_get(Eobj *obj __UNUSED__, void *class_data, va_list *list) \
{ \
- Private_Data *pd = eobj_data_get(obj, _my_class); \
- (void) op; \
+ Private_Data *pd = class_data; \
int *name; \
name = va_arg(*list, int *); \
*name = pd->name; \
printf("%s %d\n", __func__, pd->name); \
} \
static void \
-_##name##_set(Eobj *obj, Eobj_Op op, va_list *list) \
+_##name##_set(Eobj *obj __UNUSED__, void *class_data, va_list *list) \
{ \
- Private_Data *pd = eobj_data_get(obj, _my_class); \
- (void) op; \
+ Private_Data *pd = class_data; \
int name; \
name = va_arg(*list, int); \
pd->name = name; \
extern int my_init_count;
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_constructor_super(obj);
}
static void
-_destructor(Eobj *obj)
+_destructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_destructor_super(obj);
#include "mixin.h"
#include "simple2.h"
+#include "config.h"
+
static Eobj_Class *_my_class = NULL;
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_constructor_super(obj);
#include "mixin.h"
#include "simple3.h"
+#include "config.h"
+
static Eobj_Class *_my_class = NULL;
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data __UNUSED__)
{
(void) obj;
}
#include "evas_obj.h"
#include "elw_box.h"
+#include "config.h"
+
EAPI Eobj_Op ELW_BOX_BASE_ID = 0;
typedef struct
static Eobj_Class *_my_class = NULL;
static void
-_pack_end(Eobj *obj, Eobj_Op op, va_list *list)
+_pack_end(Eobj *obj __UNUSED__, void *class_data, va_list *list)
{
- Widget_Data *wd = eobj_data_get(obj, _my_class);
- (void) op;
+ Widget_Data *wd = class_data;
Eobj *child_obj;
child_obj = va_arg(*list, Eobj *);
/* FIXME: Ref and the later uref child_obj here... */
}
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data)
{
eobj_constructor_super(obj);
- Widget_Data *wd = eobj_data_get(obj, _my_class);
+ Widget_Data *wd = class_data;
/* FIXME: An hack, because our tree is not yet only Eobj */
wd->bx = elm_box_add(eobj_evas_object_get(eobj_parent_get(obj)));
#include "elw_button.h"
#include "elw_boxedbutton.h"
+#include "config.h"
+
typedef struct
{
// Evas_Object *bx;
static Eobj_Class *_my_class = NULL;
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_constructor_super(obj);
eobj_unref(bt);
}
-static void
-_destructor(Eobj *obj)
-{
- eobj_destructor_super(obj);
-}
-
const Eobj_Class *
elw_boxedbutton_class_get(void)
{
NULL,
sizeof(Widget_Data),
_constructor,
- _destructor,
+ NULL,
NULL,
NULL
};
#include "evas_obj.h"
#include "elw_button.h"
+#include "config.h"
+
EAPI Eobj_Op ELW_BUTTON_BASE_ID = 0;
EAPI const Eobj_Event_Description _SIG_CLICKED =
static Eobj_Class *_my_class = NULL;
static void
-_position_set(Eobj *obj, Eobj_Op op, va_list *list)
+_position_set(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
- (void) op;
(void) obj;
Evas_Coord x, y;
x = va_arg(*list, Evas_Coord);
}
static void
-_text_set(Eobj *obj, Eobj_Op op, va_list *list)
+_text_set(Eobj *obj __UNUSED__, void *class_data, va_list *list)
{
- Widget_Data *wd = eobj_data_get(obj, _my_class);
- (void) op;
+ Widget_Data *wd = class_data;
const char *text;
text = va_arg(*list, const char *);
elm_object_text_set(wd->bt, text);
}
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data)
{
eobj_constructor_super(obj);
- Widget_Data *wd = eobj_data_get(obj, _my_class);
+ Widget_Data *wd = class_data;
/* FIXME: An hack, because our tree is not yet only Eobj */
wd->bt = elm_button_add(eobj_evas_object_get(eobj_parent_get(obj)));
}
static void
-_destructor(Eobj *obj)
+_destructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_destructor_super(obj);
- //Widget_Data *wd = eobj_data_get(obj, _my_class);
+ //Widget_Data *wd = class_data;
/* FIXME: Commented out because it's automatically done because our tree
* is not made of only eobj */
//evas_object_del(wd->bt);
}
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data)
{
eobj_constructor_super(obj);
- Widget_Data *wd = eobj_data_get(obj, _my_class);
+ Widget_Data *wd = class_data;
/* FIXME: Will actually do something about those when I care... */
wd->win = elm_win_add(NULL, "eobj-test", ELM_WIN_BASIC);
eobj_evas_object_set(obj, wd->win);
}
-static void
-_destructor(Eobj *obj)
-{
- eobj_destructor_super(obj);
-
- //Widget_Data *wd = eobj_data_get(obj, _my_class);
- /* FIXME: Commented out because it's automatically done because our tree
- * is not made of only eobj */
-// evas_object_del(wd->bx);
-}
-
const Eobj_Class *
elw_win_class_get(void)
{
NULL,
sizeof(Widget_Data),
_constructor,
- _destructor,
+ NULL,
NULL,
NULL
};
#include "Eobj.h"
#include "evas_obj.h"
+#include "config.h"
+
static Eobj_Class *_my_class = NULL;
EAPI Eobj_Op EVAS_OBJ_BASE_ID = 0;
} Widget_Data;
static void
-_position_set(Eobj *obj, Eobj_Op op, va_list *list)
+_position_set(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
Evas_Object *evas_obj = eobj_evas_object_get(obj);
- (void) op;
Evas_Coord x, y;
x = va_arg(*list, Evas_Coord);
y = va_arg(*list, Evas_Coord);
}
static void
-_size_set(Eobj *obj, Eobj_Op op, va_list *list)
+_size_set(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
Evas_Object *evas_obj = eobj_evas_object_get(obj);
- (void) op;
Evas_Coord w, h;
w = va_arg(*list, Evas_Coord);
h = va_arg(*list, Evas_Coord);
}
static void
-_color_set(Eobj *obj, Eobj_Op op, va_list *list)
+_color_set(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
Evas_Object *evas_obj = eobj_evas_object_get(obj);
- (void) op;
int r, g, b, a;
r = va_arg(*list, int);
g = va_arg(*list, int);
}
static void
-_color_get(Eobj *obj, Eobj_Op op, va_list *list)
+_color_get(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
Evas_Object *evas_obj = eobj_evas_object_get(obj);
- (void) op;
int *r, *g, *b, *a;
r = va_arg(*list, int*);
g = va_arg(*list, int*);
}
static void
-_visibility_set(Eobj *obj, Eobj_Op op, va_list *list)
+_visibility_set(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
Evas_Object *evas_obj = eobj_evas_object_get(obj);
- (void) op;
Eina_Bool v;
v = va_arg(*list, int);
if (v) evas_object_show(evas_obj);
}
static void
-_child_add(Eobj *obj, Eobj_Op op, va_list *list)
+_child_add(Eobj *obj __UNUSED__, void *class_data, va_list *list)
{
- Widget_Data *wd = eobj_data_get(obj, _my_class);
- (void) op;
+ Widget_Data *wd = class_data;
Eobj *child;
child = va_arg(*list, Eobj *);
wd->children = eina_list_append(wd->children, eobj_ref(child));
}
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_constructor_super(obj);
}
static void
-_destructor(Eobj *obj)
+_destructor(Eobj *obj, void *class_data)
{
eobj_destructor_super(obj);
- Widget_Data *wd = eobj_data_get(obj, _my_class);
+ Widget_Data *wd = class_data;
Eobj *child;
EINA_LIST_FREE(wd->children, child)
#include "inherit.h"
#include "inherit2.h"
+#include "config.h"
+
EAPI Eobj_Op INHERIT2_BASE_ID = 0;
static Eobj_Class *_my_class = NULL;
static void
-_a_set(Eobj *obj, Eobj_Op op, va_list *list)
+_a_set(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
- (void) op;
int a;
a = va_arg(*list, int);
printf("%s %d\n", eobj_class_name_get(_my_class), a);
#include "inherit2.h"
#include "inherit3.h"
+#include "config.h"
+
EAPI Eobj_Op INHERIT3_BASE_ID = 0;
static Eobj_Class *_my_class = NULL;
static void
-_a_set(Eobj *obj, Eobj_Op op, va_list *list)
+_a_set(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
- (void) op;
int a;
a = va_arg(*list, int);
printf("%s %d\n", eobj_class_name_get(_my_class), a);
#include "Eobj.h"
#include "simple.h"
+#include "config.h"
+
EAPI Eobj_Op SIMPLE_BASE_ID = 0;
static Eobj_Class *_my_class = NULL;
static void
-_a_set(Eobj *obj, Eobj_Op op, va_list *list)
+_a_set(Eobj *obj __UNUSED__, void *class_data, va_list *list)
{
- Simple_Public_Data *pd = eobj_data_get(obj, _my_class);
- (void) op;
+ Simple_Public_Data *pd = class_data;
int a;
a = va_arg(*list, int);
printf("%s %d\n", eobj_class_name_get(_my_class), a);
}
static void
-_a_print(Eobj *obj, Eobj_Op op, va_list *list)
+_a_print(Eobj *obj __UNUSED__, void *class_data, va_list *list)
{
- Simple_Public_Data *pd = eobj_data_get(obj, _my_class);
- (void) op;
+ Simple_Public_Data *pd = class_data;
(void) list;
printf("Print %s %d\n", eobj_class_name_get(_my_class), pd->a);
}
#include "mixin.h"
#include "simple.h"
+#include "config.h"
+
EAPI Eobj_Op MIXIN_BASE_ID = 0;
static Eobj_Class *_my_class = NULL;
static void
-_add_and_print_set(Eobj *obj, Eobj_Op op, va_list *list)
+_add_and_print_set(Eobj *obj, void *class_data __UNUSED__, va_list *list)
{
- (void) op;
int a, b, x;
eobj_do(obj, SIMPLE_A_GET(&a), SIMPLE_B_GET(&b));
x = va_arg(*list, const int);
}
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_constructor_super(obj);
}
static void
-_destructor(Eobj *obj)
+_destructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_destructor_super(obj);
}
#include "mixin.h"
#include "simple.h"
+#include "config.h"
+
EAPI Eobj_Op SIMPLE_BASE_ID = 0;
typedef struct
#define _GET_SET_FUNC(name) \
static void \
-_##name##_get(Eobj *obj, Eobj_Op op, va_list *list) \
+_##name##_get(Eobj *obj __UNUSED__, void *class_data, va_list *list) \
{ \
- Private_Data *pd = eobj_data_get(obj, _my_class); \
- (void) op; \
+ Private_Data *pd = class_data; \
int *name; \
name = va_arg(*list, int *); \
*name = pd->name; \
printf("%s %d\n", __func__, pd->name); \
} \
static void \
-_##name##_set(Eobj *obj, Eobj_Op op, va_list *list) \
+_##name##_set(Eobj *obj __UNUSED__, void *class_data, va_list *list) \
{ \
- Private_Data *pd = eobj_data_get(obj, _my_class); \
- (void) op; \
+ Private_Data *pd = class_data; \
int name; \
name = va_arg(*list, int); \
pd->name = name; \
_GET_SET_FUNC(b)
static void
-_constructor(Eobj *obj)
-{
- eobj_constructor_super(obj);
-}
-
-static void
-_destructor(Eobj *obj)
-{
- eobj_destructor_super(obj);
-}
-
-static void
_class_constructor(Eobj_Class *klass)
{
const Eobj_Op_Func_Description func_desc[] = {
EOBJ_CLASS_DESCRIPTION_OPS(&SIMPLE_BASE_ID, op_desc, SIMPLE_SUB_ID_LAST),
NULL,
sizeof(Private_Data),
- _constructor,
- _destructor,
+ NULL,
+ NULL,
_class_constructor,
NULL
};
#include "Eobj.h"
#include "simple.h"
+#include "config.h"
+
EAPI Eobj_Op SIMPLE_BASE_ID = 0;
typedef struct
static Eobj_Class *_my_class = NULL;
static void
-_a_set(Eobj *obj, Eobj_Op op, va_list *list)
+_a_set(Eobj *obj, void *class_data, va_list *list)
{
- Private_Data *pd = eobj_data_get(obj, _my_class);
- (void) op;
+ Private_Data *pd = class_data;
int a;
a = va_arg(*list, int);
pd->a = a;
}
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data __UNUSED__)
{
eobj_constructor_super(obj);
}
static void
-_destructor(Eobj *obj)
-{
- eobj_destructor_super(obj);
-}
-
-static void
_class_constructor(Eobj_Class *klass)
{
const Eobj_Op_Func_Description func_desc[] = {
event_desc,
sizeof(Private_Data),
_constructor,
- _destructor,
+ NULL,
_class_constructor,
NULL
};
EOBJ_CLASS_TYPE_MIXIN
} Eobj_Class_Type;
-typedef void (*eobj_op_func_type)(Eobj *, Eobj_Op, va_list *list);
+typedef void (*eobj_op_func_type)(Eobj *, void *class_data, va_list *list);
typedef struct
{
size_t count;
} ops;
const Eobj_Event_Description **events;
- size_t private_size;
- void (*constructor)(Eobj *obj);
- void (*destructor)(Eobj *obj);
+ size_t data_size;
+ void (*constructor)(Eobj *obj, void *class_data);
+ void (*destructor)(Eobj *obj, void *class_data);
void (*class_constructor)(Eobj_Class *klass);
void (*class_destructor)(Eobj_Class *klass);
} Eobj_Class_Description;
#include "Eobj.h"
+#include "config.h"
+
static int _eobj_log_dom = -1;
static Eobj_Class **_eobj_classes;
if (func)
{
- func(obj, op, p_list);
+ func(obj, eobj_data_get(obj, klass), p_list);
ret = EINA_TRUE;
goto end;
}
/* Update the current offset. */
/* FIXME: Make sure this alignment is enough. */
klass->data_offset = klass->parent->data_offset +
- klass->parent->desc->private_size +
+ klass->parent->desc->data_size +
(sizeof(void *) -
- (klass->parent->desc->private_size % sizeof(void *)));
+ (klass->parent->desc->data_size % sizeof(void *)));
}
klass->class_id = ++_eobj_classes_last_id;
obj->refcount++;
- obj->data_blob = calloc(1, klass->data_offset + klass->desc->private_size);
+ obj->data_blob = calloc(1, klass->data_offset + klass->desc->data_size);
_eobj_kls_itr_init(obj, EOBJ_NOOP);
eobj_class_constructor(obj, klass);
return;
if (klass->desc->constructor)
- klass->desc->constructor(obj);
+ klass->desc->constructor(obj, eobj_data_get(obj, klass));
else
_eobj_constructor_default(obj);
}
return;
if (klass->desc->destructor)
- klass->desc->destructor(obj);
+ klass->desc->destructor(obj, eobj_data_get(obj, klass));
else
_eobj_destructor_default(obj);
}
{
/* FIXME: Add a check that this is of the right klass and we don't seg.
* Probably just return NULL. */
- return ((char *) obj->data_blob) + klass->data_offset;
+ if (klass->desc->data_size > 0)
+ return ((char *) obj->data_blob) + klass->data_offset;
+ else
+ return NULL;
}
typedef struct
EOBJ_EVENT_DESCRIPTION("callback,del", "?", "Called when a callback was deleted.");
static void
-_constructor(Eobj *obj)
+_constructor(Eobj *obj, void *class_data __UNUSED__)
{
DBG("%p - %s.", obj, _my_class->desc->name);
}
static void
-_destructor(Eobj *obj)
+_destructor(Eobj *obj, void *class_data __UNUSED__)
{
DBG("%p - %s.", obj, _my_class->desc->name);
}
#include "Eobj.h"
#include "class_simple.h"
+#include "config.h"
+
EAPI Eobj_Op SIMPLE_BASE_ID = 0;
static Eobj_Class *_my_class = NULL;
static void
-_a_set(Eobj *obj, Eobj_Op op, va_list *list)
+_a_set(Eobj *obj __UNUSED__, void *class_data, va_list *list)
{
- Simple_Public_Data *pd = eobj_data_get(obj, _my_class);
- (void) op;
+ Simple_Public_Data *pd = class_data;
int a;
a = va_arg(*list, int);
printf("%s %d\n", eobj_class_name_get(_my_class), a);
}
static void
-_a_print(Eobj *obj, Eobj_Op op, va_list *list)
+_a_print(Eobj *obj __UNUSED__, void *class_data, va_list *list)
{
- Simple_Public_Data *pd = eobj_data_get(obj, _my_class);
- (void) op;
+ Simple_Public_Data *pd = class_data;
(void) list;
printf("Print %s %d\n", eobj_class_name_get(_my_class), pd->a);
}