tasn pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=d1a1819813d74361b25fd5c1123f7ac76be9b84f

commit d1a1819813d74361b25fd5c1123f7ac76be9b84f
Author: Tom Hacohen <t...@stosb.com>
Date:   Wed Mar 9 16:08:12 2016 +0000

    Automatic migration to the new eo_add syntax.
---
 src/bin/test_application_server.c                  |  4 +--
 src/bin/test_systray.c                             |  2 +-
 src/bin/test_task_switcher.c                       |  2 +-
 src/examples/evas3d_map_example.c                  | 32 ++++++++++----------
 src/examples/evas3d_object_on_button_example.c     | 24 +++++++--------
 src/examples/evas3d_scene_on_button_example.c      | 22 ++++++--------
 src/examples/filemvc.c                             | 10 +++----
 src/examples/fileviewlist.c                        |  4 +--
 src/examples/performance/graphical.c               | 35 ++++++++++------------
 src/examples/sphere_hunter/evas_3d_sphere_hunter.c | 30 +++++++++----------
 src/lib/elc_ctxpopup.c                             |  7 +++--
 src/lib/elc_fileselector.c                         |  3 +-
 src/lib/elc_fileselector_button.c                  |  3 +-
 src/lib/elc_fileselector_entry.c                   |  3 +-
 src/lib/elc_hoversel.c                             |  6 ++--
 src/lib/elc_multibuttonentry.c                     |  5 ++--
 src/lib/elc_naviframe.c                            |  5 ++--
 src/lib/elc_player.c                               |  3 +-
 src/lib/elc_popup.c                                |  5 ++--
 src/lib/elm_access.c                               |  3 +-
 src/lib/elm_actionslider.c                         |  3 +-
 src/lib/elm_app_client.c                           |  4 +--
 src/lib/elm_app_server.c                           |  2 +-
 src/lib/elm_atspi_bridge.c                         |  2 +-
 src/lib/elm_bg.c                                   |  3 +-
 src/lib/elm_box.c                                  |  3 +-
 src/lib/elm_bubble.c                               |  3 +-
 src/lib/elm_button.c                               |  3 +-
 src/lib/elm_calendar.c                             |  3 +-
 src/lib/elm_check.c                                |  3 +-
 src/lib/elm_clock.c                                |  3 +-
 src/lib/elm_colorselector.c                        |  7 +++--
 src/lib/elm_conform.c                              |  3 +-
 src/lib/elm_datetime.c                             |  3 +-
 src/lib/elm_dayselector.c                          |  6 ++--
 src/lib/elm_diskselector.c                         |  6 ++--
 src/lib/elm_entry.c                                |  3 +-
 src/lib/elm_flip.c                                 |  3 +-
 src/lib/elm_flipselector.c                         |  5 ++--
 src/lib/elm_frame.c                                |  3 +-
 src/lib/elm_gengrid.c                              |  8 +++--
 src/lib/elm_genlist.c                              |  8 +++--
 src/lib/elm_gesture_layer.c                        |  3 +-
 src/lib/elm_glview.c                               |  6 ++--
 src/lib/elm_grid.c                                 |  3 +-
 src/lib/elm_hover.c                                |  3 +-
 src/lib/elm_icon.c                                 |  3 +-
 src/lib/elm_image.c                                |  3 +-
 src/lib/elm_index.c                                |  5 ++--
 src/lib/elm_interface_atspi_accessible.c           |  2 +-
 src/lib/elm_interface_scrollable.c                 |  3 +-
 src/lib/elm_inwin.c                                |  3 +-
 src/lib/elm_label.c                                |  3 +-
 src/lib/elm_layout.c                               |  3 +-
 src/lib/elm_list.c                                 |  6 ++--
 src/lib/elm_map.c                                  |  5 ++--
 src/lib/elm_mapbuf.c                               |  3 +-
 src/lib/elm_menu.c                                 |  7 +++--
 src/lib/elm_notify.c                               |  3 +-
 src/lib/elm_panel.c                                |  3 +-
 src/lib/elm_panes.c                                |  3 +-
 src/lib/elm_photo.c                                |  3 +-
 src/lib/elm_photocam.c                             |  5 ++--
 src/lib/elm_plug.c                                 |  3 +-
 src/lib/elm_prefs.c                                |  3 +-
 src/lib/elm_progressbar.c                          |  3 +-
 src/lib/elm_radio.c                                |  3 +-
 src/lib/elm_route.c                                |  3 +-
 src/lib/elm_scroller.c                             |  3 +-
 src/lib/elm_segment_control.c                      |  5 ++--
 src/lib/elm_separator.c                            |  3 +-
 src/lib/elm_slider.c                               |  3 +-
 src/lib/elm_slideshow.c                            |  7 +++--
 src/lib/elm_spinner.c                              |  3 +-
 src/lib/elm_sys_notify.c                           |  4 +--
 src/lib/elm_table.c                                |  3 +-
 src/lib/elm_thumb.c                                |  3 +-
 src/lib/elm_toolbar.c                              |  6 ++--
 src/lib/elm_video.c                                |  3 +-
 src/lib/elm_web2.c                                 |  3 +-
 src/lib/elm_win.c                                  |  6 ++--
 src/lib/elm_win_standard.c                         |  3 +-
 src/tests/elm_test_atspi.c                         | 21 ++++++++-----
 83 files changed, 267 insertions(+), 197 deletions(-)

diff --git a/src/bin/test_application_server.c 
b/src/bin/test_application_server.c
index 1272ff6..13a9039 100644
--- a/src/bin/test_application_server.c
+++ b/src/bin/test_application_server.c
@@ -100,7 +100,7 @@ _create_view_cb(Elm_App_Server *app_server, const 
Eina_Value *args EINA_UNUSED,
         return NULL;
      }
 
-   view = eo_add(ELM_APP_SERVER_VIEW_CLASS, app_server, 
elm_app_server_view_id_set(eoid, NULL));
+   eo_add(&view, ELM_APP_SERVER_VIEW_CLASS, app_server, 
elm_app_server_view_id_set(view, NULL));
 
    id = elm_app_server_view_id_get(view);
    pkg = elm_app_server_package_get(app_server);
@@ -141,7 +141,7 @@ test_application_server_common(const char *pkg)
    Elm_App_Server_View *view;
    Elm_App_Server *server;
 
-   server = eo_add(ELM_APP_SERVER_CLASS, NULL, 
elm_app_server_constructor(eoid, pkg, _create_view_cb));
+   eo_add(&server, ELM_APP_SERVER_CLASS, NULL, 
elm_app_server_constructor(server, pkg, _create_view_cb));
    elm_app_server_title_set(server, pkg);
    views_iter = elm_app_server_views_get(server);
    eo_event_callback_add(server, ELM_APP_SERVER_EVENT_TERMINATE, 
_terminate_cb, NULL);
diff --git a/src/bin/test_systray.c b/src/bin/test_systray.c
index 1271242..23fc8af 100644
--- a/src/bin/test_systray.c
+++ b/src/bin/test_systray.c
@@ -82,7 +82,7 @@ test_systray(void *data EINA_UNUSED,
    elm_menu_item_add(it, it2, NULL, "item 2",  _menu_clicked, "item 2");
 
    // Status Notifier Item Handler
-   item = eo_add(ELM_SYSTRAY_CLASS, win);
+   eo_add(&item, ELM_SYSTRAY_CLASS, win);
    elm_obj_systray_icon_name_set(item, "elementary");
    elm_obj_systray_att_icon_name_set(item, "elementary");
    elm_obj_systray_menu_set(item, it);
diff --git a/src/bin/test_task_switcher.c b/src/bin/test_task_switcher.c
index 1c2b441..ec42837 100644
--- a/src/bin/test_task_switcher.c
+++ b/src/bin/test_task_switcher.c
@@ -303,7 +303,7 @@ _app_open(const char *package)
           return;
      }
 
-   app = eo_add(ELM_APP_CLIENT_CLASS, NULL, elm_app_client_constructor(eoid, 
package));
+   eo_add(&app, ELM_APP_CLIENT_CLASS, NULL, elm_app_client_constructor(app, 
package));
    eo_event_callback_add(app, ELM_APP_CLIENT_EVENT_VIEW_LIST_LOADED, 
_view_list_update_cb, table);
    eo_event_callback_add(app, ELM_APP_CLIENT_EVENT_VIEW_CREATED, 
_view_list_update_cb, table);
    eo_event_callback_add(app, ELM_APP_CLIENT_EVENT_VIEW_DELETED, 
_view_list_update_cb, table);
diff --git a/src/examples/evas3d_map_example.c 
b/src/examples/evas3d_map_example.c
index ca58452..3599826 100644
--- a/src/examples/evas3d_map_example.c
+++ b/src/examples/evas3d_map_example.c
@@ -463,7 +463,7 @@ zoom_factor_set(double new_zoom_factor)
         evas_object_resize(map, src_size, src_size);
 
         /* Apply updated texture source. */
-        texture_diffuse = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
+        eo_add(&texture_diffuse, EVAS_CANVAS3D_TEXTURE_CLASS, evas);
         evas_canvas3d_texture_source_set(texture_diffuse, map);
         evas_canvas3d_texture_source_visible_set(texture_diffuse, EINA_FALSE);
 
@@ -846,7 +846,7 @@ skybox_setup(void)
    Evas_Object      *skybox_image;
    char              buf[PATH_MAX];
 
-   skybox_mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
+   eo_add(&skybox_mesh, EVAS_CANVAS3D_MESH_CLASS, evas);
    evas_canvas3d_mesh_vertex_count_set(skybox_mesh, 24);
    evas_canvas3d_mesh_frame_add(skybox_mesh, 0);
    evas_canvas3d_mesh_frame_vertex_data_set(skybox_mesh, 0, 
EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &skybox_vertices[0]);
@@ -864,10 +864,10 @@ skybox_setup(void)
    evas_object_show(skybox_image);
 
    /* Set skybox texture material. */
-   skybox_material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
+   eo_add(&skybox_material, EVAS_CANVAS3D_MATERIAL_CLASS, evas);
    evas_canvas3d_mesh_frame_material_set(skybox_mesh, 0, skybox_material);
 
-   skybox_texture_diffuse = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
+   eo_add(&skybox_texture_diffuse, EVAS_CANVAS3D_TEXTURE_CLASS, evas);
 
    evas_canvas3d_texture_source_set(skybox_texture_diffuse, skybox_image);
    evas_canvas3d_texture_source_visible_set(skybox_texture_diffuse, 
EINA_FALSE);
@@ -881,7 +881,7 @@ skybox_setup(void)
    evas_canvas3d_material_color_set(skybox_material, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0.1, 0.1, 0.1, 1.0);
    evas_canvas3d_material_shininess_set(skybox_material, 50.0);
 
-   skybox_mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
+   eo_add(&skybox_mesh_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(skybox_mesh_node, EVAS_CANVAS3D_NODE_TYPE_MESH));
    evas_canvas3d_node_member_add(root_node, skybox_mesh_node);
    evas_canvas3d_node_mesh_add(skybox_mesh_node, skybox_mesh);
    evas_canvas3d_mesh_shade_mode_set(skybox_mesh, 
EVAS_CANVAS3D_SHADE_MODE_DIFFUSE);
@@ -922,7 +922,7 @@ static void
 camera_setup(void)
 {
    /* Add the camera. */
-   camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
+   eo_add(&camera, EVAS_CANVAS3D_CAMERA_CLASS, evas);
    evas_canvas3d_camera_projection_perspective_set(camera, 60.0, 1.0, 1.0, 
100.0);
 
    /* Set camera position. */
@@ -940,7 +940,7 @@ camera_setup(void)
    camera_right_vec.y = 0.0;
    camera_right_vec.z = 0.0;
 
-   camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
+   eo_add(&camera_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(camera_node, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
    evas_canvas3d_node_camera_set(camera_node, camera);
    evas_canvas3d_node_position_set(camera_node, camera_pos.x, camera_pos.y, 
camera_pos.z);
    evas_canvas3d_node_look_at_set(camera_node, EVAS_CANVAS3D_SPACE_PARENT, 
0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, camera_up_vec.x, camera_up_vec.y, 
camera_up_vec.z);
@@ -950,12 +950,12 @@ camera_setup(void)
 static void
 light_setup(void)
 {
-   light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
+   eo_add(&light, EVAS_CANVAS3D_LIGHT_CLASS, evas);
    evas_canvas3d_light_ambient_set(light, 0.2, 0.2, 0.2, 1.0);
    evas_canvas3d_light_diffuse_set(light, 1.0, 1.0, 1.0, 1.0);
    evas_canvas3d_light_specular_set(light, 0.2, 0.2, 0.2, 1.0);
 
-   light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
+   eo_add(&light_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(light_node, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
    evas_canvas3d_node_light_set(light_node, light);
    evas_canvas3d_node_position_set(light_node, 0.0, 0.0, MAX_CAMERA_DISTANCE);
    evas_canvas3d_node_look_at_set(light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 
0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
@@ -968,7 +968,7 @@ mesh_setup(void)
    /* Create a sphere mesh. */
    sphere_init(50);
 
-   mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
+   eo_add(&mesh, EVAS_CANVAS3D_MESH_CLASS, evas);
    evas_canvas3d_mesh_vertex_count_set(mesh, vertex_count);
    evas_canvas3d_mesh_frame_add(mesh, 0);
    evas_canvas3d_mesh_frame_vertex_data_set(mesh, 0, 
EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, sizeof(vertex), &vertices[0].position);
@@ -979,14 +979,14 @@ mesh_setup(void)
    evas_canvas3d_mesh_index_data_set(mesh, 
EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, index_count, &indices[0]);
    evas_canvas3d_mesh_vertex_assembly_set(mesh, 
EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES);
 
-   material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
+   eo_add(&material, EVAS_CANVAS3D_MATERIAL_CLASS, evas);
    evas_canvas3d_mesh_frame_material_set(mesh, 0, material);
 
-   texture_diffuse = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
+   eo_add(&texture_diffuse, EVAS_CANVAS3D_TEXTURE_CLASS, evas);
    evas_canvas3d_texture_source_set(texture_diffuse, map);
    evas_canvas3d_texture_source_visible_set(texture_diffuse, EINA_FALSE);
 
-   texture_normal = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
+   eo_add(&texture_normal, EVAS_CANVAS3D_TEXTURE_CLASS, evas);
    evas_canvas3d_texture_source_set(texture_normal, normal_map);
    evas_canvas3d_texture_source_visible_set(texture_normal, EINA_FALSE);
 
@@ -1001,7 +1001,7 @@ mesh_setup(void)
    evas_canvas3d_material_color_set(material, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0.1, 0.1, 0.1, 1.0);
    evas_canvas3d_material_shininess_set(material, 50.0);
 
-   mesh_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
+   eo_add(&mesh_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(mesh_node, EVAS_CANVAS3D_NODE_TYPE_MESH));
    evas_canvas3d_node_member_add(root_node, mesh_node);
    evas_canvas3d_node_mesh_add(mesh_node, mesh);
    evas_canvas3d_mesh_shade_mode_set(mesh, 
EVAS_CANVAS3D_SHADE_MODE_NORMAL_MAP);
@@ -1166,10 +1166,10 @@ elm_main(int argc, char **argv)
    evas_object_event_callback_add(image, EVAS_CALLBACK_MOUSE_WHEEL, 
mouse_wheel_cb, NULL);
 
    /* Add a scene object. */
-   scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
+   eo_add(&scene, EVAS_CANVAS3D_SCENE_CLASS, evas);
 
    /* Add a root node for the scene. */
-   root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
+   eo_add(&root_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(root_node, EVAS_CANVAS3D_NODE_TYPE_NODE));
 
    skybox_setup();
    texture_source_setup();
diff --git a/src/examples/evas3d_object_on_button_example.c 
b/src/examples/evas3d_object_on_button_example.c
index eb06dc0..3a5f1b4 100644
--- a/src/examples/evas3d_object_on_button_example.c
+++ b/src/examples/evas3d_object_on_button_example.c
@@ -159,12 +159,11 @@ _animate_scene(void *data)
 static void
 _camera_setup(Scene_Data *data)
 {
-   data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
+   eo_add(&data->camera, EVAS_CANVAS3D_CAMERA_CLASS, evas);
 
    evas_canvas3d_camera_projection_perspective_set(data->camera, 20.0, 1.0, 
2.0, 50.0);
 
-   data->camera_node =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
+   eo_add(&data->camera_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->camera_node, 
EVAS_CANVAS3D_NODE_TYPE_CAMERA));
    evas_canvas3d_node_camera_set(data->camera_node, data->camera);
    evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 15.0);
    evas_canvas3d_node_look_at_set(data->camera_node, 
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 
-1.0, 0.0);
@@ -174,13 +173,12 @@ _camera_setup(Scene_Data *data)
 static void
 _light_setup(Scene_Data *data)
 {
-   data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
+   eo_add(&data->light, EVAS_CANVAS3D_LIGHT_CLASS, evas);
    evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
    evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
    evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
 
-   data->light_node =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
+   eo_add(&data->light_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->light_node, 
EVAS_CANVAS3D_NODE_TYPE_LIGHT));
    evas_canvas3d_node_light_set(data->light_node, data->light);
    evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 10.0);
    evas_canvas3d_node_look_at_set(data->light_node, 
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 
1.0, 0.0);
@@ -190,8 +188,8 @@ static void
 _mesh_setup(Scene_Data *data)
 {
    /* Setup material and texture as widget button. */
-   data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
-   data->texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, evas);
+   eo_add(&data->material, EVAS_CANVAS3D_MATERIAL_CLASS, evas);
+   eo_add(&data->texture, EVAS_CANVAS3D_TEXTURE_CLASS, evas);
 
    evas_canvas3d_texture_source_set(data->texture, btn);
    evas_canvas3d_texture_source_visible_set(data->texture, EINA_FALSE);
@@ -206,7 +204,7 @@ _mesh_setup(Scene_Data *data)
    evas_canvas3d_material_shininess_set(data->material, 100.0);
 
    /* Setup mesh. */
-   data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
+   eo_add(&data->mesh, EVAS_CANVAS3D_MESH_CLASS, evas);
    evas_canvas3d_mesh_vertex_count_set(data->mesh, 24);
    evas_canvas3d_mesh_frame_add(data->mesh, 0);
    evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, 
EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &cube_vertices[ 0]);
@@ -219,8 +217,7 @@ _mesh_setup(Scene_Data *data)
    evas_canvas3d_mesh_frame_material_set(data->mesh, 0, data->material);
    evas_canvas3d_mesh_color_pick_enable_set(data->mesh, EINA_TRUE);
 
-   data->mesh_node =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
+   eo_add(&data->mesh_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->mesh_node, EVAS_CANVAS3D_NODE_TYPE_MESH));
    evas_canvas3d_node_member_add(data->root_node, data->mesh_node);
    evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh);
 }
@@ -228,12 +225,11 @@ _mesh_setup(Scene_Data *data)
 static void
 _scene_setup(Scene_Data *data)
 {
-   data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
+   eo_add(&data->scene, EVAS_CANVAS3D_SCENE_CLASS, evas);
    evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
    evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0);
 
-   data->root_node =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
+   eo_add(&data->root_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->root_node, EVAS_CANVAS3D_NODE_TYPE_NODE));
 
    _camera_setup(data);
    _light_setup(data);
diff --git a/src/examples/evas3d_scene_on_button_example.c 
b/src/examples/evas3d_scene_on_button_example.c
index c7cf82c..8a70ec8 100644
--- a/src/examples/evas3d_scene_on_button_example.c
+++ b/src/examples/evas3d_scene_on_button_example.c
@@ -120,12 +120,11 @@ _animate_scene(void *data)
 static void
 _camera_setup(Scene_Data *data)
 {
-   data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
+   eo_add(&data->camera, EVAS_CANVAS3D_CAMERA_CLASS, evas);
 
    evas_canvas3d_camera_projection_perspective_set(data->camera, 60.0, 1.0, 
2.0, 50.0);
 
-   data->camera_node =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
+   eo_add(&data->camera_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->camera_node, 
EVAS_CANVAS3D_NODE_TYPE_CAMERA));
    evas_canvas3d_node_camera_set(data->camera_node, data->camera);
    evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 10.0);
    evas_canvas3d_node_look_at_set(data->camera_node, 
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 
1.0, 0.0);
@@ -135,13 +134,12 @@ _camera_setup(Scene_Data *data)
 static void
 _light_setup(Scene_Data *data)
 {
-   data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
+   eo_add(&data->light, EVAS_CANVAS3D_LIGHT_CLASS, evas);
    evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
    evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
    evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
 
-   data->light_node =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
+   eo_add(&data->light_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->light_node, 
EVAS_CANVAS3D_NODE_TYPE_LIGHT));
    evas_canvas3d_node_light_set(data->light_node, data->light);
    evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 10.0);
    evas_canvas3d_node_look_at_set(data->light_node, 
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 
1.0, 0.0);
@@ -151,7 +149,7 @@ static void
 _mesh_setup(Scene_Data *data)
 {
    /* Setup material. */
-   data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
+   eo_add(&data->material, EVAS_CANVAS3D_MATERIAL_CLASS, evas);
 
    evas_canvas3d_material_enable_set(data->material, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
    evas_canvas3d_material_enable_set(data->material, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
@@ -162,7 +160,7 @@ _mesh_setup(Scene_Data *data)
    evas_canvas3d_material_shininess_set(data->material, 100.0);
 
    /* Setup mesh. */
-   data->mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
+   eo_add(&data->mesh, EVAS_CANVAS3D_MESH_CLASS, evas);
    evas_canvas3d_mesh_vertex_count_set(data->mesh, 24);
    evas_canvas3d_mesh_frame_add(data->mesh, 0);
    evas_canvas3d_mesh_frame_vertex_data_set(data->mesh, 0, 
EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &cube_vertices[ 0]);
@@ -174,8 +172,7 @@ _mesh_setup(Scene_Data *data)
    evas_canvas3d_mesh_shade_mode_set(data->mesh, 
EVAS_CANVAS3D_SHADE_MODE_PHONG);
    evas_canvas3d_mesh_frame_material_set(data->mesh, 0, data->material);
 
-   data->mesh_node =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
+   eo_add(&data->mesh_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->mesh_node, EVAS_CANVAS3D_NODE_TYPE_MESH));
    evas_canvas3d_node_member_add(data->root_node, data->mesh_node);
    evas_canvas3d_node_mesh_add(data->mesh_node, data->mesh);
 }
@@ -183,12 +180,11 @@ _mesh_setup(Scene_Data *data)
 static void
 _scene_setup(Scene_Data *data)
 {
-   data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
+   eo_add(&data->scene, EVAS_CANVAS3D_SCENE_CLASS, evas);
    evas_canvas3d_scene_size_set(data->scene, WIDTH - d_w, HEIGHT - d_h);
    evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0);
 
-   data->root_node =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
+   eo_add(&data->root_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->root_node, EVAS_CANVAS3D_NODE_TYPE_NODE));
 
    _camera_setup(data);
    _light_setup(data);
diff --git a/src/examples/filemvc.c b/src/examples/filemvc.c
index 6ef183e..c217dcb 100644
--- a/src/examples/filemvc.c
+++ b/src/examples/filemvc.c
@@ -71,7 +71,7 @@ _tree_selected_cb(void *data, const Eo_Event *event)
 
    efl_model_property_get(child, "path", &vpath);
    eina_value_get(vpath, &path);
-   model = eo_add(EIO_MODEL_CLASS, NULL, eio_model_path_set(eoid, path));
+   eo_add(&model, EIO_MODEL_CLASS, NULL, eio_model_path_set(model, path));
    efl_model_load(model);
    elm_view_list_model_set(priv->fileview, model);
    return EINA_TRUE;
@@ -137,13 +137,13 @@ elm_main(int argc, char **argv)
    else dirname = EFL_MODEL_TEST_FILENAME_PATH;
 
    //treemodel
-   priv.treemodel = eo_add(EIO_MODEL_CLASS, NULL, eio_model_path_set(eoid, 
dirname));
+   eo_add(&priv.treemodel, EIO_MODEL_CLASS, NULL, 
eio_model_path_set(priv.treemodel, dirname));
    eio_model_children_filter_set(priv.treemodel, _filter_cb, NULL);
    efl_model_load(priv.treemodel);
 
    //treeview
    genlist = elm_genlist_add(win);
-   priv.treeview = eo_add(ELM_VIEW_LIST_CLASS, NULL, 
elm_view_list_genlist_set(eoid, genlist, ELM_GENLIST_ITEM_TREE, NULL));
+   eo_add(&priv.treeview, ELM_VIEW_LIST_CLASS, NULL, 
elm_view_list_genlist_set(priv.treeview, genlist, ELM_GENLIST_ITEM_TREE, NULL));
    elm_view_list_property_connect(priv.treeview, "filename", "elm.text");
    elm_view_list_property_connect(priv.treeview, "icon", "elm.swallow.icon");
    elm_view_list_model_set(priv.treeview, priv.treemodel);
@@ -157,7 +157,7 @@ elm_main(int argc, char **argv)
    eo_event_callback_add(priv.treeview, ELM_VIEW_LIST_EVENT_MODEL_SELECTED, 
_tree_selected_cb, &priv);
    //listview
    genlist = elm_genlist_add(win);
-   priv.fileview = eo_add(ELM_VIEW_LIST_CLASS, NULL, 
elm_view_list_genlist_set(eoid, genlist, ELM_GENLIST_ITEM_NONE, 
"double_label"));
+   eo_add(&priv.fileview, ELM_VIEW_LIST_CLASS, NULL, 
elm_view_list_genlist_set(priv.fileview, genlist, ELM_GENLIST_ITEM_NONE, 
"double_label"));
    elm_view_list_property_connect(priv.fileview, "filename", "elm.text");
    elm_view_list_property_connect(priv.fileview, "size", "elm.text.sub");
 
@@ -171,7 +171,7 @@ elm_main(int argc, char **argv)
    bxr = elm_box_add(win);
    _widget_init(bxr);
    elm_object_part_content_set(vpanes, "right", bxr);
-   priv.formview = eo_add(ELM_VIEW_FORM_CLASS, NULL);
+   eo_add(&priv.formview, ELM_VIEW_FORM_CLASS, NULL);
 
    /*Label widget */
    elm_view_form_widget_add(priv.formview, "filename", _label_init(win, bxr, 
"File Name"));
diff --git a/src/examples/fileviewlist.c b/src/examples/fileviewlist.c
index d91efdb..1c420c3 100644
--- a/src/examples/fileviewlist.c
+++ b/src/examples/fileviewlist.c
@@ -55,8 +55,8 @@ elm_main(int argc, char **argv)
    evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
    evas_object_show(genlist);
 
-   priv.filemodel = eo_add(EIO_MODEL_CLASS, NULL, eio_model_path_set(eoid, 
dirname));
-   priv.fileview = eo_add(ELM_VIEW_LIST_CLASS, NULL, 
elm_view_list_genlist_set(eoid, genlist, ELM_GENLIST_ITEM_TREE, 
"double_label"));
+   eo_add(&priv.filemodel, EIO_MODEL_CLASS, NULL, 
eio_model_path_set(priv.filemodel, dirname));
+   eo_add(&priv.fileview, ELM_VIEW_LIST_CLASS, NULL, 
elm_view_list_genlist_set(priv.fileview, genlist, ELM_GENLIST_ITEM_TREE, 
"double_label"));
    elm_view_list_model_set(priv.fileview, priv.filemodel);
    efl_model_load(priv.filemodel);
    evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _cleanup_cb, &priv);
diff --git a/src/examples/performance/graphical.c 
b/src/examples/performance/graphical.c
index 7884591..deae035 100644
--- a/src/examples/performance/graphical.c
+++ b/src/examples/performance/graphical.c
@@ -248,7 +248,7 @@ void _init_bounding()
         20, 21, 22, 22, 21, 23
      };
 
-   globalGraphical.material_box = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, 
globalGraphical.evas);
+   eo_add(&globalGraphical.material_box, EVAS_CANVAS3D_MATERIAL_CLASS, 
globalGraphical.evas);
 
    evas_canvas3d_material_enable_set(globalGraphical.material_box, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
    evas_canvas3d_material_enable_set(globalGraphical.material_box, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
@@ -259,7 +259,7 @@ void _init_bounding()
    evas_canvas3d_material_shininess_set(globalGraphical.material_box, 100.0);
 
    /* Setup mesh. */
-   globalGraphical.mesh_box = eo_add(EVAS_CANVAS3D_MESH_CLASS, 
globalGraphical.evas);
+   eo_add(&globalGraphical.mesh_box, EVAS_CANVAS3D_MESH_CLASS, 
globalGraphical.evas);
    evas_canvas3d_mesh_vertex_count_set(globalGraphical.mesh_box, 24);
    evas_canvas3d_mesh_frame_add(globalGraphical.mesh_box, 0);
    evas_canvas3d_mesh_frame_vertex_data_copy_set(globalGraphical.mesh_box, 0, 
EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 12 * sizeof(float), &cube_vertices[ 0]);
@@ -271,8 +271,7 @@ void _init_bounding()
    evas_canvas3d_mesh_shade_mode_set(globalGraphical.mesh_box, 
EVAS_CANVAS3D_SHADE_MODE_PHONG);
    evas_canvas3d_mesh_frame_material_set(globalGraphical.mesh_box, 0, 
globalGraphical.material_box);
 
-   globalGraphical.mesh_nodebox =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH), 
evas_canvas3d_node_position_set(eoid, 0, -30.0, 0.0));
+   eo_add(&globalGraphical.mesh_nodebox, EVAS_CANVAS3D_NODE_CLASS, 
globalGraphical.evas, 
evas_canvas3d_node_constructor(globalGraphical.mesh_nodebox, 
EVAS_CANVAS3D_NODE_TYPE_MESH), 
evas_canvas3d_node_position_set(globalGraphical.mesh_nodebox, 0, -30.0, 0.0));
    evas_canvas3d_node_member_add(globalGraphical.root_node, 
globalGraphical.mesh_nodebox);
    evas_canvas3d_node_mesh_add(globalGraphical.mesh_nodebox, 
globalGraphical.mesh_box);
 }
@@ -307,7 +306,7 @@ _change_scene_setup()
    _sphere_init(globalGraphical.precision);
    for (i = 0; i < quantity; i++)
      {
-        globalGraphical.mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, 
globalGraphical.evas);
+        eo_add(&globalGraphical.mesh, EVAS_CANVAS3D_MESH_CLASS, 
globalGraphical.evas);
         if (!globalGraphical.model_path)
           {
               evas_canvas3d_mesh_vertex_count_set(globalGraphical.mesh, 
globalGraphical.vertex_count);
@@ -358,8 +357,7 @@ _change_scene_setup()
    _sphere_count(globalGraphical.count, 0.2);
    for (i = 0; i < quantity; i++)
      {
-        globalGraphical.mesh_node =
-           eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH), 
evas_canvas3d_node_position_set(eoid, globalGraphical.places[i].position.x * 
20, globalGraphical.places[i].position.y * 20, 
globalGraphical.places[i].position.z * 20));
+        eo_add(&globalGraphical.mesh_node, EVAS_CANVAS3D_NODE_CLASS, 
globalGraphical.evas, evas_canvas3d_node_constructor(globalGraphical.mesh_node, 
EVAS_CANVAS3D_NODE_TYPE_MESH), 
evas_canvas3d_node_position_set(globalGraphical.mesh_node, 
globalGraphical.places[i].position.x * 20, globalGraphical.places[i].position.y 
* 20, globalGraphical.places[i].position.z * 20));
         if (globalGraphical.model_path)
           evas_canvas3d_node_scale_set(globalGraphical.mesh_node, 0.2, 0.2, 
0.2);
         evas_canvas3d_node_member_add(globalGraphical.root_node, 
globalGraphical.mesh_node);
@@ -394,39 +392,37 @@ _init_scene(Evas_Object *img)
    /*Allocate memory - eina_mempool*/
 
    /* Add a scene object .*/
-   globalGraphical.scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, 
globalGraphical.evas);
+   eo_add(&globalGraphical.scene, EVAS_CANVAS3D_SCENE_CLASS, 
globalGraphical.evas);
 
    /* Add the root node for the scene. */
-   globalGraphical.root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, 
globalGraphical.evas, evas_canvas3d_node_constructor(eoid, 
EVAS_CANVAS3D_NODE_TYPE_NODE));
+   eo_add(&globalGraphical.root_node, EVAS_CANVAS3D_NODE_CLASS, 
globalGraphical.evas, evas_canvas3d_node_constructor(globalGraphical.root_node, 
EVAS_CANVAS3D_NODE_TYPE_NODE));
 
    /* Add the camera. */
-   globalGraphical.camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, 
globalGraphical.evas);
+   eo_add(&globalGraphical.camera, EVAS_CANVAS3D_CAMERA_CLASS, 
globalGraphical.evas);
    evas_canvas3d_camera_projection_perspective_set(globalGraphical.camera, 
globalGraphical.angle, 1.0, 2.0, 1000.0);
 
-   globalGraphical.camera_node =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
+   eo_add(&globalGraphical.camera_node, EVAS_CANVAS3D_NODE_CLASS, 
globalGraphical.evas, 
evas_canvas3d_node_constructor(globalGraphical.camera_node, 
EVAS_CANVAS3D_NODE_TYPE_CAMERA));
    evas_canvas3d_node_camera_set(globalGraphical.camera_node, 
globalGraphical.camera);
    evas_canvas3d_node_position_set(globalGraphical.camera_node, 0.0, 0.0, 
25.0);
    evas_canvas3d_node_look_at_set(globalGraphical.camera_node, 
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 
1.0, 0.0);
    evas_canvas3d_node_member_add(globalGraphical.root_node, 
globalGraphical.camera_node);
 
-   globalGraphical.light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, 
globalGraphical.evas);
+   eo_add(&globalGraphical.light, EVAS_CANVAS3D_LIGHT_CLASS, 
globalGraphical.evas);
    evas_canvas3d_light_ambient_set(globalGraphical.light, 1.0, 1.0, 1.0, 1.0);
    evas_canvas3d_light_diffuse_set(globalGraphical.light, 1.0, 1.0, 1.0, 1.0);
    evas_canvas3d_light_specular_set(globalGraphical.light, 1.0, 1.0, 1.0, 1.0);
    evas_canvas3d_light_projection_perspective_set(globalGraphical.light, 
globalGraphical.angle / 5, 1.0, 1.0, 1000.0);
    evas_canvas3d_light_spot_cutoff_set(globalGraphical.light, 
globalGraphical.angle / 15);
 
-   globalGraphical.light_node =
-      eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
+   eo_add(&globalGraphical.light_node, EVAS_CANVAS3D_NODE_CLASS, 
globalGraphical.evas, 
evas_canvas3d_node_constructor(globalGraphical.light_node, 
EVAS_CANVAS3D_NODE_TYPE_LIGHT));
    evas_canvas3d_node_light_set(globalGraphical.light_node, 
globalGraphical.light);
    evas_canvas3d_node_position_set(globalGraphical.light_node, 0.0, 100.0, 
1.0);
    evas_canvas3d_node_look_at_set(globalGraphical.light_node, 
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 
1.0, 0.0);
    evas_canvas3d_node_member_add(globalGraphical.root_node, 
globalGraphical.light_node);
 
 
-   globalGraphical.material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, 
globalGraphical.evas);
-   globalGraphical.texture = eo_add(EVAS_CANVAS3D_TEXTURE_CLASS, 
globalGraphical.evas);
+   eo_add(&globalGraphical.material, EVAS_CANVAS3D_MATERIAL_CLASS, 
globalGraphical.evas);
+   eo_add(&globalGraphical.texture, EVAS_CANVAS3D_TEXTURE_CLASS, 
globalGraphical.evas);
    evas_canvas3d_texture_file_set(globalGraphical.texture, 
"target_texture.png", NULL);
    evas_canvas3d_texture_filter_set(globalGraphical.texture, 
EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR, EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR);
    evas_canvas3d_texture_wrap_set(globalGraphical.texture, 
EVAS_CANVAS3D_WRAP_MODE_REPEAT, EVAS_CANVAS3D_WRAP_MODE_REPEAT);
@@ -444,7 +440,7 @@ _init_scene(Evas_Object *img)
 
    for (i = 0; i < quantity; i++)
      {
-        globalGraphical.mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, 
globalGraphical.evas);
+        eo_add(&globalGraphical.mesh, EVAS_CANVAS3D_MESH_CLASS, 
globalGraphical.evas);
         if (!globalGraphical.model_path)
           {
               evas_canvas3d_mesh_vertex_count_set(globalGraphical.mesh, 
globalGraphical.vertex_count);
@@ -473,8 +469,7 @@ _init_scene(Evas_Object *img)
 
    for (i = 0; i < quantity; i++)
      {
-        globalGraphical.mesh_node =
-           eo_add(EVAS_CANVAS3D_NODE_CLASS, globalGraphical.evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH), 
evas_canvas3d_node_position_set(eoid, globalGraphical.places[i].position.x * 
20, globalGraphical.places[i].position.y * 20, 
globalGraphical.places[i].position.z * 20));
+        eo_add(&globalGraphical.mesh_node, EVAS_CANVAS3D_NODE_CLASS, 
globalGraphical.evas, evas_canvas3d_node_constructor(globalGraphical.mesh_node, 
EVAS_CANVAS3D_NODE_TYPE_MESH), 
evas_canvas3d_node_position_set(globalGraphical.mesh_node, 
globalGraphical.places[i].position.x * 20, globalGraphical.places[i].position.y 
* 20, globalGraphical.places[i].position.z * 20));
         if (globalGraphical.model_path)
           evas_canvas3d_node_scale_set(globalGraphical.mesh_node, 0.2, 0.2, 
0.2);
         evas_canvas3d_node_member_add(globalGraphical.root_node, 
globalGraphical.mesh_node);
diff --git a/src/examples/sphere_hunter/evas_3d_sphere_hunter.c 
b/src/examples/sphere_hunter/evas_3d_sphere_hunter.c
index 6de714d..9d672fc 100644
--- a/src/examples/sphere_hunter/evas_3d_sphere_hunter.c
+++ b/src/examples/sphere_hunter/evas_3d_sphere_hunter.c
@@ -435,10 +435,10 @@ _quit_game(void *data EINA_UNUSED, Evas_Object *btn 
EINA_UNUSED, void *ev EINA_U
 static void
 _camera_setup(Scene_Data *data)
 {
-   data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
+   eo_add(&data->camera, EVAS_CANVAS3D_CAMERA_CLASS, evas);
    evas_canvas3d_camera_projection_perspective_set(data->camera, 50.0, 1.0, 
1.0, 1000.0);
 
-   data->camera_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
+   eo_add(&data->camera_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->camera_node, 
EVAS_CANVAS3D_NODE_TYPE_CAMERA));
    evas_canvas3d_node_camera_set(data->camera_node, data->camera);
    evas_canvas3d_node_position_set(data->camera_node, 0.0, 40, 70);
    evas_canvas3d_node_look_at_set(data->camera_node, 
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 
1.0, 0.0);
@@ -459,14 +459,14 @@ _animate_camera(void *data)
 static void
 _light_setup(Scene_Data *data)
 {
-   data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
+   eo_add(&data->light, EVAS_CANVAS3D_LIGHT_CLASS, evas);
 
    evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
    evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
    evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
    evas_canvas3d_light_projection_perspective_set(data->light, 100.0, 1.0, 
1.0, 1000.0);
 
-   data->light_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
+   eo_add(&data->light_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->light_node, 
EVAS_CANVAS3D_NODE_TYPE_LIGHT));
    evas_canvas3d_node_light_set(data->light_node, data->light);
    evas_canvas3d_node_position_set(data->light_node, 0.1, 25.0, 0.1);
    evas_canvas3d_node_look_at_set(data->light_node, 
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 
1.0, 0.0);
@@ -477,8 +477,8 @@ _light_setup(Scene_Data *data)
 static void
 _mesh_cube_setup(Scene_Data *data)
 {
-   data->mesh_cube = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
-   data->material_cube = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
+   eo_add(&data->mesh_cube, EVAS_CANVAS3D_MESH_CLASS, evas);
+   eo_add(&data->material_cube, EVAS_CANVAS3D_MATERIAL_CLASS, evas);
    evas_canvas3d_material_enable_set(data->material_cube, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
    evas_canvas3d_material_enable_set(data->material_cube, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
    evas_canvas3d_material_enable_set(data->material_cube, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
@@ -506,9 +506,9 @@ _create_bondar(Scene_Data *data, Evas_Real scale_x, 
Evas_Real scale_y, Evas_Real
    Eo *node = NULL;
    Eo *material = NULL;
 
-   mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
-   material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
-   node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
+   eo_add(&mesh, EVAS_CANVAS3D_MESH_CLASS, evas);
+   eo_add(&material, EVAS_CANVAS3D_MATERIAL_CLASS, evas);
+   eo_add(&node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(node, EVAS_CANVAS3D_NODE_TYPE_MESH));
 
    evas_canvas3d_material_enable_set(material, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
    evas_canvas3d_material_enable_set(material, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
@@ -556,7 +556,7 @@ _create_cubes(Scene_Data *data, Evas_Real r, int count)
         Eo *node = NULL;
 
         alpha = d_alpha * i * M_PI / 180;
-        node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
+        eo_add(&node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(node, EVAS_CANVAS3D_NODE_TYPE_MESH));
 
         evas_canvas3d_node_mesh_add(node, data->mesh_cube);
         evas_canvas3d_node_position_set(node, r * sin(alpha), 2.0 + (r / 4 * 
sin(alpha)), r * cos(alpha));
@@ -573,9 +573,9 @@ _mesh_ball_setup(Scene_Data *data)
 {
    _sphere_init(100);
 
-   data->mesh_ball = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
-   data->material_ball = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
-   data->mesh_node_ball = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_MESH));
+   eo_add(&data->mesh_ball, EVAS_CANVAS3D_MESH_CLASS, evas);
+   eo_add(&data->material_ball, EVAS_CANVAS3D_MATERIAL_CLASS, evas);
+   eo_add(&data->mesh_node_ball, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->mesh_node_ball, 
EVAS_CANVAS3D_NODE_TYPE_MESH));
 
    /* Setup material for ball. */
    evas_canvas3d_material_enable_set(data->material_ball, 
EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
@@ -609,10 +609,10 @@ _scene_setup(Scene_Data *data, Evas_Real r, int count)
 {
    Eina_List *l = NULL;
    Eo *item = NULL;
-   data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
+   eo_add(&data->scene, EVAS_CANVAS3D_SCENE_CLASS, evas);
 
    /* Add the root node for the scene. */
-   data->root_node = eo_add(EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(eoid, EVAS_CANVAS3D_NODE_TYPE_NODE));
+   eo_add(&data->root_node, EVAS_CANVAS3D_NODE_CLASS, evas, 
evas_canvas3d_node_constructor(data->root_node, EVAS_CANVAS3D_NODE_TYPE_NODE));
 
    evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
    evas_canvas3d_scene_shadows_enable_set(data->scene, EINA_TRUE);
diff --git a/src/lib/elc_ctxpopup.c b/src/lib/elc_ctxpopup.c
index 68f65d4..db8804d 100644
--- a/src/lib/elc_ctxpopup.c
+++ b/src/lib/elc_ctxpopup.c
@@ -1176,7 +1176,8 @@ EAPI Evas_Object *
 elm_ctxpopup_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
 
    /* access: parent could be any object such as elm_list which does
       not know elc_ctxpopup as its child object in the focus_next(); */
@@ -1280,7 +1281,7 @@ _elm_ctxpopup_item_append(Eo *obj, Elm_Ctxpopup_Data *sd, 
const char *label, Eva
 {
    Eo *eo_item;
 
-   eo_item = eo_add(ELM_CTXPOPUP_ITEM_CLASS, obj, 
elm_obj_ctxpopup_item_init(eoid, func, data));
+   eo_add(&eo_item, ELM_CTXPOPUP_ITEM_CLASS, obj, 
elm_obj_ctxpopup_item_init(eo_item, func, data));
    if (!eo_item) return NULL;
 
    ELM_CTXPOPUP_ITEM_DATA_GET(eo_item, item);
@@ -1374,7 +1375,7 @@ _elm_ctxpopup_item_prepend(Eo *obj, Elm_Ctxpopup_Data 
*sd, const char *label, Ev
 {
    Eo *eo_item;
 
-   eo_item = eo_add(ELM_CTXPOPUP_ITEM_CLASS, obj, 
elm_obj_ctxpopup_item_init(eoid, func, data));
+   eo_add(&eo_item, ELM_CTXPOPUP_ITEM_CLASS, obj, 
elm_obj_ctxpopup_item_init(eo_item, func, data));
    if (!eo_item) return NULL;
 
    ELM_CTXPOPUP_ITEM_DATA_GET(eo_item, item);
diff --git a/src/lib/elc_fileselector.c b/src/lib/elc_fileselector.c
index 36680ec..2452a11 100644
--- a/src/lib/elc_fileselector.c
+++ b/src/lib/elc_fileselector.c
@@ -1624,7 +1624,8 @@ EAPI Evas_Object *
 elm_fileselector_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elc_fileselector_button.c 
b/src/lib/elc_fileselector_button.c
index 412aefd..403119e 100644
--- a/src/lib/elc_fileselector_button.c
+++ b/src/lib/elc_fileselector_button.c
@@ -215,7 +215,8 @@ EAPI Evas_Object *
 elm_fileselector_button_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elc_fileselector_entry.c b/src/lib/elc_fileselector_entry.c
index 85bb72e..e2fd6b2 100644
--- a/src/lib/elc_fileselector_entry.c
+++ b/src/lib/elc_fileselector_entry.c
@@ -342,7 +342,8 @@ EAPI Evas_Object *
 elm_fileselector_entry_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elc_hoversel.c b/src/lib/elc_hoversel.c
index e14e0e6..8a13df1 100644
--- a/src/lib/elc_hoversel.c
+++ b/src/lib/elc_hoversel.c
@@ -611,7 +611,8 @@ EAPI Evas_Object *
 elm_hoversel_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
@@ -748,7 +749,8 @@ _elm_hoversel_item_add(Eo *obj, Elm_Hoversel_Data *sd, 
const char *label, const
    Evas_Object *bt, *ic;
    char buf[4096];
 
-   Eo *eo_item = eo_add(ELM_HOVERSEL_ITEM_CLASS, obj);
+   Eo *eo_item = NULL;
+   eo_add(&eo_item, ELM_HOVERSEL_ITEM_CLASS, obj);
    if (!eo_item) return NULL;
 
    ELM_HOVERSEL_ITEM_DATA_GET(eo_item, item);
diff --git a/src/lib/elc_multibuttonentry.c b/src/lib/elc_multibuttonentry.c
index a154571..d05ca76 100644
--- a/src/lib/elc_multibuttonentry.c
+++ b/src/lib/elc_multibuttonentry.c
@@ -746,7 +746,7 @@ _item_new(Elm_Multibuttonentry_Data *sd,
           return NULL;
      }
 
-   eo_item = eo_add(ELM_MULTIBUTTONENTRY_ITEM_CLASS, obj);
+   eo_add(&eo_item, ELM_MULTIBUTTONENTRY_ITEM_CLASS, obj);
    if (!eo_item)
      return NULL;
    WIDGET_ITEM_DATA_SET(eo_item, data);
@@ -1706,7 +1706,8 @@ EAPI Evas_Object *
 elm_multibuttonentry_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c
index 7179164..29e92a3 100644
--- a/src/lib/elc_naviframe.c
+++ b/src/lib/elc_naviframe.c
@@ -1209,7 +1209,7 @@ _item_new(Evas_Object *obj,
 
    ELM_NAVIFRAME_DATA_GET(obj, sd);
 
-   eo_item = eo_add(ELM_NAVIFRAME_ITEM_CLASS, obj);
+   eo_add(&eo_item, ELM_NAVIFRAME_ITEM_CLASS, obj);
 
    if (!eo_item)
      {
@@ -1583,7 +1583,8 @@ EAPI Evas_Object *
 elm_naviframe_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elc_player.c b/src/lib/elc_player.c
index 7c1e2a7..e19a8e9 100644
--- a/src/lib/elc_player.c
+++ b/src/lib/elc_player.c
@@ -714,7 +714,8 @@ EAPI Evas_Object *
 elm_player_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elc_popup.c b/src/lib/elc_popup.c
index c69e16d..89eeaa6 100644
--- a/src/lib/elc_popup.c
+++ b/src/lib/elc_popup.c
@@ -1574,7 +1574,8 @@ EAPI Evas_Object *
 elm_popup_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
 
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
    wd->highlight_root = EINA_TRUE;
@@ -1752,7 +1753,7 @@ _elm_popup_item_append(Eo *obj, Elm_Popup_Data *sd, const 
char *label, Evas_Obje
    Evas_Object *prev_content;
    Eo *eo_it;
 
-   eo_it = eo_add(ELM_POPUP_ITEM_CLASS, obj);
+   eo_add(&eo_it, ELM_POPUP_ITEM_CLASS, obj);
    if (!eo_it) return NULL;
    ELM_POPUP_ITEM_DATA_GET(eo_it, it);
    if (sd->content || sd->text_content_obj)
diff --git a/src/lib/elm_access.c b/src/lib/elm_access.c
index 6e9a829..25c665f 100644
--- a/src/lib/elm_access.c
+++ b/src/lib/elm_access.c
@@ -1235,7 +1235,8 @@ static Evas_Object *
 _elm_access_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_actionslider.c b/src/lib/elm_actionslider.c
index 7e609e6..47a7167 100644
--- a/src/lib/elm_actionslider.c
+++ b/src/lib/elm_actionslider.c
@@ -531,7 +531,8 @@ EAPI Evas_Object *
 elm_actionslider_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_app_client.c b/src/lib/elm_app_client.c
index ba6513d..c1f007e 100644
--- a/src/lib/elm_app_client.c
+++ b/src/lib/elm_app_client.c
@@ -37,7 +37,7 @@ _sub_path_process(Elm_App_Client *eo, Eldbus_Message_Iter 
*obj_iter, Elm_App_Cli
         if (view)
           continue;
 
-        view = eo_add(ELM_APP_CLIENT_VIEW_CLASS, eo, 
elm_app_client_view_path_set(eoid, obj_path));
+        eo_add(&view, ELM_APP_CLIENT_VIEW_CLASS, eo, 
elm_app_client_view_path_set(view, obj_path));
         eina_hash_add(data->views, obj_path, view);
         if (!loading_list)
           eo_event_callback_call(eo, ELM_APP_CLIENT_EVENT_VIEW_CREATED, view);
@@ -211,7 +211,7 @@ _create_view_cb(void *data, const Eldbus_Message *msg, 
Eldbus_Pending *pending)
    view = eina_hash_find(cdata->views, view_path);
    if (!view)
      {
-        view = eo_add(ELM_APP_CLIENT_VIEW_CLASS, eo, 
elm_app_client_view_path_set(eoid, view_path));
+        eo_add(&view, ELM_APP_CLIENT_VIEW_CLASS, eo, 
elm_app_client_view_path_set(view, view_path));
         eina_hash_add(cdata->views, view_path, view);
         eo_event_callback_call(eo, ELM_APP_CLIENT_EVENT_VIEW_CREATED, view);
      }
diff --git a/src/lib/elm_app_server.c b/src/lib/elm_app_server.c
index a7483f9..0802b65 100644
--- a/src/lib/elm_app_server.c
+++ b/src/lib/elm_app_server.c
@@ -255,7 +255,7 @@ _elm_app_server_constructor(Eo *obj, Elm_App_Server_Data 
*data, const char *pkg,
              new_events = 
elm_app_server_view_props_new_events_get(view_eet_props);
              progress = elm_app_server_view_props_progress_get(view_eet_props);
 
-             view = eo_add(ELM_APP_SERVER_VIEW_CLASS, obj, 
elm_app_server_view_id_set(eoid, view_id));
+             eo_add(&view, ELM_APP_SERVER_VIEW_CLASS, obj, 
elm_app_server_view_id_set(view, view_id));
              if (!view)
                continue;
 
diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 3709b9c..e56b98d 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -4443,7 +4443,7 @@ _elm_atspi_bridge_init(void)
 {
    if (!_init_count)
      {
-        _instance = eo_add(ELM_ATSPI_BRIDGE_CLASS, NULL);
+        eo_add(&_instance, ELM_ATSPI_BRIDGE_CLASS, NULL);
         _init_count = 1;
      }
 }
diff --git a/src/lib/elm_bg.c b/src/lib/elm_bg.c
index 1c709b2..fc503c8 100644
--- a/src/lib/elm_bg.c
+++ b/src/lib/elm_bg.c
@@ -113,7 +113,8 @@ EAPI Evas_Object *
 elm_bg_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_box.c b/src/lib/elm_box.c
index f3fbd6f..133132a 100644
--- a/src/lib/elm_box.c
+++ b/src/lib/elm_box.c
@@ -436,7 +436,8 @@ EAPI Evas_Object *
 elm_box_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_bubble.c b/src/lib/elm_bubble.c
index ba83049..5c3a644 100644
--- a/src/lib/elm_bubble.c
+++ b/src/lib/elm_bubble.c
@@ -219,7 +219,8 @@ EAPI Evas_Object *
 elm_bubble_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_button.c b/src/lib/elm_button.c
index 9de31b7..5fc7e75 100644
--- a/src/lib/elm_button.c
+++ b/src/lib/elm_button.c
@@ -324,7 +324,8 @@ EAPI Evas_Object *
 elm_button_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_calendar.c b/src/lib/elm_calendar.c
index af20e6f..bd5e119 100644
--- a/src/lib/elm_calendar.c
+++ b/src/lib/elm_calendar.c
@@ -1583,7 +1583,8 @@ EAPI Evas_Object *
 elm_calendar_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_check.c b/src/lib/elm_check.c
index 024e3da..a28be74 100644
--- a/src/lib/elm_check.c
+++ b/src/lib/elm_check.c
@@ -371,7 +371,8 @@ EAPI Evas_Object *
 elm_check_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_clock.c b/src/lib/elm_clock.c
index a5f8a0b..e832cd9 100644
--- a/src/lib/elm_clock.c
+++ b/src/lib/elm_clock.c
@@ -790,7 +790,8 @@ EAPI Evas_Object *
 elm_clock_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_colorselector.c b/src/lib/elm_colorselector.c
index ca2ae72..1fbabad 100644
--- a/src/lib/elm_colorselector.c
+++ b/src/lib/elm_colorselector.c
@@ -1781,7 +1781,7 @@ _palette_colors_load(Evas_Object *obj)
 
    EINA_LIST_FOREACH(color_list, elist, color)
      {
-        eo_item = eo_add(ELM_COLOR_ITEM_CLASS, obj);
+        eo_add(&eo_item, ELM_COLOR_ITEM_CLASS, obj);
         if (!eo_item) return;
 
         ELM_COLOR_ITEM_DATA_GET(eo_item, item);
@@ -2217,7 +2217,8 @@ EAPI Evas_Object *
 elm_colorselector_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
@@ -2396,7 +2397,7 @@ _elm_colorselector_palette_color_add(Eo *obj, 
Elm_Colorselector_Data *sd, int r,
         _items_del(sd);
         sd->config_load = EINA_FALSE;
      }
-   eo_item = eo_add(ELM_COLOR_ITEM_CLASS, obj);
+   eo_add(&eo_item, ELM_COLOR_ITEM_CLASS, obj);
    if (!eo_item) return NULL;
 
    ELM_COLOR_ITEM_DATA_GET(eo_item, item);
diff --git a/src/lib/elm_conform.c b/src/lib/elm_conform.c
index 7021c5c..35b335e 100644
--- a/src/lib/elm_conform.c
+++ b/src/lib/elm_conform.c
@@ -982,7 +982,8 @@ EAPI Evas_Object *
 elm_conformant_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_datetime.c b/src/lib/elm_datetime.c
index 88fe79d..26edc0c 100644
--- a/src/lib/elm_datetime.c
+++ b/src/lib/elm_datetime.c
@@ -884,7 +884,8 @@ EAPI Evas_Object *
 elm_datetime_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_dayselector.c b/src/lib/elm_dayselector.c
index 3f1b209..999f333 100644
--- a/src/lib/elm_dayselector.c
+++ b/src/lib/elm_dayselector.c
@@ -249,7 +249,8 @@ _elm_dayselector_elm_container_content_set(Eo *obj, 
Elm_Dayselector_Data *sd, co
      }
    else
      {
-        Eo *eo_it = eo_add(ELM_DAYSELECTOR_ITEM_CLASS, obj);
+        Eo *eo_it = NULL;
+        eo_add(&eo_it, ELM_DAYSELECTOR_ITEM_CLASS, obj);
         it = eo_data_scope_get(eo_it, ELM_DAYSELECTOR_ITEM_CLASS);
         it->day = day;
 
@@ -452,7 +453,8 @@ EAPI Evas_Object *
 elm_dayselector_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_diskselector.c b/src/lib/elm_diskselector.c
index 249a26e..8ce0672 100644
--- a/src/lib/elm_diskselector.c
+++ b/src/lib/elm_diskselector.c
@@ -665,7 +665,8 @@ _item_new(Evas_Object *obj,
           Evas_Smart_Cb func,
           const void *data)
 {
-   Eo *eo_it = eo_add(ELM_DISKSELECTOR_ITEM_CLASS, obj);
+   Eo *eo_it = NULL;
+   eo_add(&eo_it, ELM_DISKSELECTOR_ITEM_CLASS, obj);
    if (!eo_it) return NULL;
    ELM_DISKSELECTOR_ITEM_DATA_GET(eo_it, it);
 
@@ -1455,7 +1456,8 @@ EAPI Evas_Object *
 elm_diskselector_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c
index 75042ab..9e6613f 100644
--- a/src/lib/elm_entry.c
+++ b/src/lib/elm_entry.c
@@ -3872,7 +3872,8 @@ EAPI Evas_Object *
 elm_entry_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_flip.c b/src/lib/elm_flip.c
index 8945690..cb3ac3d 100644
--- a/src/lib/elm_flip.c
+++ b/src/lib/elm_flip.c
@@ -1856,7 +1856,8 @@ EAPI Evas_Object *
 elm_flip_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_flipselector.c b/src/lib/elm_flipselector.c
index 2e789e7..58fabe8 100644
--- a/src/lib/elm_flipselector.c
+++ b/src/lib/elm_flipselector.c
@@ -313,7 +313,7 @@ _item_new(Evas_Object *obj,
 
    ELM_FLIPSELECTOR_DATA_GET(obj, sd);
 
-   eo_item = eo_add(ELM_FLIPSELECTOR_ITEM_CLASS, obj);
+   eo_add(&eo_item, ELM_FLIPSELECTOR_ITEM_CLASS, obj);
    if (!eo_item) return NULL;
 
    ELM_FLIPSELECTOR_ITEM_DATA_GET(eo_item, it);
@@ -562,7 +562,8 @@ EAPI Evas_Object *
 elm_flipselector_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_frame.c b/src/lib/elm_frame.c
index 8b72263..dbe7081 100644
--- a/src/lib/elm_frame.c
+++ b/src/lib/elm_frame.c
@@ -195,7 +195,8 @@ EAPI Evas_Object *
 elm_frame_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index 93d2644..7bef1af 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -4164,7 +4164,8 @@ _elm_gengrid_item_new(Elm_Gengrid_Data *sd,
 {
    if (!itc) return NULL;
 
-   Eo *eo_it = eo_add(ELM_GENGRID_ITEM_CLASS, sd->obj);
+   Eo *eo_it = NULL;
+   eo_add(&eo_it, ELM_GENGRID_ITEM_CLASS, sd->obj);
    if (!eo_it) return NULL;
    ELM_GENGRID_ITEM_DATA_GET(eo_it, it);
 
@@ -4254,7 +4255,7 @@ _elm_gengrid_evas_object_smart_add(Eo *obj, 
Elm_Gengrid_Data *priv)
    priv->highlight = EINA_TRUE;
    priv->item_cache_max = CACHE_MAX;
 
-   priv->pan_obj = eo_add(MY_PAN_CLASS, evas_object_evas_get(obj));
+   eo_add(&priv->pan_obj, MY_PAN_CLASS, evas_object_evas_get(obj));
    pan_data = eo_data_scope_get(priv->pan_obj, MY_PAN_CLASS);
    eo_data_ref(obj, NULL);
    pan_data->wobj = obj;
@@ -4331,7 +4332,8 @@ EAPI Evas_Object *
 elm_gengrid_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index 328b0af..9bb7c79 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -5569,7 +5569,7 @@ _elm_genlist_evas_object_smart_add(Eo *obj, 
Elm_Genlist_Data *priv)
    priv->longpress_timeout = _elm_config->longpress_timeout;
    priv->highlight = EINA_TRUE;
 
-   priv->pan_obj = eo_add(MY_PAN_CLASS, evas_object_evas_get(obj));
+   eo_add(&priv->pan_obj, MY_PAN_CLASS, evas_object_evas_get(obj));
    pan_data = eo_data_scope_get(priv->pan_obj, MY_PAN_CLASS);
    eo_data_ref(obj, NULL);
    pan_data->wobj = obj;
@@ -5688,7 +5688,8 @@ EAPI Evas_Object *
 elm_genlist_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
@@ -6032,7 +6033,8 @@ _elm_genlist_item_new(Elm_Genlist_Data *sd,
 
    if (!itc) return NULL;
 
-   Eo *eo_it = eo_add(ELM_GENLIST_ITEM_CLASS, sd->obj);
+   Eo *eo_it = NULL;
+   eo_add(&eo_it, ELM_GENLIST_ITEM_CLASS, sd->obj);
    if (!eo_it) return NULL;
    ELM_GENLIST_ITEM_DATA_GET(eo_it, it);
 
diff --git a/src/lib/elm_gesture_layer.c b/src/lib/elm_gesture_layer.c
index 27d60b7..82c0eef1 100644
--- a/src/lib/elm_gesture_layer.c
+++ b/src/lib/elm_gesture_layer.c
@@ -3817,7 +3817,8 @@ EAPI Evas_Object *
 elm_gesture_layer_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_glview.c b/src/lib/elm_glview.c
index 43d08d5..3aefbfd 100644
--- a/src/lib/elm_glview.c
+++ b/src/lib/elm_glview.c
@@ -296,7 +296,8 @@ EAPI Evas_Object *
 elm_glview_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent, 
elm_obj_glview_version_constructor(eoid, EVAS_GL_GLES_2_X));
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent, elm_obj_glview_version_constructor(obj, 
EVAS_GL_GLES_2_X));
    return obj;
 }
 
@@ -304,7 +305,8 @@ EAPI Evas_Object *
 elm_glview_version_add(Evas_Object *parent, Evas_GL_Context_Version version)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent, 
elm_obj_glview_version_constructor(eoid, version));
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent, elm_obj_glview_version_constructor(obj, 
version));
    return obj;
 }
 
diff --git a/src/lib/elm_grid.c b/src/lib/elm_grid.c
index 957823c..a5b12d0 100644
--- a/src/lib/elm_grid.c
+++ b/src/lib/elm_grid.c
@@ -161,7 +161,8 @@ EAPI Evas_Object *
 elm_grid_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_hover.c b/src/lib/elm_hover.c
index 22b7e3d..01da062 100644
--- a/src/lib/elm_hover.c
+++ b/src/lib/elm_hover.c
@@ -670,7 +670,8 @@ EAPI Evas_Object *
 elm_hover_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_icon.c b/src/lib/elm_icon.c
index e2ec161..99d9c36 100644
--- a/src/lib/elm_icon.c
+++ b/src/lib/elm_icon.c
@@ -659,7 +659,8 @@ EAPI Evas_Object *
 elm_icon_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_image.c b/src/lib/elm_image.c
index 92aacaa..045fb8e 100644
--- a/src/lib/elm_image.c
+++ b/src/lib/elm_image.c
@@ -940,7 +940,8 @@ EAPI Evas_Object *
 elm_image_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_index.c b/src/lib/elm_index.c
index c6cf6b3..808f90f 100644
--- a/src/lib/elm_index.c
+++ b/src/lib/elm_index.c
@@ -546,7 +546,7 @@ _item_new(Evas_Object *obj,
 
    ELM_INDEX_DATA_GET(obj, sd);
 
-   eo_item = eo_add(ELM_INDEX_ITEM_CLASS, obj);
+   eo_add(&eo_item, ELM_INDEX_ITEM_CLASS, obj);
    if (!eo_item) return NULL;
 
    ELM_INDEX_ITEM_DATA_GET(eo_item, it);
@@ -1221,7 +1221,8 @@ EAPI Evas_Object *
 elm_index_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_interface_atspi_accessible.c 
b/src/lib/elm_interface_atspi_accessible.c
index 1e9d1a2..1fec0a3 100644
--- a/src/lib/elm_interface_atspi_accessible.c
+++ b/src/lib/elm_interface_atspi_accessible.c
@@ -573,7 +573,7 @@ EOLIAN Eo*
 _elm_interface_atspi_accessible_root_get(Eo *class EINA_UNUSED, void *pd 
EINA_UNUSED)
 {
    if (!root)
-      root = eo_add(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+      eo_add(&root, ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    return root;
 }
diff --git a/src/lib/elm_interface_scrollable.c 
b/src/lib/elm_interface_scrollable.c
index 75445a7..3b49929 100644
--- a/src/lib/elm_interface_scrollable.c
+++ b/src/lib/elm_interface_scrollable.c
@@ -226,7 +226,8 @@ _elm_pan_gravity_get(Eo *obj EINA_UNUSED, 
Elm_Pan_Smart_Data *psd, double *x, do
 static Evas_Object *
 _elm_pan_add(Evas *evas)
 {
-   Evas_Object *obj = eo_add(MY_PAN_CLASS, evas);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_PAN_CLASS, evas);
    return obj;
 }
 
diff --git a/src/lib/elm_inwin.c b/src/lib/elm_inwin.c
index 1c673b7..e505bfe 100644
--- a/src/lib/elm_inwin.c
+++ b/src/lib/elm_inwin.c
@@ -96,7 +96,8 @@ EAPI Evas_Object *
 elm_win_inwin_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_label.c b/src/lib/elm_label.c
index 6887a5f..1f2ff63 100644
--- a/src/lib/elm_label.c
+++ b/src/lib/elm_label.c
@@ -404,7 +404,8 @@ EAPI Evas_Object *
 elm_label_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_layout.c b/src/lib/elm_layout.c
index 8058b83..389f95a 100644
--- a/src/lib/elm_layout.c
+++ b/src/lib/elm_layout.c
@@ -1771,7 +1771,8 @@ EAPI Evas_Object *
 elm_layout_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index 14164dc..225f892 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -2284,7 +2284,8 @@ _item_new(Evas_Object *obj,
           Evas_Smart_Cb func,
           const void *data)
 {
-   Eo *eo_it = eo_add(ELM_LIST_ITEM_CLASS, obj);
+   Eo *eo_it = NULL;
+   eo_add(&eo_it, ELM_LIST_ITEM_CLASS, obj);
    if (!eo_it) return NULL;
    ELM_LIST_ITEM_DATA_GET(eo_it, it);
 
@@ -2541,7 +2542,8 @@ EAPI Evas_Object *
 elm_list_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_map.c b/src/lib/elm_map.c
index 3dc1111..d6d94ba 100644
--- a/src/lib/elm_map.c
+++ b/src/lib/elm_map.c
@@ -4062,7 +4062,7 @@ _elm_map_evas_object_smart_add(Eo *obj, Elm_Map_Data 
*priv)
    elm_interface_scrollable_animate_stop_cb_set(obj, _scroll_animate_stop_cb);
    elm_interface_scrollable_scroll_cb_set(obj, _scroll_cb);
 
-   priv->pan_obj = eo_add(MY_PAN_CLASS, evas_object_evas_get(obj));
+   eo_add(&priv->pan_obj, MY_PAN_CLASS, evas_object_evas_get(obj));
    pan_data = eo_data_scope_get(priv->pan_obj, MY_PAN_CLASS);
    eo_data_ref(obj, NULL);
    pan_data->wobj = obj;
@@ -4213,7 +4213,8 @@ EAPI Evas_Object *
 elm_map_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_mapbuf.c b/src/lib/elm_mapbuf.c
index b06dd3f..2bd01da 100644
--- a/src/lib/elm_mapbuf.c
+++ b/src/lib/elm_mapbuf.c
@@ -286,7 +286,8 @@ EAPI Evas_Object *
 elm_mapbuf_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_menu.c b/src/lib/elm_menu.c
index ee31bcc..f8d3e4c 100644
--- a/src/lib/elm_menu.c
+++ b/src/lib/elm_menu.c
@@ -781,7 +781,8 @@ EAPI Evas_Object *
 elm_menu_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
@@ -1020,7 +1021,7 @@ _elm_menu_item_add(Eo *obj, Elm_Menu_Data *sd, 
Elm_Object_Item *parent, const ch
    elm_interface_atspi_accessible_type_set(icon_obj, ELM_ATSPI_TYPE_DISABLED);
    if (!icon_obj) return NULL;
 
-   eo_item = eo_add(ELM_MENU_ITEM_CLASS, obj);
+   eo_add(&eo_item, ELM_MENU_ITEM_CLASS, obj);
    if (!eo_item)
      {
         evas_object_del(icon_obj);
@@ -1108,7 +1109,7 @@ _elm_menu_item_separator_add(Eo *obj, Elm_Menu_Data *sd, 
Elm_Object_Item *eo_p_i
    ELM_MENU_ITEM_DATA_GET(eo_subitem, subitem);
    if (subitem->separator) return NULL;
 
-   eo_subitem = eo_add(ELM_MENU_ITEM_CLASS, obj);
+   eo_add(&eo_subitem, ELM_MENU_ITEM_CLASS, obj);
    if (!eo_subitem) return NULL;
 
    subitem = eo_data_scope_get(eo_subitem, ELM_MENU_ITEM_CLASS);
diff --git a/src/lib/elm_notify.c b/src/lib/elm_notify.c
index 4a22425..59860d7 100644
--- a/src/lib/elm_notify.c
+++ b/src/lib/elm_notify.c
@@ -464,7 +464,8 @@ EAPI Evas_Object *
 elm_notify_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_panel.c b/src/lib/elm_panel.c
index ba2aa59..17fb569 100644
--- a/src/lib/elm_panel.c
+++ b/src/lib/elm_panel.c
@@ -1160,7 +1160,8 @@ EAPI Evas_Object *
 elm_panel_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
 
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
    wd->highlight_root = EINA_TRUE;
diff --git a/src/lib/elm_panes.c b/src/lib/elm_panes.c
index 2e249e0..197a666 100644
--- a/src/lib/elm_panes.c
+++ b/src/lib/elm_panes.c
@@ -321,7 +321,8 @@ EAPI Evas_Object *
 elm_panes_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_photo.c b/src/lib/elm_photo.c
index ada1590..e1bb05c 100644
--- a/src/lib/elm_photo.c
+++ b/src/lib/elm_photo.c
@@ -296,7 +296,8 @@ EAPI Evas_Object *
 elm_photo_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_photocam.c b/src/lib/elm_photocam.c
index 00bab4d..6671ff3 100644
--- a/src/lib/elm_photocam.c
+++ b/src/lib/elm_photocam.c
@@ -1414,7 +1414,7 @@ _elm_photocam_evas_object_smart_add(Eo *obj, 
Elm_Photocam_Data *priv)
 
    elm_interface_scrollable_bounce_allow_set(obj, bounce, bounce);
 
-   priv->pan_obj = eo_add(MY_PAN_CLASS, evas_object_evas_get(obj));
+   eo_add(&priv->pan_obj, MY_PAN_CLASS, evas_object_evas_get(obj));
    pan_data = eo_data_scope_get(priv->pan_obj, MY_PAN_CLASS);
    eo_data_ref(obj, NULL);
    pan_data->wobj = obj;
@@ -1506,7 +1506,8 @@ EAPI Evas_Object *
 elm_photocam_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_plug.c b/src/lib/elm_plug.c
index a567d63..ca435bb 100644
--- a/src/lib/elm_plug.c
+++ b/src/lib/elm_plug.c
@@ -136,7 +136,8 @@ EAPI Evas_Object *
 elm_plug_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_prefs.c b/src/lib/elm_prefs.c
index 87e12e0..7f50f37 100644
--- a/src/lib/elm_prefs.c
+++ b/src/lib/elm_prefs.c
@@ -508,7 +508,8 @@ elm_prefs_add(Evas_Object *parent)
         return NULL;
      }
 
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_progressbar.c b/src/lib/elm_progressbar.c
index a001fac..7860f26 100644
--- a/src/lib/elm_progressbar.c
+++ b/src/lib/elm_progressbar.c
@@ -324,7 +324,8 @@ EAPI Evas_Object *
 elm_progressbar_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_radio.c b/src/lib/elm_radio.c
index 39576cf..923f1b9 100644
--- a/src/lib/elm_radio.c
+++ b/src/lib/elm_radio.c
@@ -267,7 +267,8 @@ EAPI Evas_Object *
 elm_radio_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_route.c b/src/lib/elm_route.c
index d5117be..e9989b7 100644
--- a/src/lib/elm_route.c
+++ b/src/lib/elm_route.c
@@ -178,7 +178,8 @@ EAPI Evas_Object *
 elm_route_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_scroller.c b/src/lib/elm_scroller.c
index 91fa297..545d347 100644
--- a/src/lib/elm_scroller.c
+++ b/src/lib/elm_scroller.c
@@ -945,7 +945,8 @@ EAPI Evas_Object *
 elm_scroller_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_segment_control.c b/src/lib/elm_segment_control.c
index d77b932..3dcc40a 100644
--- a/src/lib/elm_segment_control.c
+++ b/src/lib/elm_segment_control.c
@@ -557,7 +557,7 @@ _item_new(Evas_Object *obj,
 {
    Eo *eo_item;
 
-   eo_item = eo_add(ELM_SEGMENT_CONTROL_ITEM_CLASS, obj);
+   eo_add(&eo_item, ELM_SEGMENT_CONTROL_ITEM_CLASS, obj);
    if (!eo_item) return NULL;
 
    ELM_SEGMENT_ITEM_DATA_GET(eo_item, it);
@@ -697,7 +697,8 @@ EAPI Evas_Object *
 elm_segment_control_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_separator.c b/src/lib/elm_separator.c
index 2e940d9..e8b04c6 100644
--- a/src/lib/elm_separator.c
+++ b/src/lib/elm_separator.c
@@ -62,7 +62,8 @@ EAPI Evas_Object *
 elm_separator_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_slider.c b/src/lib/elm_slider.c
index 37ea643..fd9d78c 100644
--- a/src/lib/elm_slider.c
+++ b/src/lib/elm_slider.c
@@ -952,7 +952,8 @@ EAPI Evas_Object *
 elm_slider_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_slideshow.c b/src/lib/elm_slideshow.c
index c3d5879..2154b7c 100644
--- a/src/lib/elm_slideshow.c
+++ b/src/lib/elm_slideshow.c
@@ -381,7 +381,8 @@ EAPI Evas_Object *
 elm_slideshow_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
@@ -410,7 +411,7 @@ _elm_slideshow_item_add(Eo *obj, Elm_Slideshow_Data *sd, 
const Elm_Slideshow_Ite
 {
    Eo *eo_item;
 
-   eo_item = eo_add(ELM_SLIDESHOW_ITEM_CLASS, obj);
+   eo_add(&eo_item, ELM_SLIDESHOW_ITEM_CLASS, obj);
    if (!eo_item) return NULL;
 
    ELM_SLIDESHOW_ITEM_DATA_GET(eo_item, item);
@@ -431,7 +432,7 @@ _elm_slideshow_item_sorted_insert(Eo *obj, 
Elm_Slideshow_Data *sd, const Elm_Sli
 {
    Eo *eo_item;
 
-   eo_item = eo_add(ELM_SLIDESHOW_ITEM_CLASS, obj);
+   eo_add(&eo_item, ELM_SLIDESHOW_ITEM_CLASS, obj);
    if (!eo_item) return NULL;
 
    ELM_SLIDESHOW_ITEM_DATA_GET(eo_item, item);
diff --git a/src/lib/elm_spinner.c b/src/lib/elm_spinner.c
index b621476..de25b9d 100644
--- a/src/lib/elm_spinner.c
+++ b/src/lib/elm_spinner.c
@@ -1403,7 +1403,8 @@ EAPI Evas_Object *
 elm_spinner_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_sys_notify.c b/src/lib/elm_sys_notify.c
index c58659a..5d9f369 100644
--- a/src/lib/elm_sys_notify.c
+++ b/src/lib/elm_sys_notify.c
@@ -169,7 +169,7 @@ _elm_sys_notify_servers_set(Eo                     *obj  
EINA_UNUSED,
                        return EINA_FALSE;
                     }
 
-                  sd->servers[i] = eo_add(class_get(), NULL);
+                  eo_add(&sd->servers[i], class_get(), NULL);
                   if (EINA_UNLIKELY(!(sd->servers[i])))
                     {
                        CRI("Failed to create notification server");
@@ -201,7 +201,7 @@ _elm_sys_notify_singleton_get(Eo   *obj EINA_UNUSED,
                               void *sd  EINA_UNUSED)
 {
    if (!_singleton)
-     _singleton = eo_add(MY_CLASS, NULL);
+     eo_add(&_singleton, MY_CLASS, NULL);
    return _singleton;
 }
 
diff --git a/src/lib/elm_table.c b/src/lib/elm_table.c
index 93099d7..d3ffca8 100644
--- a/src/lib/elm_table.c
+++ b/src/lib/elm_table.c
@@ -214,7 +214,8 @@ EAPI Evas_Object *
 elm_table_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_thumb.c b/src/lib/elm_thumb.c
index 6b33e43..5204d11 100644
--- a/src/lib/elm_thumb.c
+++ b/src/lib/elm_thumb.c
@@ -586,7 +586,8 @@ EAPI Evas_Object *
 elm_thumb_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index 1611969..327b227 100644
--- a/src/lib/elm_toolbar.c
+++ b/src/lib/elm_toolbar.c
@@ -2374,7 +2374,8 @@ _item_new(Evas_Object *obj,
 
    ELM_TOOLBAR_DATA_GET(obj, sd);
 
-   Eo *eo_it = eo_add(ELM_TOOLBAR_ITEM_CLASS, obj);
+   Eo *eo_it = NULL;
+   eo_add(&eo_it, ELM_TOOLBAR_ITEM_CLASS, obj);
 
    if (!eo_it) return NULL;
 
@@ -2989,7 +2990,8 @@ EAPI Evas_Object *
 elm_toolbar_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_video.c b/src/lib/elm_video.c
index 65a5d6e..f93a5da 100644
--- a/src/lib/elm_video.c
+++ b/src/lib/elm_video.c
@@ -284,7 +284,8 @@ EAPI Evas_Object *
 elm_video_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_web2.c b/src/lib/elm_web2.c
index 64e1c7f..f78c47d 100644
--- a/src/lib/elm_web2.c
+++ b/src/lib/elm_web2.c
@@ -733,7 +733,8 @@ EAPI Evas_Object *
 elm_web_add(Evas_Object *parent)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-   Evas_Object *obj = eo_add(MY_CLASS, parent);
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent);
    return obj;
 }
 
diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
index 70f5392..138e112 100644
--- a/src/lib/elm_win.c
+++ b/src/lib/elm_win.c
@@ -3231,14 +3231,16 @@ elm_win_add(Evas_Object *parent,
             const char *name,
             Elm_Win_Type type)
 {
-   Evas_Object *obj = eo_add(MY_CLASS, parent, elm_obj_win_name_set(eoid, 
name), elm_obj_win_type_set(eoid, type));
+   Evas_Object *obj = NULL;
+   eo_add(&obj, MY_CLASS, parent, elm_obj_win_name_set(obj, name), 
elm_obj_win_type_set(obj, type));
    return obj;
 }
 
 EAPI Evas_Object *
 elm_win_fake_add(Ecore_Evas *ee)
 {
-   return eo_add(MY_CLASS, NULL, elm_obj_win_fake_canvas_set(eoid, ee), 
elm_obj_win_name_set(eoid, NULL), elm_obj_win_type_set(eoid, ELM_WIN_FAKE));
+   Eo *ret = NULL;
+   return eo_add(&ret, MY_CLASS, NULL, elm_obj_win_fake_canvas_set(ret, ee), 
elm_obj_win_name_set(ret, NULL), elm_obj_win_type_set(ret, ELM_WIN_FAKE));
 }
 
 static void
diff --git a/src/lib/elm_win_standard.c b/src/lib/elm_win_standard.c
index c54e3b0..de0da52 100644
--- a/src/lib/elm_win_standard.c
+++ b/src/lib/elm_win_standard.c
@@ -19,7 +19,8 @@ _elm_win_standard_eo_base_finalize(Eo *obj, void *pd 
EINA_UNUSED)
    if (!obj)
      return NULL;
 
-   Evas_Object *bg = eo_add(ELM_BG_CLASS, obj);
+   Evas_Object *bg = NULL;
+   eo_add(&bg, ELM_BG_CLASS, obj);
    if (!bg)
      {
         ERR("Cannot create background.");
diff --git a/src/tests/elm_test_atspi.c b/src/tests/elm_test_atspi.c
index 82c1564..f88b5ae 100644
--- a/src/tests/elm_test_atspi.c
+++ b/src/tests/elm_test_atspi.c
@@ -29,7 +29,8 @@ START_TEST (elm_atspi_app_obj_name_get)
 {
    elm_init(0, NULL);
 
-   Eo* root = eo_add(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+   Eo* root = NULL;
+   eo_add(&root, ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    ck_assert(root != NULL);
 
@@ -108,7 +109,8 @@ START_TEST (elm_atspi_role_get)
 {
    elm_init(0, NULL);
 
-   Eo* root = eo_add(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+   Eo* root = NULL;
+   eo_add(&root, ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    Elm_Atspi_Role role;
 
@@ -149,7 +151,8 @@ START_TEST (elm_atspi_role_name_get)
 {
    elm_init(0, NULL);
 
-   Eo* root = eo_add(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+   Eo* root = NULL;
+   eo_add(&root, ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    const char *ret = NULL;
 
@@ -166,7 +169,8 @@ START_TEST (elm_atspi_localized_role_name_get)
 {
    elm_init(0, NULL);
 
-   Eo* root = eo_add(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+   Eo* root = NULL;
+   eo_add(&root, ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    const char *ret = NULL;
 
@@ -183,7 +187,8 @@ START_TEST (elm_atspi_description_set)
 {
    elm_init(0, NULL);
 
-   Eo* root = eo_add(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+   Eo* root = NULL;
+   eo_add(&root, ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    const char *ret = NULL;
 
@@ -229,7 +234,8 @@ START_TEST (elm_atspi_children_and_parent)
    elm_init(0, NULL);
 
    generate_app();
-   Eo* root = eo_add(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+   Eo* root = NULL;
+   eo_add(&root, ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    Eina_List *child_list = NULL;
 
@@ -256,7 +262,8 @@ START_TEST (elm_atspi_children_and_parent2)
    elm_init(0, NULL);
 
    generate_app();
-   Eo* root = eo_add(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+   Eo* root = NULL;
+   eo_add(&root, ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    Eo *win = NULL;
 

-- 


Reply via email to