summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Hacohen <tom@stosb.com>2015-05-19 11:41:27 +0100
committerTom Hacohen <tom@stosb.com>2015-05-20 13:03:24 +0100
commit6efbfe227aaaa24eda7bcb7df916d4daf0a74400 (patch)
treec96e166b7348c5e825aca2d4af084675172e0cec
parente7ed0bfcedcea87f8645107a8a0775f67227d7c1 (diff)
Eo: Add a return value to eo_constructor().
From now on, constructors should return a value, usually the object being worked on, or NULL (if the constructor failed). This can also be used for implementing singletons, by just always returning the same object from the constructor. This is one of the final steps towards stabilizing Eo. @feature
-rw-r--r--src/examples/eolian_cxx/colourable.c4
-rw-r--r--src/examples/eolian_cxx/colourable_cxx.cc4
-rw-r--r--src/examples/eolian_cxx/colourable_stub.h2
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj.c5
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj_in.c6
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj_in_tone.c6
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj_out.c6
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj_out_pulse.c6
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c5
-rw-r--r--src/lib/ecore_con/ecore_con.c6
-rw-r--r--src/lib/ecore_con/ecore_con_url.c9
-rw-r--r--src/lib/ector/cairo/ector_cairo_surface.c6
-rw-r--r--src/lib/ector/cairo/ector_renderer_cairo_base.c8
-rw-r--r--src/lib/ector/cairo/ector_renderer_cairo_shape.c6
-rw-r--r--src/lib/ector/software/ector_renderer_software_gradient_linear.c6
-rw-r--r--src/lib/ector/software/ector_renderer_software_gradient_radial.c6
-rw-r--r--src/lib/ector/software/ector_renderer_software_shape.c6
-rw-r--r--src/lib/ector/software/ector_software_surface.c6
-rw-r--r--src/lib/edje/edje_edit.c4
-rw-r--r--src/lib/edje/edje_smart.c6
-rw-r--r--src/lib/eio/eio_model.c8
-rw-r--r--src/lib/emotion/emotion_smart.c6
-rw-r--r--src/lib/eo/Eo.h4
-rw-r--r--src/lib/eo/eo.c12
-rw-r--r--src/lib/eo/eo_base.eo1
-rw-r--r--src/lib/eo/eo_base_class.c4
-rw-r--r--src/lib/evas/canvas/evas_3d_camera.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_light.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_material.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_mesh.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_object.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_scene.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_texture.c6
-rw-r--r--src/lib/evas/canvas/evas_main.c6
-rw-r--r--src/lib/evas/canvas/evas_object_box.c6
-rw-r--r--src/lib/evas/canvas/evas_object_grid.c5
-rw-r--r--src/lib/evas/canvas/evas_object_image.c8
-rw-r--r--src/lib/evas/canvas/evas_object_line.c6
-rw-r--r--src/lib/evas/canvas/evas_object_main.c8
-rw-r--r--src/lib/evas/canvas/evas_object_polygon.c6
-rw-r--r--src/lib/evas/canvas/evas_object_rectangle.c6
-rw-r--r--src/lib/evas/canvas/evas_object_smart.c6
-rw-r--r--src/lib/evas/canvas/evas_object_smart_clipped.c6
-rw-r--r--src/lib/evas/canvas/evas_object_table.c6
-rw-r--r--src/lib/evas/canvas/evas_object_text.c6
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c6
-rw-r--r--src/lib/evas/canvas/evas_object_textgrid.c6
-rw-r--r--src/lib/evas/canvas/evas_object_vg.c6
-rw-r--r--src/lib/evas/canvas/evas_out.c8
-rw-r--r--src/lib/evas/canvas/evas_vg_container.c6
-rw-r--r--src/lib/evas/canvas/evas_vg_gradient_linear.c6
-rw-r--r--src/lib/evas/canvas/evas_vg_gradient_radial.c6
-rw-r--r--src/lib/evas/canvas/evas_vg_node.c6
-rw-r--r--src/lib/evas/canvas/evas_vg_root_node.c6
-rw-r--r--src/lib/evas/canvas/evas_vg_shape.c6
-rw-r--r--src/tests/eo/composite_objects/composite_objects_comp.c6
-rw-r--r--src/tests/eo/constructors/constructors_mixin.c6
-rw-r--r--src/tests/eo/constructors/constructors_simple.c6
-rw-r--r--src/tests/eo/constructors/constructors_simple2.c5
-rw-r--r--src/tests/eo/constructors/constructors_simple3.c4
-rw-r--r--src/tests/eo/constructors/constructors_simple7.c4
-rw-r--r--src/tests/eo/mixin/mixin_mixin.c4
-rw-r--r--src/tests/eo/mixin/mixin_mixin2.c5
-rw-r--r--src/tests/eo/mixin/mixin_mixin3.c4
-rw-r--r--src/tests/eo/signals/signals_simple.c6
-rw-r--r--src/tests/eo/suite/eo_test_general.c4
-rw-r--r--src/tests/eo/suite/eo_test_threaded_calls.c6
-rw-r--r--src/tests/eolian_cxx/a.c4
-rw-r--r--src/tests/eolian_cxx/b.c4
-rw-r--r--src/tests/eolian_cxx/c.c4
-rw-r--r--src/tests/eolian_cxx/callback.c6
-rw-r--r--src/tests/eolian_cxx/d.c4
-rw-r--r--src/tests/eolian_cxx/simple.c4
73 files changed, 262 insertions, 151 deletions
diff --git a/src/examples/eolian_cxx/colourable.c b/src/examples/eolian_cxx/colourable.c
index 1c7ff5e..655d63c 100644
--- a/src/examples/eolian_cxx/colourable.c
+++ b/src/examples/eolian_cxx/colourable.c
@@ -26,7 +26,7 @@ struct _Colourable_Data
26 26
27typedef struct _Colourable_Data Colourable_Data; 27typedef struct _Colourable_Data Colourable_Data;
28 28
29void 29Eo *
30_colourable_eo_base_constructor(Eo *obj, Colourable_Data *self EINA_UNUSED) 30_colourable_eo_base_constructor(Eo *obj, Colourable_Data *self EINA_UNUSED)
31{ 31{
32 if(!_colourable_impl_logdomain) 32 if(!_colourable_impl_logdomain)
@@ -35,7 +35,7 @@ _colourable_eo_base_constructor(Eo *obj, Colourable_Data *self EINA_UNUSED)
35 = eina_log_domain_register("colourable", EINA_COLOR_BLUE); 35 = eina_log_domain_register("colourable", EINA_COLOR_BLUE);
36 } 36 }
37 DBG("_colourable_constructor(%p, %p)\n", obj, MY_CLASS); 37 DBG("_colourable_constructor(%p, %p)\n", obj, MY_CLASS);
38 eo_do_super(obj, MY_CLASS, eo_constructor()); 38 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
39} 39}
40 40
41void 41void
diff --git a/src/examples/eolian_cxx/colourable_cxx.cc b/src/examples/eolian_cxx/colourable_cxx.cc
index bd4fa46..934a5d0 100644
--- a/src/examples/eolian_cxx/colourable_cxx.cc
+++ b/src/examples/eolian_cxx/colourable_cxx.cc
@@ -19,12 +19,12 @@ extern "C"
19 19
20static efl::eina::log_domain domain("colourable"); 20static efl::eina::log_domain domain("colourable");
21 21
22void 22Eo *
23_colourable_eo_base_constructor(Eo *obj, Colourable_Data *self) 23_colourable_eo_base_constructor(Eo *obj, Colourable_Data *self)
24{ 24{
25 EINA_CXX_DOM_LOG_DBG(domain) << __func__ << std::endl; 25 EINA_CXX_DOM_LOG_DBG(domain) << __func__ << std::endl;
26 self->r = self->g = self->b = 0; 26 self->r = self->g = self->b = 0;
27 eo_do_super(obj, MY_CLASS, eo_constructor()); 27 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
28} 28}
29 29
30void 30void
diff --git a/src/examples/eolian_cxx/colourable_stub.h b/src/examples/eolian_cxx/colourable_stub.h
index f6d758c..26b44b1 100644
--- a/src/examples/eolian_cxx/colourable_stub.h
+++ b/src/examples/eolian_cxx/colourable_stub.h
@@ -13,7 +13,7 @@ struct _Colourable_Data
13}; 13};
14typedef struct _Colourable_Data Colourable_Data; 14typedef struct _Colourable_Data Colourable_Data;
15 15
16void _colourable_eo_base_constructor(Eo *obj, Colourable_Data *self); 16Eo *_colourable_eo_base_constructor(Eo *obj, Colourable_Data *self);
17void _colourable_eo_base_destructor(Eo *obj, Colourable_Data *self); 17void _colourable_eo_base_destructor(Eo *obj, Colourable_Data *self);
18void _colourable_rgb_24bits_constructor(Eo *obj, Colourable_Data *self, int rgb); 18void _colourable_rgb_24bits_constructor(Eo *obj, Colourable_Data *self, int rgb);
19void _colourable_print_colour(Eo *obj, Colourable_Data *self); 19void _colourable_print_colour(Eo *obj, Colourable_Data *self);
diff --git a/src/lib/ecore_audio/ecore_audio_obj.c b/src/lib/ecore_audio/ecore_audio_obj.c
index 43fc821..3607cd9 100644
--- a/src/lib/ecore_audio/ecore_audio_obj.c
+++ b/src/lib/ecore_audio/ecore_audio_obj.c
@@ -54,12 +54,11 @@ _ecore_audio_volume_get(Eo *eo_obj EINA_UNUSED, Ecore_Audio_Object *obj)
54 return obj->volume; 54 return obj->volume;
55} 55}
56 56
57EOLIAN static void 57EOLIAN static Eo *
58_ecore_audio_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Object *obj) 58_ecore_audio_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Object *obj)
59{ 59{
60 eo_do_super(eo_obj, MY_CLASS, eo_constructor());
61
62 obj->volume = 1.0; 60 obj->volume = 1.0;
61 return eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
63} 62}
64 63
65#include "ecore_audio.eo.c" 64#include "ecore_audio.eo.c"
diff --git a/src/lib/ecore_audio/ecore_audio_obj_in.c b/src/lib/ecore_audio/ecore_audio_obj_in.c
index ece9440..a6afa18 100644
--- a/src/lib/ecore_audio/ecore_audio_obj_in.c
+++ b/src/lib/ecore_audio/ecore_audio_obj_in.c
@@ -170,12 +170,14 @@ _ecore_audio_in_ecore_audio_vio_set(Eo *eo_obj, Ecore_Audio_Input *obj, Ecore_Au
170 obj->seekable = (vio->seek != NULL); 170 obj->seekable = (vio->seek != NULL);
171} 171}
172 172
173EOLIAN static void 173EOLIAN static Eo *
174_ecore_audio_in_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Input *obj) 174_ecore_audio_in_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Input *obj)
175{ 175{
176 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 176 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
177 177
178 obj->speed = 1.0; 178 obj->speed = 1.0;
179
180 return eo_obj;
179} 181}
180 182
181EOLIAN static void 183EOLIAN static void
diff --git a/src/lib/ecore_audio/ecore_audio_obj_in_tone.c b/src/lib/ecore_audio/ecore_audio_obj_in_tone.c
index bdecc21..ac83b85 100644
--- a/src/lib/ecore_audio/ecore_audio_obj_in_tone.c
+++ b/src/lib/ecore_audio/ecore_audio_obj_in_tone.c
@@ -107,12 +107,12 @@ _ecore_audio_in_tone_eo_base_key_data_get(Eo *eo_obj, Ecore_Audio_In_Tone_Data *
107 } 107 }
108} 108}
109 109
110EOLIAN static void 110EOLIAN static Eo *
111_ecore_audio_in_tone_eo_base_constructor(Eo *eo_obj, Ecore_Audio_In_Tone_Data *obj) 111_ecore_audio_in_tone_eo_base_constructor(Eo *eo_obj, Ecore_Audio_In_Tone_Data *obj)
112{ 112{
113 Ecore_Audio_Input *in_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_IN_CLASS); 113 Ecore_Audio_Input *in_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_IN_CLASS);
114 114
115 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 115 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
116 116
117 in_obj->channels = 1; 117 in_obj->channels = 1;
118 in_obj->samplerate = 44100; 118 in_obj->samplerate = 44100;
@@ -120,6 +120,8 @@ _ecore_audio_in_tone_eo_base_constructor(Eo *eo_obj, Ecore_Audio_In_Tone_Data *o
120 in_obj->seekable = EINA_TRUE; 120 in_obj->seekable = EINA_TRUE;
121 121
122 obj->freq = 1000; 122 obj->freq = 1000;
123
124 return eo_obj;
123} 125}
124 126
125#include "ecore_audio_in_tone.eo.c" 127#include "ecore_audio_in_tone.eo.c"
diff --git a/src/lib/ecore_audio/ecore_audio_obj_out.c b/src/lib/ecore_audio/ecore_audio_obj_out.c
index 2d8522b..0414d66 100644
--- a/src/lib/ecore_audio/ecore_audio_obj_out.c
+++ b/src/lib/ecore_audio/ecore_audio_obj_out.c
@@ -129,12 +129,14 @@ _ecore_audio_out_ecore_audio_vio_set(Eo *eo_obj, Ecore_Audio_Output *_pd EINA_UN
129 ea_obj->vio->free_func = free_func; 129 ea_obj->vio->free_func = free_func;
130} 130}
131 131
132EOLIAN static void 132EOLIAN static Eo *
133_ecore_audio_out_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Output *obj) 133_ecore_audio_out_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Output *obj)
134{ 134{
135 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 135 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
136 136
137 obj->need_writer = EINA_TRUE; 137 obj->need_writer = EINA_TRUE;
138
139 return eo_obj;
138} 140}
139 141
140EOLIAN static void 142EOLIAN static void
diff --git a/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c b/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c
index a7308ab..fffe4c4 100644
--- a/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c
+++ b/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c
@@ -255,14 +255,14 @@ static void _state_job(void *data EINA_UNUSED)
255 class_vars.state_job = NULL; 255 class_vars.state_job = NULL;
256} 256}
257 257
258EOLIAN static void 258EOLIAN static Eo *
259_ecore_audio_out_pulse_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Pulse_Data *_pd EINA_UNUSED) 259_ecore_audio_out_pulse_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Pulse_Data *_pd EINA_UNUSED)
260{ 260{
261 int argc; 261 int argc;
262 char **argv; 262 char **argv;
263 Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS); 263 Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS);
264 264
265 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 265 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
266 266
267 out_obj->need_writer = EINA_FALSE; 267 out_obj->need_writer = EINA_FALSE;
268 268
@@ -281,6 +281,8 @@ _ecore_audio_out_pulse_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Pulse_Dat
281 class_vars.outputs = eina_list_append(class_vars.outputs, eo_obj); 281 class_vars.outputs = eina_list_append(class_vars.outputs, eo_obj);
282 if (class_vars.state_job) eo_del(class_vars.state_job); 282 if (class_vars.state_job) eo_del(class_vars.state_job);
283 class_vars.state_job = ecore_job_add(_state_job, NULL); 283 class_vars.state_job = ecore_job_add(_state_job, NULL);
284
285 return eo_obj;
284} 286}
285 287
286EOLIAN static void 288EOLIAN static void
diff --git a/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c b/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c
index fc552b8..d986b67 100644
--- a/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c
+++ b/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c
@@ -158,17 +158,18 @@ _ecore_audio_out_sndfile_ecore_audio_format_get(Eo *eo_obj, Ecore_Audio_Out_Sndf
158 return obj->format; 158 return obj->format;
159} 159}
160 160
161EOLIAN static void 161EOLIAN static Eo *
162_ecore_audio_out_sndfile_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Sndfile_Data *_pd EINA_UNUSED) 162_ecore_audio_out_sndfile_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Sndfile_Data *_pd EINA_UNUSED)
163{ 163{
164 Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS); 164 Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS);
165 165
166 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 166 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
167 167
168 eo_do(eo_obj, ecore_audio_obj_format_set(ECORE_AUDIO_FORMAT_OGG)); 168 eo_do(eo_obj, ecore_audio_obj_format_set(ECORE_AUDIO_FORMAT_OGG));
169 169
170 // FIXME: Use writer from output 170 // FIXME: Use writer from output
171 out_obj->need_writer = EINA_FALSE; 171 out_obj->need_writer = EINA_FALSE;
172 return eo_obj;
172} 173}
173 174
174EOLIAN static void 175EOLIAN static void
diff --git a/src/lib/ecore_con/ecore_con.c b/src/lib/ecore_con/ecore_con.c
index dee26e1..bc121d3 100644
--- a/src/lib/ecore_con/ecore_con.c
+++ b/src/lib/ecore_con/ecore_con.c
@@ -372,15 +372,17 @@ ecore_con_server_add(Ecore_Con_Type compl_type,
372 return obj; 372 return obj;
373} 373}
374 374
375EOLIAN static void 375EOLIAN static Eo *
376_ecore_con_server_eo_base_constructor(Ecore_Con_Server *obj, Ecore_Con_Server_Data *svr) 376_ecore_con_server_eo_base_constructor(Ecore_Con_Server *obj, Ecore_Con_Server_Data *svr)
377{ 377{
378 eo_do_super(obj, ECORE_CON_SERVER_CLASS, eo_constructor()); 378 obj = eo_do_super_ret(obj, ECORE_CON_SERVER_CLASS, obj, eo_constructor());
379 379
380 svr->fd = -1; 380 svr->fd = -1;
381 svr->reject_excess_clients = EINA_FALSE; 381 svr->reject_excess_clients = EINA_FALSE;
382 svr->client_limit = -1; 382 svr->client_limit = -1;
383 svr->clients = NULL; 383 svr->clients = NULL;
384
385 return obj;
384} 386}
385 387
386EOLIAN static Eo * 388EOLIAN static Eo *
diff --git a/src/lib/ecore_con/ecore_con_url.c b/src/lib/ecore_con/ecore_con_url.c
index 37902ed..37f5fa0 100644
--- a/src/lib/ecore_con/ecore_con_url.c
+++ b/src/lib/ecore_con/ecore_con_url.c
@@ -453,25 +453,26 @@ ecore_con_url_new(const char *url)
453 return url_obj; 453 return url_obj;
454} 454}
455 455
456EOLIAN static void 456EOLIAN static Eo *
457_efl_network_url_eo_base_constructor(Efl_Network_Url *url_obj, Efl_Network_Url_Data *url_con EINA_UNUSED) 457_efl_network_url_eo_base_constructor(Efl_Network_Url *url_obj, Efl_Network_Url_Data *url_con EINA_UNUSED)
458{ 458{
459 eo_do_super(url_obj, MY_CLASS, eo_constructor()); 459 url_obj = eo_do_super_ret(url_obj, MY_CLASS, url_obj, eo_constructor());
460 460
461 if (!_init_count) eo_error_set(url_obj); 461 if (!_init_count) eo_error_set(url_obj);
462 if (!_c_init()) 462 if (!_c_init())
463 { 463 {
464 eo_error_set(url_obj); 464 eo_error_set(url_obj);
465 return; 465 return NULL;
466 } 466 }
467 467
468 url_con->curl_easy = _c->curl_easy_init(); 468 url_con->curl_easy = _c->curl_easy_init();
469 if (!url_con->curl_easy) 469 if (!url_con->curl_easy)
470 { 470 {
471 eo_error_set(url_obj); 471 eo_error_set(url_obj);
472 return; 472 return NULL;
473 } 473 }
474 474
475 return url_obj;
475} 476}
476 477
477EOLIAN static Eo * 478EOLIAN static Eo *
diff --git a/src/lib/ector/cairo/ector_cairo_surface.c b/src/lib/ector/cairo/ector_cairo_surface.c
index 377fbbd..10fef65 100644
--- a/src/lib/ector/cairo/ector_cairo_surface.c
+++ b/src/lib/ector/cairo/ector_cairo_surface.c
@@ -121,14 +121,16 @@ _ector_cairo_surface_ector_generic_surface_reference_point_set(Eo *obj EINA_UNUS
121 pd->current.y = y; 121 pd->current.y = y;
122} 122}
123 123
124static void 124static Eo *
125_ector_cairo_surface_eo_base_constructor(Eo *obj, 125_ector_cairo_surface_eo_base_constructor(Eo *obj,
126 Ector_Cairo_Surface_Data *pd) 126 Ector_Cairo_Surface_Data *pd)
127{ 127{
128 eo_do_super(obj, ECTOR_CAIRO_SURFACE_CLASS, eo_constructor()); 128 obj = eo_do_super_ret(obj, ECTOR_CAIRO_SURFACE_CLASS, obj, eo_constructor());
129 _cairo_count++; 129 _cairo_count++;
130 130
131 _ector_cairo_surface_context_set(obj, pd, NULL); 131 _ector_cairo_surface_context_set(obj, pd, NULL);
132
133 return obj;
132} 134}
133 135
134static void 136static void
diff --git a/src/lib/ector/cairo/ector_renderer_cairo_base.c b/src/lib/ector/cairo/ector_renderer_cairo_base.c
index 1580b4e..5bf0f88 100644
--- a/src/lib/ector/cairo/ector_renderer_cairo_base.c
+++ b/src/lib/ector/cairo/ector_renderer_cairo_base.c
@@ -190,16 +190,18 @@ _ector_renderer_cairo_base_ector_renderer_generic_base_draw(Eo *obj,
190 return EINA_TRUE; 190 return EINA_TRUE;
191} 191}
192 192
193static void 193static Eo *
194_ector_renderer_cairo_base_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Base_Data *pd EINA_UNUSED) 194_ector_renderer_cairo_base_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Base_Data *pd EINA_UNUSED)
195{ 195{
196 eo_do_super(obj, ECTOR_RENDERER_CAIRO_BASE_CLASS, eo_constructor()); 196 obj = eo_do_super_ret(obj, ECTOR_RENDERER_CAIRO_BASE_CLASS, obj, eo_constructor());
197 197
198 pd->generic = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj); 198 pd->generic = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
199 199
200 USE(obj, cairo_matrix_init_identity, ); 200 USE(obj, cairo_matrix_init_identity, NULL);
201 201
202 cairo_matrix_init_identity(&identity); 202 cairo_matrix_init_identity(&identity);
203
204 return obj;
203} 205}
204 206
205static void 207static void
diff --git a/src/lib/ector/cairo/ector_renderer_cairo_shape.c b/src/lib/ector/cairo/ector_renderer_cairo_shape.c
index 2b79e8b..b3923e9 100644
--- a/src/lib/ector/cairo/ector_renderer_cairo_shape.c
+++ b/src/lib/ector/cairo/ector_renderer_cairo_shape.c
@@ -244,15 +244,17 @@ _ector_renderer_cairo_shape_ector_renderer_generic_base_bounds_get(Eo *obj,
244 r->y += bd->generic->origin.y; 244 r->y += bd->generic->origin.y;
245} 245}
246 246
247void 247Eo *
248_ector_renderer_cairo_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd) 248_ector_renderer_cairo_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
249{ 249{
250 eo_do_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, eo_constructor()); 250 obj = eo_do_super_ret(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, obj, eo_constructor());
251 pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj); 251 pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj);
252 pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj); 252 pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
253 253
254 eo_do(obj, 254 eo_do(obj,
255 eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_cairo_shape_path_changed, pd)); 255 eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_cairo_shape_path_changed, pd));
256
257 return obj;
256} 258}
257 259
258void 260void
diff --git a/src/lib/ector/software/ector_renderer_software_gradient_linear.c b/src/lib/ector/software/ector_renderer_software_gradient_linear.c
index a6e32b0..f2ca832 100644
--- a/src/lib/ector/software/ector_renderer_software_gradient_linear.c
+++ b/src/lib/ector/software/ector_renderer_software_gradient_linear.c
@@ -71,13 +71,15 @@ _ector_renderer_software_gradient_linear_ector_renderer_software_base_fill(Eo *o
71 return EINA_TRUE; 71 return EINA_TRUE;
72} 72}
73 73
74void 74Eo *
75_ector_renderer_software_gradient_linear_eo_base_constructor(Eo *obj, 75_ector_renderer_software_gradient_linear_eo_base_constructor(Eo *obj,
76 Ector_Renderer_Software_Gradient_Data *pd) 76 Ector_Renderer_Software_Gradient_Data *pd)
77{ 77{
78 eo_do_super(obj, ECTOR_RENDERER_SOFTWARE_GRADIENT_LINEAR_CLASS, eo_constructor()); 78 obj = eo_do_super_ret(obj, ECTOR_RENDERER_SOFTWARE_GRADIENT_LINEAR_CLASS, obj, eo_constructor());
79 pd->gd = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_MIXIN, obj); 79 pd->gd = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_MIXIN, obj);
80 pd->gld = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_LINEAR_MIXIN, obj); 80 pd->gld = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_LINEAR_MIXIN, obj);
81
82 return obj;
81} 83}
82 84
83void 85void
diff --git a/src/lib/ector/software/ector_renderer_software_gradient_radial.c b/src/lib/ector/software/ector_renderer_software_gradient_radial.c
index a05b487..5b63f95 100644
--- a/src/lib/ector/software/ector_renderer_software_gradient_radial.c
+++ b/src/lib/ector/software/ector_renderer_software_gradient_radial.c
@@ -79,13 +79,15 @@ _ector_renderer_software_gradient_radial_ector_renderer_software_base_fill(Eo *o
79 return EINA_TRUE; 79 return EINA_TRUE;
80} 80}
81 81
82void 82Eo *
83_ector_renderer_software_gradient_radial_eo_base_constructor(Eo *obj, 83_ector_renderer_software_gradient_radial_eo_base_constructor(Eo *obj,
84 Ector_Renderer_Software_Gradient_Data *pd) 84 Ector_Renderer_Software_Gradient_Data *pd)
85{ 85{
86 eo_do_super(obj, ECTOR_RENDERER_SOFTWARE_GRADIENT_RADIAL_CLASS, eo_constructor()); 86 obj = eo_do_super_ret(obj, ECTOR_RENDERER_SOFTWARE_GRADIENT_RADIAL_CLASS, obj, eo_constructor());
87 pd->gd = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_MIXIN, obj); 87 pd->gd = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_MIXIN, obj);
88 pd->gld = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_RADIAL_MIXIN, obj); 88 pd->gld = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_RADIAL_MIXIN, obj);
89
90 return obj;
89} 91}
90 92
91void 93void
diff --git a/src/lib/ector/software/ector_renderer_software_shape.c b/src/lib/ector/software/ector_renderer_software_shape.c
index 2e4fbea..a91b80e 100644
--- a/src/lib/ector/software/ector_renderer_software_shape.c
+++ b/src/lib/ector/software/ector_renderer_software_shape.c
@@ -362,14 +362,16 @@ _ector_renderer_software_shape_path_changed(void *data, Eo *obj EINA_UNUSED, con
362 return EINA_TRUE; 362 return EINA_TRUE;
363} 363}
364 364
365void 365Eo *
366_ector_renderer_software_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Software_Shape_Data *pd) 366_ector_renderer_software_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Software_Shape_Data *pd)
367{ 367{
368 eo_do_super(obj, ECTOR_RENDERER_SOFTWARE_SHAPE_CLASS, eo_constructor()); 368 obj = eo_do_super_ret(obj, ECTOR_RENDERER_SOFTWARE_SHAPE_CLASS, obj, eo_constructor());
369 pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj); 369 pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj);
370 pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj); 370 pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
371 eo_do(obj, 371 eo_do(obj,
372 eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_software_shape_path_changed, pd)); 372 eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_software_shape_path_changed, pd));
373
374 return obj;
373} 375}
374 376
375void 377void
diff --git a/src/lib/ector/software/ector_software_surface.c b/src/lib/ector/software/ector_software_surface.c
index 02d93c3..a558302 100644
--- a/src/lib/ector/software/ector_software_surface.c
+++ b/src/lib/ector/software/ector_software_surface.c
@@ -65,17 +65,19 @@ _ector_software_surface_surface_get(Eo *obj EINA_UNUSED,
65 *height = pd->software->fill_data.raster_buffer.height; 65 *height = pd->software->fill_data.raster_buffer.height;
66} 66}
67 67
68static void 68static Eo *
69_ector_software_surface_eo_base_constructor(Eo *obj, 69_ector_software_surface_eo_base_constructor(Eo *obj,
70 Ector_Software_Surface_Data *pd EINA_UNUSED) 70 Ector_Software_Surface_Data *pd EINA_UNUSED)
71{ 71{
72 eo_do_super(obj, ECTOR_SOFTWARE_SURFACE_CLASS, eo_constructor()); 72 obj = eo_do_super_ret(obj, ECTOR_SOFTWARE_SURFACE_CLASS, obj, eo_constructor());
73 if(_software_count == 0) 73 if(_software_count == 0)
74 { 74 {
75 pd->software = (Software_Rasterizer *) calloc(1, sizeof(Software_Rasterizer)); 75 pd->software = (Software_Rasterizer *) calloc(1, sizeof(Software_Rasterizer));
76 ector_software_rasterizer_init(pd->software); 76 ector_software_rasterizer_init(pd->software);
77 } 77 }
78 _software_count++; 78 _software_count++;
79
80 return obj;
79} 81}
80 82
81static void 83static void
diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c
index 1086d64..891584e 100644
--- a/src/lib/edje/edje_edit.c
+++ b/src/lib/edje/edje_edit.c
@@ -239,12 +239,12 @@ edje_edit_object_add(Evas *evas)
239 return e; 239 return e;
240} 240}
241 241
242EOLIAN static void 242EOLIAN static Eo *
243_edje_edit_eo_base_constructor(Eo *obj, Edje_Edit *eed) 243_edje_edit_eo_base_constructor(Eo *obj, Edje_Edit *eed)
244{ 244{
245 eed->base = eo_data_ref(obj, EDJE_OBJECT_CLASS); 245 eed->base = eo_data_ref(obj, EDJE_OBJECT_CLASS);
246 246
247 eo_do_super(obj, MY_CLASS, eo_constructor()); 247 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
248} 248}
249 249
250EOLIAN static void 250EOLIAN static void
diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c
index 7de630d..f75abd7 100644
--- a/src/lib/edje/edje_smart.c
+++ b/src/lib/edje/edje_smart.c
@@ -24,14 +24,16 @@ edje_object_add(Evas *evas)
24 return e; 24 return e;
25} 25}
26 26
27EOLIAN static void 27EOLIAN static Eo *
28_edje_object_eo_base_constructor(Eo *obj, Edje *ed) 28_edje_object_eo_base_constructor(Eo *obj, Edje *ed)
29{ 29{
30 ed->base = eo_data_ref(obj, EVAS_SMART_CLIPPED_CLASS); 30 ed->base = eo_data_ref(obj, EVAS_SMART_CLIPPED_CLASS);
31 31
32 eo_do_super(obj, MY_CLASS, eo_constructor()); 32 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
33 eo_do(obj, evas_obj_type_set(MY_CLASS_NAME_LEGACY)); 33 eo_do(obj, evas_obj_type_set(MY_CLASS_NAME_LEGACY));
34 _edje_lib_ref(); 34 _edje_lib_ref();
35
36 return obj;
35} 37}
36 38
37EOLIAN static void 39EOLIAN static void
diff --git a/src/lib/eio/eio_model.c b/src/lib/eio/eio_model.c
index 384a8e4..5ff288e 100644
--- a/src/lib/eio/eio_model.c
+++ b/src/lib/eio/eio_model.c
@@ -623,15 +623,15 @@ _eio_model_efl_model_base_children_slice_get(Eo *obj EINA_UNUSED, Eio_Model_Data
623/** 623/**
624 * Class definitions 624 * Class definitions
625 */ 625 */
626static void 626static Eo *
627_eio_model_eo_base_constructor(Eo *obj, Eio_Model_Data *priv) 627_eio_model_eo_base_constructor(Eo *obj, Eio_Model_Data *priv)
628{ 628{
629 eo_do_super(obj, MY_CLASS, eo_constructor()); 629 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
630 unsigned int i; 630 unsigned int i;
631 priv->obj = obj; 631 priv->obj = obj;
632 632
633 priv->properties_name = eina_array_new(EIO_MODEL_PROP_LAST); 633 priv->properties_name = eina_array_new(EIO_MODEL_PROP_LAST);
634 EINA_SAFETY_ON_NULL_RETURN(priv->properties_name); 634 EINA_SAFETY_ON_NULL_RETURN_VAL(priv->properties_name, NULL);
635 for (i = 0; i < EIO_MODEL_PROP_LAST; ++i) 635 for (i = 0; i < EIO_MODEL_PROP_LAST; ++i)
636 eina_array_push(priv->properties_name, _eio_model_prop_names[i]); 636 eina_array_push(priv->properties_name, _eio_model_prop_names[i]);
637 637
@@ -645,6 +645,8 @@ _eio_model_eo_base_constructor(Eo *obj, Eio_Model_Data *priv)
645 priv->load.status = EFL_MODEL_LOAD_STATUS_UNLOADED; 645 priv->load.status = EFL_MODEL_LOAD_STATUS_UNLOADED;
646 priv->monitor = NULL; 646 priv->monitor = NULL;
647 eina_spinlock_new(&priv->filter_lock); 647 eina_spinlock_new(&priv->filter_lock);
648
649 return obj;
648} 650}
649 651
650static void 652static void
diff --git a/src/lib/emotion/emotion_smart.c b/src/lib/emotion/emotion_smart.c
index 8cf5899..fbbbb49 100644
--- a/src/lib/emotion/emotion_smart.c
+++ b/src/lib/emotion/emotion_smart.c
@@ -263,11 +263,13 @@ emotion_object_add(Evas *evas)
263 return e; 263 return e;
264} 264}
265 265
266EOLIAN static void 266EOLIAN static Eo *
267_emotion_object_eo_base_constructor(Eo *obj, Emotion_Object_Data *pd EINA_UNUSED) 267_emotion_object_eo_base_constructor(Eo *obj, Emotion_Object_Data *pd EINA_UNUSED)
268{ 268{
269 eo_do_super(obj, MY_CLASS, eo_constructor()); 269 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
270 eo_do(obj, evas_obj_type_set(E_OBJ_NAME)); 270 eo_do(obj, evas_obj_type_set(E_OBJ_NAME));
271
272 return obj;
271} 273}
272 274
273EAPI Evas_Object * 275EAPI Evas_Object *
diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
index 8a271f9..bc83ddb 100644
--- a/src/lib/eo/Eo.h
+++ b/src/lib/eo/Eo.h
@@ -639,8 +639,8 @@ EAPI void eo_error_set_internal(const Eo *obj, const char *file, int line);
639#define _eo_add_common(klass, parent, is_ref, ...) \ 639#define _eo_add_common(klass, parent, is_ref, ...) \
640 ( \ 640 ( \
641 _eo_do_start(_eo_add_internal_start(__FILE__, __LINE__, klass, parent, is_ref), \ 641 _eo_do_start(_eo_add_internal_start(__FILE__, __LINE__, klass, parent, is_ref), \
642 klass, EINA_FALSE, __FILE__, __FUNCTION__, __LINE__), \ 642 klass, EINA_FALSE, __FILE__, __FUNCTION__, __LINE__) \
643 eo_constructor(), ##__VA_ARGS__, \ 643 , ##__VA_ARGS__, \
644 (Eo *) _eo_add_end() \ 644 (Eo *) _eo_add_end() \
645 ) 645 )
646 646
diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 0edac21..d5e1d3a 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -920,6 +920,18 @@ _eo_add_internal_start(const char *file, int line, const Eo_Class *klass_id, Eo
920 } 920 }
921 } 921 }
922 922
923 /* eo_id can change here. Freeing is done on the resolved object. */
924 eo_do(eo_id, eo_id = eo_constructor());
925 if (!eo_id)
926 {
927 ERR("Object of class '%s' - Error while constructing object",
928 klass->desc->name);
929 /* Unref twice, once for the ref in _eo_add_internal_start, and once for the basic object ref. */
930 _eo_unref(obj);
931 _eo_unref(obj);
932 return NULL;
933 }
934
923 return eo_id; 935 return eo_id;
924} 936}
925 937
diff --git a/src/lib/eo/eo_base.eo b/src/lib/eo/eo_base.eo
index e4bd0e8..5c7123c 100644
--- a/src/lib/eo/eo_base.eo
+++ b/src/lib/eo/eo_base.eo
@@ -45,6 +45,7 @@ Return event freeze count. */
45 constructor { 45 constructor {
46 /*@ Call the object's constructor. 46 /*@ Call the object's constructor.
47Should not be used with #eo_do. Only use it with #eo_do_super. */ 47Should not be used with #eo_do. Only use it with #eo_do_super. */
48 return: Eo *; /*@ The new object created, can be NULL if aborting */
48 } 49 }
49 destructor { 50 destructor {
50 /*@ Call the object's destructor. 51 /*@ Call the object's destructor.
diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c
index a84dcf0..a263c1e 100644
--- a/src/lib/eo/eo_base_class.c
+++ b/src/lib/eo/eo_base_class.c
@@ -967,12 +967,14 @@ EAPI const Eina_Value_Type *EO_DBG_INFO_TYPE = &_EO_DBG_INFO_TYPE;
967/* EO_BASE_CLASS stuff */ 967/* EO_BASE_CLASS stuff */
968#define MY_CLASS EO_BASE_CLASS 968#define MY_CLASS EO_BASE_CLASS
969 969
970EOLIAN static void 970EOLIAN static Eo *
971_eo_base_constructor(Eo *obj, Eo_Base_Data *pd EINA_UNUSED) 971_eo_base_constructor(Eo *obj, Eo_Base_Data *pd EINA_UNUSED)
972{ 972{
973 DBG("%p - %s.", obj, eo_class_name_get(MY_CLASS)); 973 DBG("%p - %s.", obj, eo_class_name_get(MY_CLASS));
974 974
975 _eo_condtor_done(obj); 975 _eo_condtor_done(obj);
976
977 return obj;
976} 978}
977 979
978EOLIAN static void 980EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_camera.c b/src/lib/evas/canvas/evas_3d_camera.c
index 7a9c8a5..8467f8e 100644
--- a/src/lib/evas/canvas/evas_3d_camera.c
+++ b/src/lib/evas/canvas/evas_3d_camera.c
@@ -62,12 +62,14 @@ evas_3d_camera_node_del(Evas_3D_Camera *camera, Evas_3D_Node *node)
62 else eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count - 1)); 62 else eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count - 1));
63} 63}
64 64
65EOLIAN static void 65EOLIAN static Eo *
66_evas_3d_camera_eo_base_constructor(Eo *obj, 66_evas_3d_camera_eo_base_constructor(Eo *obj,
67 Evas_3D_Camera_Data *pd EINA_UNUSED) 67 Evas_3D_Camera_Data *pd EINA_UNUSED)
68{ 68{
69 eo_do_super(obj, MY_CLASS, eo_constructor()); 69 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
70 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_CAMERA)); 70 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_CAMERA));
71
72 return obj;
71} 73}
72 74
73EOLIAN static void 75EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_light.c b/src/lib/evas/canvas/evas_3d_light.c
index d8c73b6..455ded6 100644
--- a/src/lib/evas/canvas/evas_3d_light.c
+++ b/src/lib/evas/canvas/evas_3d_light.c
@@ -76,10 +76,10 @@ evas_3d_light_add(Evas *e)
76 return eo_obj; 76 return eo_obj;
77} 77}
78 78
79EOLIAN static void 79EOLIAN static Eo *
80_evas_3d_light_eo_base_constructor(Eo *obj, Evas_3D_Light_Data *pd) 80_evas_3d_light_eo_base_constructor(Eo *obj, Evas_3D_Light_Data *pd)
81{ 81{
82 eo_do_super(obj, MY_CLASS, eo_constructor()); 82 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
83 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_LIGHT)); 83 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_LIGHT));
84 evas_color_set(&pd->ambient, 0.0, 0.0, 0.0, 1.0); 84 evas_color_set(&pd->ambient, 0.0, 0.0, 0.0, 1.0);
85 evas_color_set(&pd->diffuse, 1.0, 1.0, 1.0, 1.0); 85 evas_color_set(&pd->diffuse, 1.0, 1.0, 1.0, 1.0);
@@ -92,6 +92,8 @@ _evas_3d_light_eo_base_constructor(Eo *obj, Evas_3D_Light_Data *pd)
92 pd->atten_const = 1.0; 92 pd->atten_const = 1.0;
93 pd->atten_linear = 0.0; 93 pd->atten_linear = 0.0;
94 pd->atten_quad = 0.0; 94 pd->atten_quad = 0.0;
95
96 return obj;
95} 97}
96 98
97EOLIAN static void 99EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_material.c b/src/lib/evas/canvas/evas_3d_material.c
index aee8c85..5d609ca 100644
--- a/src/lib/evas/canvas/evas_3d_material.c
+++ b/src/lib/evas/canvas/evas_3d_material.c
@@ -88,10 +88,10 @@ evas_3d_material_add(Evas *e)
88 return eo_obj; 88 return eo_obj;
89} 89}
90 90
91EOLIAN static void 91EOLIAN static Eo *
92_evas_3d_material_eo_base_constructor(Eo *obj EINA_UNUSED, Evas_3D_Material_Data *pd) 92_evas_3d_material_eo_base_constructor(Eo *obj EINA_UNUSED, Evas_3D_Material_Data *pd)
93{ 93{
94 eo_do_super(obj, MY_CLASS, eo_constructor()); 94 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
95 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_MATERIAL)); 95 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_MATERIAL));
96 96
97 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_AMBIENT].color, 0.2, 0.2, 0.2, 1.0); 97 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_AMBIENT].color, 0.2, 0.2, 0.2, 1.0);
@@ -99,6 +99,8 @@ _evas_3d_material_eo_base_constructor(Eo *obj EINA_UNUSED, Evas_3D_Material_Data
99 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_SPECULAR].color, 1.0, 1.0, 1.0, 1.0); 99 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_SPECULAR].color, 1.0, 1.0, 1.0, 1.0);
100 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_EMISSION].color, 0.0, 0.0, 0.0, 1.0); 100 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_EMISSION].color, 0.0, 0.0, 0.0, 1.0);
101 pd->shininess = 150.0; 101 pd->shininess = 150.0;
102
103 return obj;
102} 104}
103 105
104EOLIAN static void 106EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_mesh.c b/src/lib/evas/canvas/evas_3d_mesh.c
index df9d135..1b8cc14 100644
--- a/src/lib/evas/canvas/evas_3d_mesh.c
+++ b/src/lib/evas/canvas/evas_3d_mesh.c
@@ -252,12 +252,14 @@ evas_3d_mesh_add(Evas *e)
252 return eo_obj; 252 return eo_obj;
253} 253}
254 254
255EOLIAN static void 255EOLIAN static Eo *
256_evas_3d_mesh_eo_base_constructor(Eo *obj, Evas_3D_Mesh_Data *pd) 256_evas_3d_mesh_eo_base_constructor(Eo *obj, Evas_3D_Mesh_Data *pd)
257{ 257{
258 eo_do_super(obj, MY_CLASS, eo_constructor()); 258 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
259 eo_do (obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_MESH)); 259 eo_do (obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_MESH));
260 _mesh_init(pd); 260 _mesh_init(pd);
261
262 return obj;
261} 263}
262 264
263EOLIAN static void 265EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_object.c b/src/lib/evas/canvas/evas_3d_object.c
index 6cd2cb4..5776fde 100644
--- a/src/lib/evas/canvas/evas_3d_object.c
+++ b/src/lib/evas/canvas/evas_3d_object.c
@@ -3,15 +3,17 @@
3 3
4#define MY_CLASS EVAS_3D_OBJECT_CLASS 4#define MY_CLASS EVAS_3D_OBJECT_CLASS
5 5
6EOLIAN static void 6EOLIAN static Eo *
7_evas_3d_object_eo_base_constructor(Eo *obj, Evas_3D_Object_Data *pd) 7_evas_3d_object_eo_base_constructor(Eo *obj, Evas_3D_Object_Data *pd)
8{ 8{
9 Eo *e = NULL; 9 Eo *e = NULL;
10 eo_do_super(obj, MY_CLASS, eo_constructor()); 10 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
11 eo_do(obj, e = eo_parent_get()); 11 eo_do(obj, e = eo_parent_get());
12 pd->evas = e; 12 pd->evas = e;
13 pd->type = EVAS_3D_OBJECT_TYPE_INVALID; 13 pd->type = EVAS_3D_OBJECT_TYPE_INVALID;
14 memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_3D_STATE_MAX); 14 memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_3D_STATE_MAX);
15
16 return obj;
15} 17}
16 18
17EOLIAN static Evas * 19EOLIAN static Evas *
diff --git a/src/lib/evas/canvas/evas_3d_scene.c b/src/lib/evas/canvas/evas_3d_scene.c
index 0bc0fb3..2b33c8a 100644
--- a/src/lib/evas/canvas/evas_3d_scene.c
+++ b/src/lib/evas/canvas/evas_3d_scene.c
@@ -64,16 +64,18 @@ evas_3d_scene_add(Evas *e)
64 return eo_obj; 64 return eo_obj;
65} 65}
66 66
67EOLIAN static void 67EOLIAN static Eo *
68_evas_3d_scene_eo_base_constructor(Eo *obj, Evas_3D_Scene_Data *pd) 68_evas_3d_scene_eo_base_constructor(Eo *obj, Evas_3D_Scene_Data *pd)
69{ 69{
70 eo_do_super(obj, MY_CLASS, eo_constructor()); 70 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
71 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_SCENE)); 71 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_SCENE));
72 evas_color_set(&pd->bg_color, 0.0, 0.0, 0.0, 0.0); 72 evas_color_set(&pd->bg_color, 0.0, 0.0, 0.0, 0.0);
73 pd->shadows_enabled = EINA_FALSE; 73 pd->shadows_enabled = EINA_FALSE;
74 pd->color_pick_enabled = EINA_FALSE; 74 pd->color_pick_enabled = EINA_FALSE;
75 pd->node_mesh_colors = NULL; 75 pd->node_mesh_colors = NULL;
76 pd->colors_node_mesh = NULL; 76 pd->colors_node_mesh = NULL;
77
78 return obj;
77} 79}
78 80
79EOLIAN static void 81EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_texture.c b/src/lib/evas/canvas/evas_3d_texture.c
index 8b68d81..c221b43 100644
--- a/src/lib/evas/canvas/evas_3d_texture.c
+++ b/src/lib/evas/canvas/evas_3d_texture.c
@@ -319,13 +319,15 @@ evas_3d_texture_add(Evas *e)
319} 319}
320 320
321 321
322EOLIAN static void 322EOLIAN static Eo *
323_evas_3d_texture_eo_base_constructor(Eo *obj, Evas_3D_Texture_Data *pd EINA_UNUSED) 323_evas_3d_texture_eo_base_constructor(Eo *obj, Evas_3D_Texture_Data *pd EINA_UNUSED)
324{ 324{
325 eo_do_super(obj, MY_CLASS, eo_constructor()); 325 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
326 pd->atlas_enable = EINA_TRUE; 326 pd->atlas_enable = EINA_TRUE;
327 327
328 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_TEXTURE)); 328 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_TEXTURE));
329
330 return obj;
329} 331}
330 332
331EOLIAN static void 333EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index b14194d..1935d40 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -148,10 +148,10 @@ evas_new(void)
148 return eo_obj; 148 return eo_obj;
149} 149}
150 150
151EOLIAN static void 151EOLIAN static Eo *
152_evas_canvas_eo_base_constructor(Eo *eo_obj, Evas_Public_Data *e) 152_evas_canvas_eo_base_constructor(Eo *eo_obj, Evas_Public_Data *e)
153{ 153{
154 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 154 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
155 155
156 e->evas = eo_obj; 156 e->evas = eo_obj;
157 e->output.render_method = RENDER_METHOD_INVALID; 157 e->output.render_method = RENDER_METHOD_INVALID;
@@ -185,6 +185,8 @@ _evas_canvas_eo_base_constructor(Eo *eo_obj, Evas_Public_Data *e)
185 185
186#undef EVAS_ARRAY_SET 186#undef EVAS_ARRAY_SET
187 eina_lock_new(&(e->lock_objects)); 187 eina_lock_new(&(e->lock_objects));
188
189 return eo_obj;
188} 190}
189 191
190EAPI void 192EAPI void
diff --git a/src/lib/evas/canvas/evas_object_box.c b/src/lib/evas/canvas/evas_object_box.c
index 1c42728..eda1bcd 100644
--- a/src/lib/evas/canvas/evas_object_box.c
+++ b/src/lib/evas/canvas/evas_object_box.c
@@ -462,13 +462,15 @@ evas_object_box_add(Evas *evas)
462 return obj; 462 return obj;
463} 463}
464 464
465EOLIAN static void 465EOLIAN static Eo *
466_evas_box_eo_base_constructor(Eo *obj, Evas_Object_Box_Data *class_data EINA_UNUSED) 466_evas_box_eo_base_constructor(Eo *obj, Evas_Object_Box_Data *class_data EINA_UNUSED)
467{ 467{
468 eo_do_super(obj, MY_CLASS, eo_constructor()); 468 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
469 eo_do(obj, 469 eo_do(obj,
470 evas_obj_smart_callbacks_descriptions_set(_signals), 470 evas_obj_smart_callbacks_descriptions_set(_signals),
471 evas_obj_type_set(MY_CLASS_NAME_LEGACY)); 471 evas_obj_type_set(MY_CLASS_NAME_LEGACY));
472
473 return obj;
472} 474}
473 475
474EOLIAN static Evas_Object* 476EOLIAN static Evas_Object*
diff --git a/src/lib/evas/canvas/evas_object_grid.c b/src/lib/evas/canvas/evas_object_grid.c
index a55584e..7d5e6d2 100644
--- a/src/lib/evas/canvas/evas_object_grid.c
+++ b/src/lib/evas/canvas/evas_object_grid.c
@@ -269,12 +269,13 @@ evas_object_grid_add(Evas *evas)
269 return obj; 269 return obj;
270} 270}
271 271
272EOLIAN static void 272EOLIAN static Eo *
273_evas_grid_eo_base_constructor(Eo *obj, Evas_Grid_Data *class_data EINA_UNUSED) 273_evas_grid_eo_base_constructor(Eo *obj, Evas_Grid_Data *class_data EINA_UNUSED)
274{ 274{
275 eo_do_super(obj, MY_CLASS, eo_constructor()); 275 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
276 eo_do(obj, evas_obj_smart_attach(_evas_object_grid_smart_class_new())); 276 eo_do(obj, evas_obj_smart_attach(_evas_object_grid_smart_class_new()));
277 277
278 return obj;
278// return evas_object_smart_add(evas, _evas_object_grid_smart_class_new()); 279// return evas_object_smart_add(evas, _evas_object_grid_smart_class_new());
279} 280}
280 281
diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c
index cabeebb..5e59dbb 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -342,7 +342,7 @@ _init_cow(Eo *eo_obj)
342 return EINA_TRUE; 342 return EINA_TRUE;
343} 343}
344 344
345EOLIAN static void 345EOLIAN static Eo *
346_evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o) 346_evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o)
347{ 347{
348 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 348 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
@@ -350,7 +350,7 @@ _evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o)
350 Eo *parent = NULL; 350 Eo *parent = NULL;
351 Evas_Colorspace cspace; 351 Evas_Colorspace cspace;
352 352
353 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 353 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
354 354
355 eo_do(eo_obj, parent = eo_parent_get()); 355 eo_do(eo_obj, parent = eo_parent_get());
356 eo_e = evas_object_evas_get(parent); 356 eo_e = evas_object_evas_get(parent);
@@ -359,7 +359,7 @@ _evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o)
359 evas_object_inject(eo_obj, obj, eo_e); 359 evas_object_inject(eo_obj, obj, eo_e);
360 360
361 if (!_init_cow(eo_obj)) 361 if (!_init_cow(eo_obj))
362 return; 362 return NULL;
363 363
364 o->load_opts = eina_cow_alloc(evas_object_image_load_opts_cow); 364 o->load_opts = eina_cow_alloc(evas_object_image_load_opts_cow);
365 o->pixels = eina_cow_alloc(evas_object_image_pixels_cow); 365 o->pixels = eina_cow_alloc(evas_object_image_pixels_cow);
@@ -377,6 +377,8 @@ _evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o)
377 state_write->filter = eina_cow_alloc(evas_object_filter_cow); 377 state_write->filter = eina_cow_alloc(evas_object_filter_cow);
378 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); 378 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
379 } 379 }
380
381 return eo_obj;
380} 382}
381 383
382EAPI Evas_Object * 384EAPI Evas_Object *
diff --git a/src/lib/evas/canvas/evas_object_line.c b/src/lib/evas/canvas/evas_object_line.c
index 8090c61..df9570a 100644
--- a/src/lib/evas/canvas/evas_object_line.c
+++ b/src/lib/evas/canvas/evas_object_line.c
@@ -214,14 +214,14 @@ evas_object_line_init(Evas_Object *eo_obj)
214 obj->type = o_type; 214 obj->type = o_type;
215} 215}
216 216
217EOLIAN static void 217EOLIAN static Eo *
218_evas_line_eo_base_constructor(Eo *eo_obj, Evas_Line_Data *class_data EINA_UNUSED) 218_evas_line_eo_base_constructor(Eo *eo_obj, Evas_Line_Data *class_data EINA_UNUSED)
219{ 219{
220 Evas_Object_Protected_Data *obj; 220 Evas_Object_Protected_Data *obj;
221 Evas_Line_Data *o; 221 Evas_Line_Data *o;
222 Eo *parent = NULL; 222 Eo *parent = NULL;
223 223
224 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 224 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
225 225
226 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 226 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
227 evas_object_line_init(eo_obj); 227 evas_object_line_init(eo_obj);
@@ -235,6 +235,8 @@ _evas_line_eo_base_constructor(Eo *eo_obj, Evas_Line_Data *class_data EINA_UNUSE
235 o->cur.x2 = 31; 235 o->cur.x2 = 31;
236 o->cur.y2 = 31; 236 o->cur.y2 = 31;
237 o->prev = o->cur; 237 o->prev = o->cur;
238
239 return eo_obj;
238} 240}
239 241
240static void 242static void
diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c
index 5f0db50..c77db68 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -82,12 +82,12 @@ _init_cow(void)
82 return EINA_TRUE; 82 return EINA_TRUE;
83} 83}
84 84
85EOLIAN static void 85EOLIAN static Eo *
86_evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj) 86_evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
87{ 87{
88 Eo *parent = NULL; 88 Eo *parent = NULL;
89 89
90 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 90 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
91 eo_do(eo_obj, evas_obj_type_set(MY_CLASS_NAME)); 91 eo_do(eo_obj, evas_obj_type_set(MY_CLASS_NAME));
92 eo_manual_free_set(eo_obj, EINA_TRUE); 92 eo_manual_free_set(eo_obj, EINA_TRUE);
93 93
@@ -96,7 +96,7 @@ _evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
96 if (!obj || !_init_cow() || !eo_isa(parent, EVAS_COMMON_INTERFACE_INTERFACE)) 96 if (!obj || !_init_cow() || !eo_isa(parent, EVAS_COMMON_INTERFACE_INTERFACE))
97 { 97 {
98 eo_error_set(eo_obj); 98 eo_error_set(eo_obj);
99 return; 99 return NULL;
100 } 100 }
101 101
102 obj->is_frame = EINA_FALSE; 102 obj->is_frame = EINA_FALSE;
@@ -107,6 +107,8 @@ _evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
107 obj->prev = eina_cow_alloc(evas_object_state_cow); 107 obj->prev = eina_cow_alloc(evas_object_state_cow);
108 obj->data_3d = eina_cow_alloc(evas_object_3d_cow); 108 obj->data_3d = eina_cow_alloc(evas_object_3d_cow);
109 obj->mask = eina_cow_alloc(evas_object_mask_cow); 109 obj->mask = eina_cow_alloc(evas_object_mask_cow);
110
111 return eo_obj;
110} 112}
111 113
112void 114void
diff --git a/src/lib/evas/canvas/evas_object_polygon.c b/src/lib/evas/canvas/evas_object_polygon.c
index 4e5ed04..4e5c636 100644
--- a/src/lib/evas/canvas/evas_object_polygon.c
+++ b/src/lib/evas/canvas/evas_object_polygon.c
@@ -101,18 +101,20 @@ evas_object_polygon_add(Evas *e)
101 return eo_obj; 101 return eo_obj;
102} 102}
103 103
104EOLIAN static void 104EOLIAN static Eo *
105_evas_polygon_eo_base_constructor(Eo *eo_obj, Evas_Polygon_Data *class_data EINA_UNUSED) 105_evas_polygon_eo_base_constructor(Eo *eo_obj, Evas_Polygon_Data *class_data EINA_UNUSED)
106{ 106{
107 Evas_Object_Protected_Data *obj; 107 Evas_Object_Protected_Data *obj;
108 Eo *parent = NULL; 108 Eo *parent = NULL;
109 109
110 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 110 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
111 111
112 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 112 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
113 evas_object_polygon_init(eo_obj); 113 evas_object_polygon_init(eo_obj);
114 eo_do(eo_obj, parent = eo_parent_get()); 114 eo_do(eo_obj, parent = eo_parent_get());
115 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent)); 115 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent));
116
117 return eo_obj;
116} 118}
117 119
118EOLIAN static void 120EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_object_rectangle.c b/src/lib/evas/canvas/evas_object_rectangle.c
index 9454a3d..cdee4ad 100644
--- a/src/lib/evas/canvas/evas_object_rectangle.c
+++ b/src/lib/evas/canvas/evas_object_rectangle.c
@@ -89,18 +89,20 @@ evas_object_rectangle_add(Evas *e)
89 return eo_obj; 89 return eo_obj;
90} 90}
91 91
92EOLIAN static void 92EOLIAN static Eo *
93_evas_rectangle_eo_base_constructor(Eo *eo_obj, Evas_Rectangle_Data *class_data EINA_UNUSED) 93_evas_rectangle_eo_base_constructor(Eo *eo_obj, Evas_Rectangle_Data *class_data EINA_UNUSED)
94{ 94{
95 Eo *parent = NULL; 95 Eo *parent = NULL;
96 96
97 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 97 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
98 98
99 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 99 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
100 evas_object_rectangle_init(eo_obj); 100 evas_object_rectangle_init(eo_obj);
101 101
102 eo_do(eo_obj, parent = eo_parent_get()); 102 eo_do(eo_obj, parent = eo_parent_get());
103 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent)); 103 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent));
104
105 return eo_obj;
104} 106}
105 107
106/* all nice and private */ 108/* all nice and private */
diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c
index 4623fc0..3aeb937 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -545,7 +545,7 @@ evas_object_smart_add(Evas *eo_e, Evas_Smart *s)
545 return eo_obj; 545 return eo_obj;
546} 546}
547 547
548EOLIAN static void 548EOLIAN static Eo *
549_evas_object_smart_eo_base_constructor(Eo *eo_obj, Evas_Smart_Data *class_data EINA_UNUSED) 549_evas_object_smart_eo_base_constructor(Eo *eo_obj, Evas_Smart_Data *class_data EINA_UNUSED)
550{ 550{
551 Evas_Object_Protected_Data *obj; 551 Evas_Object_Protected_Data *obj;
@@ -555,7 +555,7 @@ _evas_object_smart_eo_base_constructor(Eo *eo_obj, Evas_Smart_Data *class_data E
555 smart = class_data; 555 smart = class_data;
556 smart->object = eo_obj; 556 smart->object = eo_obj;
557 557
558 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 558 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
559 evas_object_smart_init(eo_obj); 559 evas_object_smart_init(eo_obj);
560 560
561 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 561 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
@@ -564,6 +564,8 @@ _evas_object_smart_eo_base_constructor(Eo *eo_obj, Evas_Smart_Data *class_data E
564 eo_do(eo_obj, 564 eo_do(eo_obj,
565 evas_obj_type_set(MY_CLASS_NAME_LEGACY), 565 evas_obj_type_set(MY_CLASS_NAME_LEGACY),
566 evas_obj_smart_add()); 566 evas_obj_smart_add());
567
568 return eo_obj;
567} 569}
568 570
569EOLIAN static void 571EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_object_smart_clipped.c b/src/lib/evas/canvas/evas_object_smart_clipped.c
index 38382f2..7472044 100644
--- a/src/lib/evas/canvas/evas_object_smart_clipped.c
+++ b/src/lib/evas/canvas/evas_object_smart_clipped.c
@@ -250,10 +250,10 @@ evas_object_smart_clipped_class_get(void)
250 return class; 250 return class;
251} 251}
252 252
253EOLIAN static void 253EOLIAN static Eo *
254_evas_smart_clipped_eo_base_constructor(Eo *eo_obj, Evas_Object_Smart_Clipped_Data *class_data EINA_UNUSED) 254_evas_smart_clipped_eo_base_constructor(Eo *obj, Evas_Object_Smart_Clipped_Data *class_data EINA_UNUSED)
255{ 255{
256 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 256 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
257} 257}
258 258
259#include "canvas/evas_smart_clipped.eo.c" 259#include "canvas/evas_smart_clipped.eo.c"
diff --git a/src/lib/evas/canvas/evas_object_table.c b/src/lib/evas/canvas/evas_object_table.c
index ea50553..cc61e19 100644
--- a/src/lib/evas/canvas/evas_object_table.c
+++ b/src/lib/evas/canvas/evas_object_table.c
@@ -966,11 +966,13 @@ evas_object_table_add(Evas *evas)
966 return obj; 966 return obj;
967} 967}
968 968
969EOLIAN static void 969EOLIAN static Eo *
970_evas_table_eo_base_constructor(Eo *obj, Evas_Table_Data *class_data EINA_UNUSED) 970_evas_table_eo_base_constructor(Eo *obj, Evas_Table_Data *class_data EINA_UNUSED)
971{ 971{
972 eo_do_super(obj, MY_CLASS, eo_constructor()); 972 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
973 eo_do(obj, evas_obj_type_set(MY_CLASS_NAME_LEGACY)); 973 eo_do(obj, evas_obj_type_set(MY_CLASS_NAME_LEGACY));
974
975 return obj;
974} 976}
975 977
976EOLIAN static Evas_Object* 978EOLIAN static Evas_Object*
diff --git a/src/lib/evas/canvas/evas_object_text.c b/src/lib/evas/canvas/evas_object_text.c
index c053515..c28e8a9 100644
--- a/src/lib/evas/canvas/evas_object_text.c
+++ b/src/lib/evas/canvas/evas_object_text.c
@@ -365,10 +365,10 @@ evas_object_text_add(Evas *e)
365 return eo_obj; 365 return eo_obj;
366} 366}
367 367
368EOLIAN static void 368EOLIAN static Eo *
369_evas_text_eo_base_constructor(Eo *eo_obj, Evas_Text_Data *o) 369_evas_text_eo_base_constructor(Eo *eo_obj, Evas_Text_Data *o)
370{ 370{
371 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 371 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
372 evas_object_text_init(eo_obj); 372 evas_object_text_init(eo_obj);
373 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 373 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
374 Eo *parent = NULL; 374 Eo *parent = NULL;
@@ -377,6 +377,8 @@ _evas_text_eo_base_constructor(Eo *eo_obj, Evas_Text_Data *o)
377 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent)); 377 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent));
378 378
379 o->cur.filter = eina_cow_alloc(evas_object_filter_cow); 379 o->cur.filter = eina_cow_alloc(evas_object_filter_cow);
380
381 return eo_obj;
380} 382}
381 383
382EOLIAN static void 384EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c
index 688e09d..a2d7079 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -5782,14 +5782,14 @@ evas_object_textblock_add(Evas *e)
5782 return eo_obj; 5782 return eo_obj;
5783} 5783}
5784 5784
5785EOLIAN static void 5785EOLIAN static Eo *
5786_evas_textblock_eo_base_constructor(Eo *eo_obj, Evas_Textblock_Data *class_data EINA_UNUSED) 5786_evas_textblock_eo_base_constructor(Eo *eo_obj, Evas_Textblock_Data *class_data EINA_UNUSED)
5787{ 5787{
5788 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 5788 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
5789 Evas_Textblock_Data *o; 5789 Evas_Textblock_Data *o;
5790 Eo *eo_parent = NULL; 5790 Eo *eo_parent = NULL;
5791 5791
5792 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 5792 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
5793 5793
5794 /* set up methods (compulsory) */ 5794 /* set up methods (compulsory) */
5795 obj->func = &object_func; 5795 obj->func = &object_func;
@@ -5803,6 +5803,8 @@ _evas_textblock_eo_base_constructor(Eo *eo_obj, Evas_Textblock_Data *class_data
5803 5803
5804 eo_do(eo_obj, eo_parent = eo_parent_get()); 5804 eo_do(eo_obj, eo_parent = eo_parent_get());
5805 evas_object_inject(eo_obj, obj, evas_object_evas_get(eo_parent)); 5805 evas_object_inject(eo_obj, obj, evas_object_evas_get(eo_parent));
5806
5807 return eo_obj;
5806} 5808}
5807 5809
5808EAPI Evas_Textblock_Style * 5810EAPI Evas_Textblock_Style *
diff --git a/src/lib/evas/canvas/evas_object_textgrid.c b/src/lib/evas/canvas/evas_object_textgrid.c
index 122e8e7..7dbb739 100644
--- a/src/lib/evas/canvas/evas_object_textgrid.c
+++ b/src/lib/evas/canvas/evas_object_textgrid.c
@@ -1061,18 +1061,20 @@ evas_object_textgrid_add(Evas *e)
1061 return eo_obj; 1061 return eo_obj;
1062} 1062}
1063 1063
1064EOLIAN static void 1064EOLIAN static Eo *
1065_evas_textgrid_eo_base_constructor(Eo *eo_obj, Evas_Textgrid_Data *class_data EINA_UNUSED) 1065_evas_textgrid_eo_base_constructor(Eo *eo_obj, Evas_Textgrid_Data *class_data EINA_UNUSED)
1066{ 1066{
1067 Eo *eo_parent = NULL; 1067 Eo *eo_parent = NULL;
1068 1068
1069 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 1069 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
1070 1070
1071 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1071 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1072 evas_object_textgrid_init(eo_obj); 1072 evas_object_textgrid_init(eo_obj);
1073 1073
1074 eo_do(eo_obj, eo_parent = eo_parent_get()); 1074 eo_do(eo_obj, eo_parent = eo_parent_get());
1075 evas_object_inject(eo_obj, obj, evas_object_evas_get(eo_parent)); 1075 evas_object_inject(eo_obj, obj, evas_object_evas_get(eo_parent));
1076
1077 return eo_obj;
1076} 1078}
1077 1079
1078EOLIAN static void 1080EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_object_vg.c b/src/lib/evas/canvas/evas_object_vg.c
index 731eec6..0e3eaa7 100644
--- a/src/lib/evas/canvas/evas_object_vg.c
+++ b/src/lib/evas/canvas/evas_object_vg.c
@@ -98,13 +98,13 @@ _evas_vg_eo_base_destructor(Eo *eo_obj, Evas_VG_Data *pd)
98 eo_do_super(eo_obj, MY_CLASS, eo_destructor()); 98 eo_do_super(eo_obj, MY_CLASS, eo_destructor());
99} 99}
100 100
101void 101Eo *
102_evas_vg_eo_base_constructor(Eo *eo_obj, Evas_VG_Data *pd) 102_evas_vg_eo_base_constructor(Eo *eo_obj, Evas_VG_Data *pd)
103{ 103{
104 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 104 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
105 Eo *parent = NULL; 105 Eo *parent = NULL;
106 106
107 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 107 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
108 108
109 /* set up methods (compulsory) */ 109 /* set up methods (compulsory) */
110 obj->func = &object_func; 110 obj->func = &object_func;
@@ -117,6 +117,8 @@ _evas_vg_eo_base_constructor(Eo *eo_obj, Evas_VG_Data *pd)
117 117
118 eo_do(eo_obj, parent = eo_parent_get()); 118 eo_do(eo_obj, parent = eo_parent_get());
119 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent)); 119 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent));
120
121 return eo_obj;
120} 122}
121 123
122static void 124static void
diff --git a/src/lib/evas/canvas/evas_out.c b/src/lib/evas/canvas/evas_out.c
index ce00eb3..1558a90 100644
--- a/src/lib/evas/canvas/evas_out.c
+++ b/src/lib/evas/canvas/evas_out.c
@@ -23,7 +23,7 @@ evas_out_add(Evas *e)
23 return eo_obj; 23 return eo_obj;
24} 24}
25 25
26EOLIAN static void 26EOLIAN static Eo *
27_evas_out_eo_base_constructor(Eo *eo_obj, Evas_Out_Data *eo_dat) 27_evas_out_eo_base_constructor(Eo *eo_obj, Evas_Out_Data *eo_dat)
28{ 28{
29 Eo *eo_parent = NULL; 29 Eo *eo_parent = NULL;
@@ -33,14 +33,16 @@ _evas_out_eo_base_constructor(Eo *eo_obj, Evas_Out_Data *eo_dat)
33 e = eo_data_scope_get(eo_parent, EVAS_CANVAS_CLASS); 33 e = eo_data_scope_get(eo_parent, EVAS_CANVAS_CLASS);
34 evas_canvas_async_block(e); 34 evas_canvas_async_block(e);
35 35
36 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 36 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
37 37
38 if (!e) return; 38 if (!e) return NULL;
39 e->outputs = eina_list_append(e->outputs, eo_obj); 39 e->outputs = eina_list_append(e->outputs, eo_obj);
40 if (e->engine.func->info) eo_dat->info = e->engine.func->info(eo_parent); 40 if (e->engine.func->info) eo_dat->info = e->engine.func->info(eo_parent);
41 // XXX: context and output are currently held in the core engine and are 41 // XXX: context and output are currently held in the core engine and are
42 // allocated by engine specific internal code. this all needs a new engine 42 // allocated by engine specific internal code. this all needs a new engine
43 // api to make it work 43 // api to make it work
44
45 return eo_obj;
44} 46}
45 47
46EAPI void 48EAPI void
diff --git a/src/lib/evas/canvas/evas_vg_container.c b/src/lib/evas/canvas/evas_vg_container.c
index ba0eeec..f3ee7c9 100644
--- a/src/lib/evas/canvas/evas_vg_container.c
+++ b/src/lib/evas/canvas/evas_vg_container.c
@@ -25,17 +25,19 @@ _efl_vg_container_render_pre(Eo *obj EINA_UNUSED,
25 _evas_vg_render_pre(child, s, current); 25 _evas_vg_render_pre(child, s, current);
26} 26}
27 27
28static void 28static Eo *
29_efl_vg_container_eo_base_constructor(Eo *obj, 29_efl_vg_container_eo_base_constructor(Eo *obj,
30 Efl_VG_Container_Data *pd) 30 Efl_VG_Container_Data *pd)
31{ 31{
32 Efl_VG_Base_Data *nd; 32 Efl_VG_Base_Data *nd;
33 33
34 eo_do_super(obj, MY_CLASS, eo_constructor()); 34 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
35 35
36 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS); 36 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS);
37 nd->render_pre = _efl_vg_container_render_pre; 37 nd->render_pre = _efl_vg_container_render_pre;
38 nd->data = pd; 38 nd->data = pd;
39
40 return obj;
39} 41}
40 42
41static void 43static void
diff --git a/src/lib/evas/canvas/evas_vg_gradient_linear.c b/src/lib/evas/canvas/evas_vg_gradient_linear.c
index 9f05fac..9a54f7a 100644
--- a/src/lib/evas/canvas/evas_vg_gradient_linear.c
+++ b/src/lib/evas/canvas/evas_vg_gradient_linear.c
@@ -88,17 +88,19 @@ _efl_vg_gradient_linear_render_pre(Eo *obj,
88 ector_renderer_prepare()); 88 ector_renderer_prepare());
89} 89}
90 90
91static void 91static Eo *
92_efl_vg_gradient_linear_eo_base_constructor(Eo *obj, 92_efl_vg_gradient_linear_eo_base_constructor(Eo *obj,
93 Efl_VG_Gradient_Linear_Data *pd) 93 Efl_VG_Gradient_Linear_Data *pd)
94{ 94{
95 Efl_VG_Base_Data *nd; 95 Efl_VG_Base_Data *nd;
96 96
97 eo_do_super(obj, MY_CLASS, eo_constructor()); 97 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
98 98
99 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS); 99 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS);
100 nd->render_pre = _efl_vg_gradient_linear_render_pre; 100 nd->render_pre = _efl_vg_gradient_linear_render_pre;
101 nd->data = pd; 101 nd->data = pd;
102
103 return obj;
102} 104}
103 105
104static void 106static void
diff --git a/src/lib/evas/canvas/evas_vg_gradient_radial.c b/src/lib/evas/canvas/evas_vg_gradient_radial.c
index e79f4fd..8af5e7d 100644
--- a/src/lib/evas/canvas/evas_vg_gradient_radial.c
+++ b/src/lib/evas/canvas/evas_vg_gradient_radial.c
@@ -105,16 +105,18 @@ _efl_vg_gradient_radial_render_pre(Eo *obj,
105 ector_renderer_prepare()); 105 ector_renderer_prepare());
106} 106}
107 107
108static void 108static Eo *
109_efl_vg_gradient_radial_eo_base_constructor(Eo *obj, Efl_VG_Gradient_Radial_Data *pd) 109_efl_vg_gradient_radial_eo_base_constructor(Eo *obj, Efl_VG_Gradient_Radial_Data *pd)
110{ 110{
111 Efl_VG_Base_Data *nd; 111 Efl_VG_Base_Data *nd;
112 112
113 eo_do_super(obj, MY_CLASS, eo_constructor()); 113 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
114 114
115 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS); 115 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS);
116 nd->render_pre = _efl_vg_gradient_radial_render_pre; 116 nd->render_pre = _efl_vg_gradient_radial_render_pre;
117 nd->data = pd; 117 nd->data = pd;
118
119 return obj;
118} 120}
119 121
120static void 122static void
diff --git a/src/lib/evas/canvas/evas_vg_node.c b/src/lib/evas/canvas/evas_vg_node.c
index 2d84b86..cfe5b40 100644
--- a/src/lib/evas/canvas/evas_vg_node.c
+++ b/src/lib/evas/canvas/evas_vg_node.c
@@ -238,20 +238,22 @@ _efl_vg_base_parent_checked_get(Eo *obj,
238 return EINA_FALSE; 238 return EINA_FALSE;
239} 239}
240 240
241static void 241static Eo *
242_efl_vg_base_eo_base_constructor(Eo *obj, 242_efl_vg_base_eo_base_constructor(Eo *obj,
243 Efl_VG_Base_Data *pd) 243 Efl_VG_Base_Data *pd)
244{ 244{
245 Efl_VG_Container_Data *cd = NULL; 245 Efl_VG_Container_Data *cd = NULL;
246 Eo *parent; 246 Eo *parent;
247 247
248 eo_do_super(obj, MY_CLASS, eo_constructor()); 248 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
249 249
250 if (!_efl_vg_base_parent_checked_get(obj, &parent, &cd)) 250 if (!_efl_vg_base_parent_checked_get(obj, &parent, &cd))
251 eo_error_set(obj); 251 eo_error_set(obj);
252 252
253 eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _efl_vg_base_property_changed, pd)); 253 eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _efl_vg_base_property_changed, pd));
254 pd->changed = EINA_TRUE; 254 pd->changed = EINA_TRUE;
255
256 return obj;
255} 257}
256 258
257static void 259static void
diff --git a/src/lib/evas/canvas/evas_vg_root_node.c b/src/lib/evas/canvas/evas_vg_root_node.c
index 65dbb02..1d9b573 100644
--- a/src/lib/evas/canvas/evas_vg_root_node.c
+++ b/src/lib/evas/canvas/evas_vg_root_node.c
@@ -65,7 +65,7 @@ _efl_vg_root_node_eo_base_parent_set(Eo *obj,
65 } 65 }
66} 66}
67 67
68static void 68static Eo *
69_efl_vg_root_node_eo_base_constructor(Eo *obj, 69_efl_vg_root_node_eo_base_constructor(Eo *obj,
70 Efl_VG_Root_Node_Data *pd) 70 Efl_VG_Root_Node_Data *pd)
71{ 71{
@@ -74,7 +74,7 @@ _efl_vg_root_node_eo_base_constructor(Eo *obj,
74 Eo *parent; 74 Eo *parent;
75 75
76 // Nice little hack, jump over parent constructor in Efl_VG_Root 76 // Nice little hack, jump over parent constructor in Efl_VG_Root
77 eo_do_super(obj, EFL_VG_BASE_CLASS, eo_constructor()); 77 obj = eo_do_super_ret(obj, EFL_VG_BASE_CLASS, obj, eo_constructor());
78 eo_do(obj, parent = eo_parent_get()); 78 eo_do(obj, parent = eo_parent_get());
79 if (!eo_isa(parent, EVAS_VG_CLASS)) 79 if (!eo_isa(parent, EVAS_VG_CLASS))
80 eo_error_set(obj); 80 eo_error_set(obj);
@@ -87,6 +87,8 @@ _efl_vg_root_node_eo_base_constructor(Eo *obj,
87 nd->data = cd; 87 nd->data = cd;
88 88
89 eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _evas_vg_root_node_changed, pd)); 89 eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _evas_vg_root_node_changed, pd));
90
91 return obj;
90} 92}
91 93
92#include "efl_vg_root_node.eo.c" 94#include "efl_vg_root_node.eo.c"
diff --git a/src/lib/evas/canvas/evas_vg_shape.c b/src/lib/evas/canvas/evas_vg_shape.c
index e67c3b5..d736718 100644
--- a/src/lib/evas/canvas/evas_vg_shape.c
+++ b/src/lib/evas/canvas/evas_vg_shape.c
@@ -316,12 +316,12 @@ _efl_vg_shape_render_pre(Eo *obj EINA_UNUSED,
316 ector_renderer_prepare()); 316 ector_renderer_prepare());
317} 317}
318 318
319static void 319static Eo *
320_efl_vg_shape_eo_base_constructor(Eo *obj, Efl_VG_Shape_Data *pd) 320_efl_vg_shape_eo_base_constructor(Eo *obj, Efl_VG_Shape_Data *pd)
321{ 321{
322 Efl_VG_Base_Data *nd; 322 Efl_VG_Base_Data *nd;
323 323
324 eo_do_super(obj, MY_CLASS, eo_constructor()); 324 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
325 325
326 pd->stroke.cap = EFL_GFX_CAP_BUTT; 326 pd->stroke.cap = EFL_GFX_CAP_BUTT;
327 pd->stroke.join = EFL_GFX_JOIN_MITER; 327 pd->stroke.join = EFL_GFX_JOIN_MITER;
@@ -331,6 +331,8 @@ _efl_vg_shape_eo_base_constructor(Eo *obj, Efl_VG_Shape_Data *pd)
331 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS); 331 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS);
332 nd->render_pre = _efl_vg_shape_render_pre; 332 nd->render_pre = _efl_vg_shape_render_pre;
333 nd->data = pd; 333 nd->data = pd;
334
335 return obj;
334} 336}
335 337
336static void 338static void
diff --git a/src/tests/eo/composite_objects/composite_objects_comp.c b/src/tests/eo/composite_objects/composite_objects_comp.c
index 21baed4..b933e19 100644
--- a/src/tests/eo/composite_objects/composite_objects_comp.c
+++ b/src/tests/eo/composite_objects/composite_objects_comp.c
@@ -21,11 +21,11 @@ _a_get(Eo *obj, void *class_data EINA_UNUSED)
21 return a; 21 return a;
22} 22}
23 23
24static void 24static Eo *
25_constructor(Eo *obj, void *class_data EINA_UNUSED) 25_constructor(Eo *obj, void *class_data EINA_UNUSED)
26{ 26{
27 Eina_Bool tmp; 27 Eina_Bool tmp;
28 eo_do_super(obj, MY_CLASS, eo_constructor()); 28 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
29 29
30 Eo *simple = eo_add(SIMPLE_CLASS, obj); 30 Eo *simple = eo_add(SIMPLE_CLASS, obj);
31 eo_do(obj, eo_composite_attach(simple)); 31 eo_do(obj, eo_composite_attach(simple));
@@ -35,6 +35,8 @@ _constructor(Eo *obj, void *class_data EINA_UNUSED)
35 fail_if(!eo_do_ret(simple, tmp, eo_composite_part_is())); 35 fail_if(!eo_do_ret(simple, tmp, eo_composite_part_is()));
36 36
37 eo_do(obj, eo_key_data_set("simple-obj", simple, NULL)); 37 eo_do(obj, eo_key_data_set("simple-obj", simple, NULL));
38
39 return obj;
38} 40}
39 41
40static Eo_Op_Description op_descs[] = { 42static Eo_Op_Description op_descs[] = {
diff --git a/src/tests/eo/constructors/constructors_mixin.c b/src/tests/eo/constructors/constructors_mixin.c
index ca7343f..3c21129 100644
--- a/src/tests/eo/constructors/constructors_mixin.c
+++ b/src/tests/eo/constructors/constructors_mixin.c
@@ -18,12 +18,12 @@ _add_and_print_set(Eo *obj, void *class_data EINA_UNUSED, int x)
18 18
19extern int my_init_count; 19extern int my_init_count;
20 20
21static void 21static Eo *
22_constructor(Eo *obj, void *class_data EINA_UNUSED) 22_constructor(Eo *obj, void *class_data EINA_UNUSED)
23{ 23{
24 eo_do_super(obj, MY_CLASS, eo_constructor());
25
26 my_init_count++; 24 my_init_count++;
25
26 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
27} 27}
28 28
29static void 29static void
diff --git a/src/tests/eo/constructors/constructors_simple.c b/src/tests/eo/constructors/constructors_simple.c
index 5e9b60f..ed22905 100644
--- a/src/tests/eo/constructors/constructors_simple.c
+++ b/src/tests/eo/constructors/constructors_simple.c
@@ -39,12 +39,12 @@ _GET_SET_FUNC(b)
39 39
40extern int my_init_count; 40extern int my_init_count;
41 41
42static void 42static Eo *
43_constructor(Eo *obj, void *class_data EINA_UNUSED) 43_constructor(Eo *obj, void *class_data EINA_UNUSED)
44{ 44{
45 eo_do_super(obj, MY_CLASS, eo_constructor());
46
47 my_init_count++; 45 my_init_count++;
46
47 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
48} 48}
49 49
50static Eo* 50static Eo*
diff --git a/src/tests/eo/constructors/constructors_simple2.c b/src/tests/eo/constructors/constructors_simple2.c
index 0318a9f..b1b6bbe 100644
--- a/src/tests/eo/constructors/constructors_simple2.c
+++ b/src/tests/eo/constructors/constructors_simple2.c
@@ -8,12 +8,13 @@
8 8
9#define MY_CLASS SIMPLE2_CLASS 9#define MY_CLASS SIMPLE2_CLASS
10 10
11static void 11static Eo *
12_constructor(Eo *obj, void *class_data EINA_UNUSED) 12_constructor(Eo *obj, void *class_data EINA_UNUSED)
13{ 13{
14 eo_do_super(obj, MY_CLASS, eo_constructor()); 14 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
15 15
16 eo_error_set(obj); 16 eo_error_set(obj);
17 return obj;
17} 18}
18 19
19static Eo_Op_Description op_descs[] = { 20static Eo_Op_Description op_descs[] = {
diff --git a/src/tests/eo/constructors/constructors_simple3.c b/src/tests/eo/constructors/constructors_simple3.c
index 9c720b5..16d3fc8 100644
--- a/src/tests/eo/constructors/constructors_simple3.c
+++ b/src/tests/eo/constructors/constructors_simple3.c
@@ -8,10 +8,10 @@
8 8
9#define MY_CLASS SIMPLE3_CLASS 9#define MY_CLASS SIMPLE3_CLASS
10 10
11static void 11static Eo *
12_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED) 12_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
13{ 13{
14 (void) obj; 14 return obj;
15} 15}
16 16
17static Eo_Op_Description op_descs[] = { 17static Eo_Op_Description op_descs[] = {
diff --git a/src/tests/eo/constructors/constructors_simple7.c b/src/tests/eo/constructors/constructors_simple7.c
index cd02989..79dce35 100644
--- a/src/tests/eo/constructors/constructors_simple7.c
+++ b/src/tests/eo/constructors/constructors_simple7.c
@@ -11,11 +11,11 @@
11 11
12#define MY_CLASS SIMPLE7_CLASS 12#define MY_CLASS SIMPLE7_CLASS
13 13
14static void 14static Eo *
15_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED) 15_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
16{ 16{
17 /* FIXME: Actually test it. */ 17 /* FIXME: Actually test it. */
18 eo_do_super(obj, MY_CLASS, eo_constructor()); 18 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
19} 19}
20 20
21static Eo_Op_Description op_descs [] = { 21static Eo_Op_Description op_descs [] = {
diff --git a/src/tests/eo/mixin/mixin_mixin.c b/src/tests/eo/mixin/mixin_mixin.c
index d91a04f..f5c2334 100644
--- a/src/tests/eo/mixin/mixin_mixin.c
+++ b/src/tests/eo/mixin/mixin_mixin.c
@@ -17,10 +17,10 @@ _ab_sum_get(Eo *obj, void *class_data EINA_UNUSED)
17 return a + b; 17 return a + b;
18} 18}
19 19
20static void 20static Eo *
21_constructor(Eo *obj, void *class_data EINA_UNUSED) 21_constructor(Eo *obj, void *class_data EINA_UNUSED)
22{ 22{
23 eo_do_super(obj, MY_CLASS, eo_constructor()); 23 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
24} 24}
25 25
26static void 26static void
diff --git a/src/tests/eo/mixin/mixin_mixin2.c b/src/tests/eo/mixin/mixin_mixin2.c
index 6df0a85..60f3d40 100644
--- a/src/tests/eo/mixin/mixin_mixin2.c
+++ b/src/tests/eo/mixin/mixin_mixin2.c
@@ -32,10 +32,11 @@ _ab_sum_get(Eo *obj, void *class_data)
32 return sum; 32 return sum;
33} 33}
34 34
35static void 35static Eo *
36_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED) 36_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
37{ 37{
38 eo_do_super(obj, MY_CLASS, eo_constructor()); 38 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
39 return obj;
39} 40}
40 41
41static void 42static void
diff --git a/src/tests/eo/mixin/mixin_mixin3.c b/src/tests/eo/mixin/mixin_mixin3.c
index 6d0d99d..cd2d732 100644
--- a/src/tests/eo/mixin/mixin_mixin3.c
+++ b/src/tests/eo/mixin/mixin_mixin3.c
@@ -32,10 +32,10 @@ _ab_sum_get(Eo *obj, void *class_data EINA_UNUSED)
32 return sum; 32 return sum;
33} 33}
34 34
35static void 35static Eo *
36_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED) 36_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
37{ 37{
38 eo_do_super(obj, MY_CLASS, eo_constructor()); 38 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
39} 39}
40 40
41static void 41static void
diff --git a/src/tests/eo/signals/signals_simple.c b/src/tests/eo/signals/signals_simple.c
index a928cec..f113e51 100644
--- a/src/tests/eo/signals/signals_simple.c
+++ b/src/tests/eo/signals/signals_simple.c
@@ -60,15 +60,17 @@ _cb_deled(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_inf
60 return EO_CALLBACK_CONTINUE; 60 return EO_CALLBACK_CONTINUE;
61} 61}
62 62
63static void 63static Eo *
64_constructor(Eo *obj, void *class_data EINA_UNUSED) 64_constructor(Eo *obj, void *class_data EINA_UNUSED)
65{ 65{
66 eo_do_super(obj, MY_CLASS, eo_constructor()); 66 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
67 67
68 eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_ADD, _cb_added, NULL)); 68 eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_ADD, _cb_added, NULL));
69 eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_DEL, _cb_deled, NULL)); 69 eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_DEL, _cb_deled, NULL));
70 70
71 eo_do(obj, eo_key_data_set("cb_count", (intptr_t) 0, NULL)); 71 eo_do(obj, eo_key_data_set("cb_count", (intptr_t) 0, NULL));
72
73 return obj;
72} 74}
73 75
74EAPI EO_VOID_FUNC_BODYV(simple_a_set, EO_FUNC_CALL(a), int a); 76EAPI EO_VOID_FUNC_BODYV(simple_a_set, EO_FUNC_CALL(a), int a);
diff --git a/src/tests/eo/suite/eo_test_general.c b/src/tests/eo/suite/eo_test_general.c
index 037567d..bb4f4ed 100644
--- a/src/tests/eo/suite/eo_test_general.c
+++ b/src/tests/eo/suite/eo_test_general.c
@@ -296,12 +296,12 @@ static Eina_Bool _man_should_con = EINA_TRUE;
296static Eina_Bool _man_should_des = EINA_TRUE; 296static Eina_Bool _man_should_des = EINA_TRUE;
297static const Eo_Class *cur_klass = NULL; 297static const Eo_Class *cur_klass = NULL;
298 298
299static void 299static Eo *
300_man_con(Eo *obj, void *data EINA_UNUSED, va_list *list EINA_UNUSED) 300_man_con(Eo *obj, void *data EINA_UNUSED, va_list *list EINA_UNUSED)
301{ 301{
302 if (_man_should_con) 302 if (_man_should_con)
303 eo_manual_free_set(obj, EINA_TRUE); 303 eo_manual_free_set(obj, EINA_TRUE);
304 eo_do_super(obj, cur_klass, eo_constructor()); 304 return eo_do_super_ret(obj, cur_klass, obj, eo_constructor());
305} 305}
306 306
307static void 307static void
diff --git a/src/tests/eo/suite/eo_test_threaded_calls.c b/src/tests/eo/suite/eo_test_threaded_calls.c
index 33520f2..21b6015 100644
--- a/src/tests/eo/suite/eo_test_threaded_calls.c
+++ b/src/tests/eo/suite/eo_test_threaded_calls.c
@@ -49,12 +49,14 @@ _try_swap_stack(Eo *obj EINA_UNUSED, void *class_data)
49 } 49 }
50} 50}
51 51
52static void 52static Eo *
53_constructor(Eo *obj EINA_UNUSED, void *class_data EINA_UNUSED, int v) 53_constructor(Eo *obj, void *class_data EINA_UNUSED, int v)
54{ 54{
55 Thread_Test_Public_Data *pd = class_data; 55 Thread_Test_Public_Data *pd = class_data;
56 56
57 pd->v = v; 57 pd->v = v;
58
59 return obj;
58} 60}
59 61
60static Eo_Op_Description op_descs[] = { 62static Eo_Op_Description op_descs[] = {
diff --git a/src/tests/eolian_cxx/a.c b/src/tests/eolian_cxx/a.c
index f8edfad..885c9ea 100644
--- a/src/tests/eolian_cxx/a.c
+++ b/src/tests/eolian_cxx/a.c
@@ -15,9 +15,9 @@ typedef struct _A_Data A_Data;
15 15
16#define MY_CLASS A_CLASS 16#define MY_CLASS A_CLASS
17 17
18static void _a_eo_base_constructor(Eo *obj EINA_UNUSED, A_Data *pd EINA_UNUSED) 18static Eo *_a_eo_base_constructor(Eo *obj EINA_UNUSED, A_Data *pd EINA_UNUSED)
19{ 19{
20 eo_do_super(obj, MY_CLASS, eo_constructor()); 20 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
21} 21}
22 22
23#include "a.eo.c" 23#include "a.eo.c"
diff --git a/src/tests/eolian_cxx/b.c b/src/tests/eolian_cxx/b.c
index 7b7ce50..f32617b 100644
--- a/src/tests/eolian_cxx/b.c
+++ b/src/tests/eolian_cxx/b.c
@@ -16,9 +16,9 @@ typedef struct _B_Data B_Data;
16 16
17#define MY_CLASS B_CLASS 17#define MY_CLASS B_CLASS
18 18
19static void _b_eo_base_constructor(Eo *obj EINA_UNUSED, B_Data *pd EINA_UNUSED) 19static Eo *_b_eo_base_constructor(Eo *obj EINA_UNUSED, B_Data *pd EINA_UNUSED)
20{ 20{
21 eo_do_super(obj, MY_CLASS, eo_constructor()); 21 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
22} 22}
23 23
24#include "b.eo.c" 24#include "b.eo.c"
diff --git a/src/tests/eolian_cxx/c.c b/src/tests/eolian_cxx/c.c
index be8ad2c..f113c8f 100644
--- a/src/tests/eolian_cxx/c.c
+++ b/src/tests/eolian_cxx/c.c
@@ -16,9 +16,9 @@ typedef struct _C_Data C_Data;
16 16
17#define MY_CLASS C_CLASS 17#define MY_CLASS C_CLASS
18 18
19static void _c_eo_base_constructor(Eo *obj EINA_UNUSED, C_Data *pd EINA_UNUSED) 19static Eo *_c_eo_base_constructor(Eo *obj EINA_UNUSED, C_Data *pd EINA_UNUSED)
20{ 20{
21 eo_do_super(obj, MY_CLASS, eo_constructor()); 21 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
22} 22}
23 23
24#include "c.eo.c" 24#include "c.eo.c"
diff --git a/src/tests/eolian_cxx/callback.c b/src/tests/eolian_cxx/callback.c
index ef978fb..6261254 100644
--- a/src/tests/eolian_cxx/callback.c
+++ b/src/tests/eolian_cxx/callback.c
@@ -28,13 +28,15 @@ static Eina_Bool _callback_callback_added(void* data EINA_UNUSED, Eo* obj EINA_U
28 return EINA_TRUE; 28 return EINA_TRUE;
29} 29}
30 30
31static void _callback_eo_base_constructor(Eo *obj EINA_UNUSED, Callback_Data *pd EINA_UNUSED) 31static Eo *_callback_eo_base_constructor(Eo *obj, Callback_Data *pd EINA_UNUSED)
32{ 32{
33 pd->callbacks = 0; 33 pd->callbacks = 0;
34 eo_do_super(obj, MY_CLASS, eo_constructor()); 34 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
35 35
36 eo_event_callback_priority_add(EO_BASE_EVENT_CALLBACK_ADD, EO_CALLBACK_PRIORITY_DEFAULT 36 eo_event_callback_priority_add(EO_BASE_EVENT_CALLBACK_ADD, EO_CALLBACK_PRIORITY_DEFAULT
37 , &_callback_callback_added, pd); 37 , &_callback_callback_added, pd);
38
39 return obj;
38} 40}
39 41
40static void _callback_onecallback(Eo *obj EINA_UNUSED, Callback_Data *pd EINA_UNUSED, Ecore_Cb cb, void *data) 42static void _callback_onecallback(Eo *obj EINA_UNUSED, Callback_Data *pd EINA_UNUSED, Ecore_Cb cb, void *data)
diff --git a/src/tests/eolian_cxx/d.c b/src/tests/eolian_cxx/d.c
index ef08f81..8ef24d6 100644
--- a/src/tests/eolian_cxx/d.c
+++ b/src/tests/eolian_cxx/d.c
@@ -18,9 +18,9 @@ typedef struct _D_Data D_Data;
18 18
19#define MY_CLASS D_CLASS 19#define MY_CLASS D_CLASS
20 20
21static void _d_eo_base_constructor(Eo *obj EINA_UNUSED, D_Data *pd EINA_UNUSED) 21static Eo *_d_eo_base_constructor(Eo *obj EINA_UNUSED, D_Data *pd EINA_UNUSED)
22{ 22{
23 eo_do_super(obj, MY_CLASS, eo_constructor()); 23 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
24} 24}
25 25
26#include "d.eo.c" 26#include "d.eo.c"
diff --git a/src/tests/eolian_cxx/simple.c b/src/tests/eolian_cxx/simple.c
index c78073c..1009b37 100644
--- a/src/tests/eolian_cxx/simple.c
+++ b/src/tests/eolian_cxx/simple.c
@@ -12,9 +12,9 @@
12 12
13#define MY_CLASS SIMPLE_CLASS 13#define MY_CLASS SIMPLE_CLASS
14 14
15static void _simple_eo_base_constructor(Eo *obj, void *pd EINA_UNUSED) 15static Eo *_simple_eo_base_constructor(Eo *obj, void *pd EINA_UNUSED)
16{ 16{
17 eo_do_super(obj, MY_CLASS, eo_constructor()); 17 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
18} 18}
19 19
20static Eina_Bool _simple_simple_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED) 20static Eina_Bool _simple_simple_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED)