Add type checking for the various E objects.

SVN revision: 13053
This commit is contained in:
rbdpngn 2005-01-22 06:58:34 +00:00 committed by rbdpngn
parent b904a0bb2c
commit b6c300dd69
23 changed files with 198 additions and 33 deletions

View File

@ -94,7 +94,7 @@ e_app_new(char *path, int scan_subdirs)
e_object_ref(E_OBJECT(a));
return a;
}
a = E_OBJECT_ALLOC(E_App, _e_app_free);
a = E_OBJECT_ALLOC(E_App, E_APP_TYPE, _e_app_free);
a->mod_time = e_file_mod_time(path);
if (e_file_is_dir(path))
{
@ -164,6 +164,7 @@ e_app_subdir_scan(E_App *a, int scan_subdirs)
char buf[4096];
E_OBJECT_CHECK(a);
E_OBJECT_TYPE_CHECK(a, E_APP_TYPE);
if (a->exe) return;
if (a->scanned)
{
@ -213,6 +214,7 @@ e_app_exec(E_App *a)
Ecore_Exe *exe;
E_OBJECT_CHECK_RETURN(a, 0);
E_OBJECT_TYPE_CHECK_RETURN(a, E_APP_TYPE, 0);
if (!a->exe) return 0;
exe = ecore_exe_run(a->exe, a);
if (!exe) return 0;
@ -226,6 +228,7 @@ int
e_app_starting_get(E_App *a)
{
E_OBJECT_CHECK_RETURN(a, 0);
E_OBJECT_TYPE_CHECK_RETURN(a, E_APP_TYPE, 0);
return a->starting;
}
@ -233,6 +236,7 @@ int
e_app_running_get(E_App *a)
{
E_OBJECT_CHECK_RETURN(a, 0);
E_OBJECT_TYPE_CHECK_RETURN(a, E_APP_TYPE, 0);
if (a->instances) return 1;
return 0;
}

View File

@ -17,6 +17,8 @@ typedef struct _E_App E_App;
#ifndef E_APPS_H
#define E_APPS_H
#define E_APP_TYPE 0xE0b01001
struct _E_App
{
E_Object e_obj_inherit;

View File

@ -156,7 +156,7 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map)
unsigned int managed, desk[2];
int deskx, desky;
bd = E_OBJECT_ALLOC(E_Border, _e_border_free);
bd = E_OBJECT_ALLOC(E_Border, E_BORDER_TYPE, _e_border_free);
if (!bd) return NULL;
e_object_del_func_set(E_OBJECT(bd), E_OBJECT_CLEANUP_FUNC(_e_border_del));
@ -297,7 +297,9 @@ e_border_desk_set(E_Border *bd, E_Desk *desk)
unsigned int deskpos[2];
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
if (bd->desk == desk) return;
bd->desk->clients = evas_list_remove(bd->desk->clients, bd);
desk->clients = evas_list_append(desk->clients, bd);
@ -325,6 +327,7 @@ e_border_show(E_Border *bd)
unsigned int visible;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if (bd->visible) return;
e_container_shape_show(bd->shape);
ecore_x_window_show(bd->client.win);
@ -351,6 +354,7 @@ e_border_hide(E_Border *bd)
unsigned int visible;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if (!bd->visible) return;
ecore_x_window_hide(bd->client.win);
@ -382,6 +386,7 @@ e_border_move(E_Border *bd, int x, int y)
E_Event_Border_Move *ev;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if (bd->new_client)
{
E_Border_Pending_Move_Resize *pnd;
@ -417,6 +422,7 @@ e_border_resize(E_Border *bd, int w, int h)
{
E_Event_Border_Resize *ev;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if (bd->new_client)
{
E_Border_Pending_Move_Resize *pnd;
@ -456,6 +462,7 @@ e_border_move_resize(E_Border *bd, int x, int y, int w, int h)
E_Event_Border_Resize *rev;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if (bd->new_client)
{
E_Border_Pending_Move_Resize *pnd;
@ -508,6 +515,7 @@ e_border_raise(E_Border *bd)
Ecore_X_Window mwin;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
bd->container->clients = evas_list_remove(bd->container->clients, bd);
bd->container->clients = evas_list_append(bd->container->clients, bd);
mwin = e_menu_grab_window_get();
@ -525,6 +533,7 @@ void
e_border_lower(E_Border *bd)
{
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
bd->container->clients = evas_list_remove(bd->container->clients, bd);
bd->container->clients = evas_list_prepend(bd->container->clients, bd);
ecore_x_window_lower(bd->win);
@ -534,6 +543,7 @@ void
e_border_stack_above(E_Border *bd, E_Border *above)
{
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
bd->container->clients = evas_list_remove(bd->container->clients, bd);
bd->container->clients = evas_list_append_relative(bd->container->clients, bd, above);
ecore_x_window_configure(bd->win,
@ -547,6 +557,7 @@ void
e_border_stack_below(E_Border *bd, E_Border *below)
{
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
bd->container->clients = evas_list_remove(bd->container->clients, bd);
bd->container->clients = evas_list_prepend_relative(bd->container->clients, bd, below);
ecore_x_window_configure(bd->win,
@ -560,6 +571,7 @@ void
e_border_focus_set(E_Border *bd, int focus, int set)
{
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if (!bd->client.icccm.accepts_focus) return;
if ((focus) && (!bd->focused))
edje_object_signal_emit(bd->bg_object, "active", "");
@ -607,6 +619,7 @@ e_border_shade(E_Border *bd, E_Direction dir)
E_Event_Border_Resize *ev;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if (bd->maximized) return;
if (!bd->shaded)
{
@ -679,6 +692,7 @@ e_border_unshade(E_Border *bd, E_Direction dir)
E_Event_Border_Resize *ev;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if (bd->maximized) return;
if (bd->shaded)
{
@ -757,6 +771,7 @@ void
e_border_maximize(E_Border *bd)
{
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if ((bd->shaded) || (bd->shading)) return;
if (!bd->maximized)
@ -783,6 +798,7 @@ void
e_border_unmaximize(E_Border *bd)
{
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if ((bd->shaded) || (bd->shading)) return;
if (bd->maximized)
{
@ -803,6 +819,7 @@ e_border_iconify(E_Border *bd)
{
unsigned int iconic;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if ((bd->shading)) return;
if (!bd->iconic)
{
@ -822,6 +839,7 @@ e_border_uniconify(E_Border *bd)
unsigned int iconic;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if ((bd->shading)) return;
if (bd->iconic)
{
@ -841,16 +859,18 @@ e_border_uniconify(E_Border *bd)
void
e_border_stick(E_Border *bd)
{
E_OBJECT_CHECK(bd);
bd->sticky = 1;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
bd->sticky = 1;
}
void
e_border_unstick(E_Border *bd)
{
E_OBJECT_CHECK(bd);
bd->sticky = 0;
bd->desk = e_desk_current_get(bd->zone);
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
bd->sticky = 0;
bd->desk = e_desk_current_get(bd->zone);
}
E_Border *

View File

@ -30,6 +30,8 @@ typedef struct _E_Event_Border_Desk_Set E_Event_Border_Desk_Set;
#ifndef E_BORDER_H
#define E_BORDER_H
#define E_BORDER_TYPE 0xE0b01002
struct _E_Border
{
E_Object e_obj_inherit;

View File

@ -89,17 +89,25 @@ e_config_init(void)
em->enabled = 1;
e_config->modules = evas_list_append(e_config->modules, em);
em = E_NEW(E_Config_Module, 1);
em->name = strdup("battery");
e_config->modules = evas_list_append(e_config->modules, em);
em->name = strdup("snow");
em->enabled = 1;
e_config->modules = evas_list_append(e_config->modules, em);
em = E_NEW(E_Config_Module, 1);
em->name = strdup("flame");
em->enabled = 1;
e_config->modules = evas_list_append(e_config->modules, em);
em = E_NEW(E_Config_Module, 1);
em->name = strdup("battery");
em->enabled = 1;
e_config->modules = evas_list_append(e_config->modules, em);
em = E_NEW(E_Config_Module, 1);
em->name = strdup("temperature");
e_config->modules = evas_list_append(e_config->modules, em);
em->enabled = 1;
e_config->modules = evas_list_append(e_config->modules, em);
em = E_NEW(E_Config_Module, 1);
em->name = strdup("pager");
e_config->modules = evas_list_append(e_config->modules, em);
em->enabled = 1;
e_config->modules = evas_list_append(e_config->modules, em);
}
}

View File

@ -46,7 +46,7 @@ e_container_new(E_Manager *man)
char name[40];
int i, n;
con = E_OBJECT_ALLOC(E_Container, _e_container_free);
con = E_OBJECT_ALLOC(E_Container, E_CONTAINER_TYPE, _e_container_free);
if (!con) return NULL;
con->manager = man;
con->manager->containers = evas_list_append(con->manager->containers, con);
@ -106,6 +106,7 @@ e_container_show(E_Container *con)
{
printf("Container show!\n");
E_OBJECT_CHECK(con);
E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
if (con->visible) return;
ecore_x_window_show(con->win);
con->visible = 1;
@ -115,6 +116,7 @@ void
e_container_hide(E_Container *con)
{
E_OBJECT_CHECK(con);
E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
if (!con->visible) return;
ecore_x_window_hide(con->win);
con->visible = 0;
@ -125,6 +127,7 @@ e_container_current_get(E_Manager *man)
{
Evas_List *l;
E_OBJECT_CHECK_RETURN(man, NULL);
E_OBJECT_TYPE_CHECK_RETURN(man, E_MANAGER_TYPE, NULL);
for (l = man->containers; l; l = l->next)
{
@ -139,6 +142,7 @@ void
e_container_move(E_Container *con, int x, int y)
{
E_OBJECT_CHECK(con);
E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
if ((x == con->x) && (y == con->y)) return;
con->x = x;
con->y = y;
@ -150,6 +154,7 @@ void
e_container_resize(E_Container *con, int w, int h)
{
E_OBJECT_CHECK(con);
E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
if ((w == con->w) && (h == con->h)) return;
con->w = w;
con->h = h;
@ -162,6 +167,7 @@ void
e_container_move_resize(E_Container *con, int x, int y, int w, int h)
{
E_OBJECT_CHECK(con);
E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
if ((x == con->x) && (y == con->y) && (w == con->w) && (h == con->h)) return;
con->x = x;
con->y = y;
@ -177,6 +183,7 @@ void
e_container_raise(E_Container *con)
{
E_OBJECT_CHECK(con);
E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
ecore_x_window_raise(con->win);
}
@ -184,6 +191,7 @@ void
e_container_lower(E_Container *con)
{
E_OBJECT_CHECK(con);
E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
ecore_x_window_lower(con->win);
}
@ -191,6 +199,7 @@ Evas_List *
e_container_clients_list_get(E_Container *con)
{
E_OBJECT_CHECK_RETURN(con, NULL);
E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL);
return con->clients;
}
@ -200,6 +209,7 @@ e_container_zone_at_point_get(E_Container *con, int x, int y)
Evas_List *l;
E_OBJECT_CHECK_RETURN(con, NULL);
E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL);
for (l = con->zones; l; l = l->next)
{
E_Zone *zone;
@ -218,6 +228,7 @@ e_container_zone_number_get(E_Container *con, int num)
Evas_List *l;
E_OBJECT_CHECK_RETURN(con, NULL);
E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL);
for (l = con->zones; l; l = l->next)
{
E_Zone *zone;
@ -235,8 +246,9 @@ e_container_shape_add(E_Container *con)
E_Container_Shape *es;
E_OBJECT_CHECK_RETURN(con, NULL);
E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, 0);
es = E_OBJECT_ALLOC(E_Container_Shape, _e_container_shape_free);
es = E_OBJECT_ALLOC(E_Container_Shape, E_CONTAINER_SHAPE_TYPE, _e_container_shape_free);
E_OBJECT_DEL_SET(es, _e_container_shape_del);
es->con = con;
con->shapes = evas_list_append(con->shapes, es);
@ -248,6 +260,7 @@ void
e_container_shape_show(E_Container_Shape *es)
{
E_OBJECT_CHECK(es);
E_OBJECT_TYPE_CHECK(es, E_CONTAINER_SHAPE_TYPE);
if (es->visible) return;
es->visible = 1;
_e_container_shape_change_call(es, E_CONTAINER_SHAPE_SHOW);
@ -257,6 +270,7 @@ void
e_container_shape_hide(E_Container_Shape *es)
{
E_OBJECT_CHECK(es);
E_OBJECT_TYPE_CHECK(es, E_CONTAINER_SHAPE_TYPE);
if (!es->visible) return;
es->visible = 0;
_e_container_shape_change_call(es, E_CONTAINER_SHAPE_HIDE);
@ -266,6 +280,7 @@ void
e_container_shape_move(E_Container_Shape *es, int x, int y)
{
E_OBJECT_CHECK(es);
E_OBJECT_TYPE_CHECK(es, E_CONTAINER_SHAPE_TYPE);
if ((es->x == x) && (es->y == y)) return;
es->x = x;
es->y = y;
@ -276,6 +291,7 @@ void
e_container_shape_resize(E_Container_Shape *es, int w, int h)
{
E_OBJECT_CHECK(es);
E_OBJECT_TYPE_CHECK(es, E_CONTAINER_SHAPE_TYPE);
if (w < 1) w = 1;
if (h < 1) h = 1;
if ((es->w == w) && (es->h == h)) return;
@ -288,6 +304,7 @@ Evas_List *
e_container_shape_list_get(E_Container *con)
{
E_OBJECT_CHECK_RETURN(con, NULL);
E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL);
return con->shapes;
}
@ -295,6 +312,7 @@ void
e_container_shape_geometry_get(E_Container_Shape *es, int *x, int *y, int *w, int *h)
{
E_OBJECT_CHECK(es);
E_OBJECT_TYPE_CHECK(es, E_CONTAINER_SHAPE_TYPE);
if (x) *x = es->x;
if (y) *y = es->y;
if (w) *w = es->w;
@ -305,6 +323,7 @@ E_Container *
e_container_shape_container_get(E_Container_Shape *es)
{
E_OBJECT_CHECK_RETURN(es, NULL);
E_OBJECT_TYPE_CHECK_RETURN(es, E_CONTAINER_SHAPE_TYPE, NULL);
return es->con;
}
@ -314,6 +333,7 @@ e_container_shape_change_callback_add(E_Container *con, void (*func) (void *data
E_Container_Shape_Callback *cb;
E_OBJECT_CHECK(con);
E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
cb = calloc(1, sizeof(E_Container_Shape_Callback));
if (!cb) return;
cb->func = func;
@ -328,6 +348,7 @@ e_container_shape_change_callback_del(E_Container *con, void (*func) (void *data
/* FIXME: if we call this from within a callback we are in trouble */
E_OBJECT_CHECK(con);
E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
for (l = con->shape_change_cb; l; l = l->next)
{
E_Container_Shape_Callback *cb;
@ -346,6 +367,7 @@ Evas_List *
e_container_shape_rects_get(E_Container_Shape *es)
{
E_OBJECT_CHECK_RETURN(es, NULL);
E_OBJECT_TYPE_CHECK_RETURN(es, E_CONTAINER_SHAPE_TYPE, NULL);
return es->shape;
}

View File

@ -20,6 +20,9 @@ typedef struct _E_Event_Container_Resize E_Event_Container_Resize;
#ifndef E_CONTAINER_H
#define E_CONTAINER_H
#define E_CONTAINER_TYPE 0xE0b01003
#define E_CONTAINER_SHAPE_TYPE 0xE0b01004
struct _E_Container
{
E_Object e_obj_inherit;

View File

@ -31,8 +31,9 @@ e_desk_new(E_Zone *zone, int x, int y)
char name[40];
E_OBJECT_CHECK_RETURN(zone, NULL);
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
desk = E_OBJECT_ALLOC(E_Desk, _e_desk_free);
desk = E_OBJECT_ALLOC(E_Desk, E_DESK_TYPE, _e_desk_free);
if (!desk) return NULL;
desk->clients = NULL;
@ -47,6 +48,7 @@ void
e_desk_name_set(E_Desk *desk, const char *name)
{
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
if (desk->name)
free(desk->name);
desk->name = strdup(name);
@ -59,6 +61,7 @@ e_desk_show(E_Desk *desk)
int x, y;
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
if (desk->visible) return;
for (l = desk->zone->container->clients; l; l = l->next)
@ -123,6 +126,7 @@ E_Desk *
e_desk_current_get(E_Zone *zone)
{
E_OBJECT_CHECK_RETURN(zone, NULL);
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
return e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current);
}
@ -131,6 +135,7 @@ E_Desk *
e_desk_at_xy_get(E_Zone *zone, int x, int y)
{
E_OBJECT_CHECK_RETURN(zone, NULL);
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
if (x >= zone->desk_x_count || y >= zone->desk_y_count)
return NULL;
@ -143,8 +148,8 @@ e_desk_xy_get(E_Desk *desk, int *x, int *y)
{
int xx, yy;
E_OBJECT_CHECK(zone);
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
for (xx = 0; xx < desk->zone->desk_x_count; xx++)
{
@ -171,6 +176,7 @@ e_desk_next(E_Zone *zone)
int x, y;
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
if (zone->desk_x_count < 2 && zone->desk_y_count < 2)
return;
@ -198,6 +204,7 @@ e_desk_prev(E_Zone *zone)
int x, y;
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
if (zone->desk_x_count < 2 && zone->desk_y_count < 2)
return;

View File

@ -6,6 +6,8 @@ typedef struct _E_Desk E_Desk;
#ifndef E_DESK_H
#define E_DESK_H
#define E_DESK_TYPE 0xE0b01005
struct _E_Desk
{
E_Object e_obj_inherit;

View File

@ -102,7 +102,7 @@ e_gadman_new(E_Container *con)
{
E_Gadman *gm;
gm = E_OBJECT_ALLOC(E_Gadman, _e_gadman_free);
gm = E_OBJECT_ALLOC(E_Gadman, E_GADMAN_TYPE, _e_gadman_free);
if (!gm) return NULL;
gm->container = con;
return gm;
@ -114,6 +114,7 @@ e_gadman_mode_set(E_Gadman *gm, E_Gadman_Mode mode)
Evas_List *l;
E_OBJECT_CHECK(gm);
E_OBJECT_TYPE_CHECK(gm, E_GADMAN_TYPE);
if (gm->mode == mode) return;
gm->mode = mode;
if (gm->mode == E_GADMAN_MODE_EDIT)
@ -132,6 +133,7 @@ E_Gadman_Mode
e_gadman_mode_get(E_Gadman *gm)
{
E_OBJECT_CHECK_RETURN(gm, E_GADMAN_MODE_NORMAL);
E_OBJECT_TYPE_CHECK_RETURN(gm, E_GADMAN_TYPE, E_GADMAN_MODE_NORMAL);
return gm->mode;
}
@ -170,8 +172,9 @@ e_gadman_client_new(E_Gadman *gm)
{
E_Gadman_Client *gmc;
E_OBJECT_CHECK_RETURN(gm, NULL);
E_OBJECT_TYPE_CHECK_RETURN(gm, E_GADMAN_TYPE, NULL);
gmc = E_OBJECT_ALLOC(E_Gadman_Client, _e_gadman_client_free);
gmc = E_OBJECT_ALLOC(E_Gadman_Client, E_GADMAN_CLIENT_TYPE, _e_gadman_client_free);
if (!gmc) return NULL;
gmc->gadman = gm;
gmc->policy = E_GADMAN_POLICY_ANYWHERE | E_GADMAN_POLICY_HSIZE | E_GADMAN_POLICY_VSIZE | E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE;
@ -196,6 +199,7 @@ e_gadman_client_save(E_Gadman_Client *gmc)
char buf[1024];
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
/* save all values */
cf.ax = gmc->ax;
cf.ay = gmc->ay;
@ -213,6 +217,7 @@ void
e_client_gadman_edge_set(E_Gadman_Client *gmc, E_Gadman_Edge edge)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
gmc->edge = edge;
}
@ -223,6 +228,7 @@ e_gadman_client_load(E_Gadman_Client *gmc)
char buf[1024];
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
snprintf(buf, sizeof(buf), "gadman.%s.%i", gmc->domain, gmc->instance);
cf = e_config_domain_load(buf, gadman_config_edd);
if (cf)
@ -274,6 +280,7 @@ void
e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
if (gmc->domain) free(gmc->domain);
gmc->domain = strdup(domain);
gmc->instance = instance;
@ -283,6 +290,7 @@ void
e_gadman_client_zone_set(E_Gadman_Client *gmc, E_Zone *zone)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
if (zone == gmc->zone) return;
gmc->zone = zone;
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
@ -299,6 +307,7 @@ void
e_gadman_client_policy_set(E_Gadman_Client *gmc, E_Gadman_Policy pol)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
gmc->policy = pol;
}
@ -306,6 +315,7 @@ void
e_gadman_client_min_size_set(E_Gadman_Client *gmc, Evas_Coord minw, Evas_Coord minh)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
if ((gmc->minw == minw) && (gmc->minh == minh)) return;
gmc->minw = minw;
gmc->minh = minh;
@ -326,6 +336,7 @@ void
e_gadman_client_max_size_set(E_Gadman_Client *gmc, Evas_Coord maxw, Evas_Coord maxh)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
if ((gmc->maxw == maxw) && (gmc->maxh == maxh)) return;
gmc->maxw = maxw;
gmc->maxh = maxh;
@ -346,6 +357,7 @@ void
e_gadman_client_align_set(E_Gadman_Client *gmc, double xalign, double yalign)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
if ((gmc->ax == xalign) && (gmc->ay == yalign)) return;
gmc->ax = xalign;
gmc->ay = yalign;
@ -358,6 +370,7 @@ void
e_gadman_client_aspect_set(E_Gadman_Client *gmc, double mina, double maxa)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
gmc->mina = mina;
gmc->maxa = maxa;
}
@ -366,6 +379,7 @@ void
e_gadman_client_auto_size_set(E_Gadman_Client *gmc, Evas_Coord autow, Evas_Coord autoh)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
gmc->autow = autow;
gmc->autoh = autoh;
if (gmc->use_autow)
@ -385,6 +399,7 @@ void
e_gadman_client_edge_set(E_Gadman_Client *gmc, E_Gadman_Edge edge)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
gmc->edge = edge;
}
@ -392,6 +407,7 @@ E_Gadman_Edge
e_gadman_client_edge_get(E_Gadman_Client *gmc)
{
E_OBJECT_CHECK_RETURN(gmc, E_GADMAN_EDGE_TOP);
E_OBJECT_TYPE_CHECK_RETURN(gmc, E_GADMAN_CLIENT_TYPE, E_GADMAN_EDGE_TOP);
return gmc->edge;
}
@ -399,6 +415,7 @@ void
e_gadman_client_geometry_get(E_Gadman_Client *gmc, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
if (x) *x = gmc->x;
if (y) *y = gmc->y;
if (w) *w = gmc->w;
@ -409,6 +426,7 @@ void
e_gadman_client_resize(E_Gadman_Client *gmc, Evas_Coord w, Evas_Coord h)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
if ((gmc->w == w) && (gmc->h == h)) return;
gmc->w = w;
if (gmc->w > gmc->zone->w) gmc->w = gmc->zone->w;
@ -423,6 +441,7 @@ void
e_gadman_client_change_func_set(E_Gadman_Client *gmc, void (*func) (void *data, E_Gadman_Client *gmc, E_Gadman_Change change), void *data)
{
E_OBJECT_CHECK(gmc);
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
gmc->func = func;
gmc->data = data;
}
@ -434,6 +453,7 @@ e_gadman_client_menu_new(E_Gadman_Client *gmc)
E_Menu_Item *mi;
E_OBJECT_CHECK_RETURN(gmc, NULL);
E_OBJECT_TYPE_CHECK_RETURN(gmc, E_GADMAN_CLIENT_TYPE, NULL);
m = e_menu_new();
gmc->menu = m;

View File

@ -42,6 +42,9 @@ typedef struct _E_Gadman_Client E_Gadman_Client;
#ifndef E_GADMAN_H
#define E_GADMAN_H
#define E_GADMAN_TYPE 0xE0b01006
#define E_GADMAN_CLIENT_TYPE 0xE0b01007
struct _E_Gadman
{
E_Object e_obj_inherit;

View File

@ -54,7 +54,7 @@ e_manager_new(Ecore_X_Window root)
Ecore_Event_Handler *h;
if (!ecore_x_window_manage(root)) return NULL;
man = E_OBJECT_ALLOC(E_Manager, _e_manager_free);
man = E_OBJECT_ALLOC(E_Manager, E_MANAGER_TYPE, _e_manager_free);
if (!man) return NULL;
managers = evas_list_append(managers, man);
man->root = root;
@ -72,6 +72,7 @@ void
e_manager_show(E_Manager *man)
{
E_OBJECT_CHECK(man);
E_OBJECT_TYPE_CHECK(man, E_MANAGER_TYPE);
if (man->visible) return;
ecore_x_window_show(man->win);
ecore_x_window_focus(man->win);
@ -83,6 +84,7 @@ void
e_manager_hide(E_Manager *man)
{
E_OBJECT_CHECK(man);
E_OBJECT_TYPE_CHECK(man, E_MANAGER_TYPE);
if (!man->visible) return;
ecore_x_window_hide(man->win);
man->visible = 0;
@ -92,6 +94,7 @@ void
e_manager_move(E_Manager *man, int x, int y)
{
E_OBJECT_CHECK(man);
E_OBJECT_TYPE_CHECK(man, E_MANAGER_TYPE);
if ((x == man->x) && (y == man->y)) return;
man->x = x;
man->y = y;
@ -104,6 +107,7 @@ e_manager_resize(E_Manager *man, int w, int h)
Evas_List *l;
E_OBJECT_CHECK(man);
E_OBJECT_TYPE_CHECK(man, E_MANAGER_TYPE);
if ((w == man->w) && (h == man->h)) return;
man->w = w;
man->h = h;
@ -124,6 +128,7 @@ e_manager_move_resize(E_Manager *man, int x, int y, int w, int h)
Evas_List *l;
E_OBJECT_CHECK(man);
E_OBJECT_TYPE_CHECK(man, E_MANAGER_TYPE);
if ((x == man->x) && (y == man->y) && (w == man->w) && (h == man->h)) return;
man->x = x;
man->y = y;
@ -144,6 +149,7 @@ void
e_manager_raise(E_Manager *man)
{
E_OBJECT_CHECK(man);
E_OBJECT_TYPE_CHECK(man, E_MANAGER_TYPE);
ecore_x_window_raise(man->win);
e_init_show();
}
@ -152,6 +158,7 @@ void
e_manager_lower(E_Manager *man)
{
E_OBJECT_CHECK(man);
E_OBJECT_TYPE_CHECK(man, E_MANAGER_TYPE);
ecore_x_window_lower(man->win);
}

View File

@ -6,6 +6,8 @@ typedef struct _E_Manager E_Manager;
#ifndef E_MANAGER_H
#define E_MANAGER_H
#define E_MANAGER_TYPE 0xE0b01008
struct _E_Manager
{
E_Object e_obj_inherit;

View File

@ -123,7 +123,7 @@ e_menu_new(void)
{
E_Menu *m;
m = E_OBJECT_ALLOC(E_Menu, _e_menu_free);
m = E_OBJECT_ALLOC(E_Menu, E_MENU_TYPE, _e_menu_free);
if (!m) return NULL;
m->cur.w = 1;
m->cur.h = 1;
@ -134,7 +134,9 @@ void
e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir)
{
E_OBJECT_CHECK(m);
E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE);
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
_e_menu_activate_time = 0.0;
_e_menu_activate_internal(m, zone);
m->cur.x = 200;
@ -148,7 +150,9 @@ e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int d
E_Menu_Item *pmi;
E_OBJECT_CHECK(m);
E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE);
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
_e_menu_activate_time = ecore_time_get();
_e_menu_activate_internal(m, zone);
m->cur.x = x;
@ -164,7 +168,9 @@ e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir)
E_Menu_Item *pmi;
E_OBJECT_CHECK(m);
E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE);
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
_e_menu_activate_time = 0.0;
_e_menu_activate_internal(m, zone);
m->cur.x = x;
@ -177,6 +183,7 @@ void
e_menu_deactivate(E_Menu *m)
{
E_OBJECT_CHECK(m);
E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE);
m->cur.visible = 0;
m->active = 0;
if (m->post_deactivate_cb.func)
@ -187,6 +194,7 @@ int
e_menu_freeze(E_Menu *m)
{
E_OBJECT_CHECK_RETURN(m, 0);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MENU_TYPE, 0);
m->frozen++;
return m->frozen;
}
@ -195,6 +203,7 @@ int
e_menu_thaw(E_Menu *m)
{
E_OBJECT_CHECK_RETURN(m, 0);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MENU_TYPE, 0);
m->frozen--;
if (m->frozen < 0) m->frozen = 0;
return m->frozen;
@ -204,6 +213,7 @@ void
e_menu_title_set(E_Menu *m, char *title)
{
E_OBJECT_CHECK(m);
E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE);
/* FIXME: support menu titles */
if ((m->header.title) && (title) && (!strcmp(m->header.title, title)))
return;
@ -221,6 +231,7 @@ void
e_menu_icon_file_set(E_Menu *m, char *icon)
{
E_OBJECT_CHECK(m);
E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE);
/* FIXME: support menu icons */
}
@ -228,6 +239,7 @@ void
e_menu_pre_activate_callback_set(E_Menu *m, void (*func) (void *data, E_Menu *m), void *data)
{
E_OBJECT_CHECK(m);
E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE);
m->pre_activate_cb.func = func;
m->pre_activate_cb.data = data;
}
@ -236,6 +248,7 @@ void
e_menu_post_deactivate_callback_set(E_Menu *m, void (*func) (void *data, E_Menu *m), void *data)
{
E_OBJECT_CHECK(m);
E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE);
m->post_deactivate_cb.func = func;
m->post_deactivate_cb.data = data;
}
@ -246,6 +259,7 @@ e_menu_root_get(E_Menu *m)
E_Menu *ret;
E_OBJECT_CHECK_RETURN(m, NULL);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MENU_TYPE, NULL);
ret = m;
while (ret->parent_item && ret->parent_item->menu)
{
@ -261,7 +275,8 @@ e_menu_item_new(E_Menu *m)
E_Menu_Item *mi;
E_OBJECT_CHECK_RETURN(m, NULL);
mi = E_OBJECT_ALLOC(E_Menu_Item, _e_menu_item_free);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MENU_TYPE, NULL);
mi = E_OBJECT_ALLOC(E_Menu_Item, E_MENU_ITEM_TYPE, _e_menu_item_free);
mi->menu = m;
mi->menu->items = evas_list_append(mi->menu->items, mi);
return mi;
@ -271,6 +286,7 @@ E_Menu_Item *
e_menu_item_nth(E_Menu *m, int n)
{
E_OBJECT_CHECK_RETURN(m, NULL);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MENU_TYPE, NULL);
return (E_Menu_Item *)evas_list_nth(m->items, n);
}
@ -281,6 +297,7 @@ e_menu_item_num_get(E_Menu_Item *mi)
int i;
E_OBJECT_CHECK_RETURN(mi, -1);
E_OBJECT_TYPE_CHECK_RETURN(mi, E_MENU_TYPE, -1);
for (i = 0, l = mi->menu->items; l; l = l->next, i++)
{
E_Menu_Item *mi2;
@ -295,6 +312,7 @@ void
e_menu_item_icon_file_set(E_Menu_Item *mi, char *icon)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (((mi->icon) && (icon) && (!strcmp(icon, mi->icon))) ||
((!mi->icon) && (!icon)))
return;
@ -311,6 +329,7 @@ void
e_menu_item_icon_edje_set(E_Menu_Item *mi, char *icon, char *key)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (((mi->icon) && (icon) && (!strcmp(icon, mi->icon))) ||
((!mi->icon) && (!icon)) ||
((key) && (mi->icon_key) && (!strcmp(key, mi->icon_key))))
@ -329,6 +348,7 @@ void
e_menu_item_label_set(E_Menu_Item *mi, char *label)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (((mi->label) && (label) && (!strcmp(label, mi->label))) ||
((!mi->label) && (!label)))
return;
@ -343,6 +363,7 @@ void
e_menu_item_submenu_set(E_Menu_Item *mi, E_Menu *sub)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (mi->submenu) e_object_unref(E_OBJECT(mi->submenu));
e_object_ref(E_OBJECT(sub));
mi->submenu = sub;
@ -354,6 +375,7 @@ void
e_menu_item_separator_set(E_Menu_Item *mi, int sep)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (((mi->separator) && (sep)) ||
((!mi->separator) && (!sep))) return;
mi->separator = sep;
@ -365,6 +387,7 @@ void
e_menu_item_check_set(E_Menu_Item *mi, int chk)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (((mi->check) && (chk)) ||
((!mi->check) && (!chk))) return;
mi->check = chk;
@ -376,6 +399,7 @@ void
e_menu_item_radio_set(E_Menu_Item *mi, int rad)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (((mi->radio) && (rad)) ||
((!mi->radio) && (!rad))) return;
mi->radio = rad;
@ -387,6 +411,7 @@ void
e_menu_item_radio_group_set(E_Menu_Item *mi, int radg)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (mi->radio_group == radg) return;
mi->radio_group = radg;
mi->changed = 1;
@ -397,6 +422,7 @@ void
e_menu_item_toggle_set(E_Menu_Item *mi, int tog)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (mi->separator) return;
if (tog)
{
@ -452,6 +478,7 @@ int
e_menu_item_toggle_get(E_Menu_Item *mi)
{
E_OBJECT_CHECK_RETURN(mi, 0);
E_OBJECT_TYPE_CHECK_RETURN(mi, E_MENU_ITEM_TYPE, 0);
return mi->toggle;
}
@ -459,6 +486,7 @@ void
e_menu_item_callback_set(E_Menu_Item *mi, void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
mi->cb.func = func;
mi->cb.data = data;
}
@ -467,6 +495,7 @@ void
e_menu_item_active_set(E_Menu_Item *mi, int active)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (mi->separator) return;
if (active)
{

View File

@ -15,6 +15,10 @@ typedef struct _E_Menu_Item E_Menu_Item;
#ifndef E_MENU_H
#define E_MENU_H
#define E_MENU_TYPE 0xE0b01009
#define E_MENU_ITEM_TYPE 0xE0b0100a
struct _E_Menu
{
E_Object e_obj_inherit;

View File

@ -79,7 +79,7 @@ e_module_new(char *name)
int in_list = 0;
if (!name) return NULL;
m = E_OBJECT_ALLOC(E_Module, _e_module_free);
m = E_OBJECT_ALLOC(E_Module, E_MODULE_TYPE, _e_module_free);
m->api = &_e_module_api;
if (name[0] != '/')
{
@ -166,6 +166,7 @@ int
e_module_save(E_Module *m)
{
E_OBJECT_CHECK_RETURN(m, 0);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MODULE_TYPE, 0);
return m->func.save(m);
}
@ -173,6 +174,7 @@ const char *
e_module_dir_get(E_Module *m)
{
E_OBJECT_CHECK_RETURN(m, NULL);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MODULE_TYPE, 0);
return m->dir;
}
@ -182,6 +184,7 @@ e_module_enable(E_Module *m)
Evas_List *l;
E_OBJECT_CHECK_RETURN(m, 0);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MODULE_TYPE, 0);
if (m->enabled) return 0;
m->data = m->func.init(m);
if (m->data) m->enabled = 1;
@ -207,6 +210,7 @@ e_module_disable(E_Module *m)
int ret;
E_OBJECT_CHECK_RETURN(m, 0);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MODULE_TYPE, 0);
if (!m->enabled) return 0;
ret = m->func.shutdown(m);
m->data = NULL;
@ -230,6 +234,7 @@ int
e_module_enabled_get(E_Module *m)
{
E_OBJECT_CHECK_RETURN(m, 0);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MODULE_TYPE, 0);
return m->enabled;
}

View File

@ -9,6 +9,8 @@ typedef struct _E_Module_Api E_Module_Api;
#ifndef E_MODULE_H
#define E_MODULE_H
#define E_MODULE_TYPE 0xE0b0100b
struct _E_Module
{
E_Object e_obj_inherit;

View File

@ -28,13 +28,14 @@ static sigjmp_buf _e_object_segv_buf;
/* externally accessible functions */
void *
e_object_alloc(int size, E_Object_Cleanup_Func cleanup_func)
e_object_alloc(int size, int type, E_Object_Cleanup_Func cleanup_func)
{
E_Object *obj;
obj = calloc(1, size);
if (!obj) return NULL;
obj->magic = E_OBJECT_MAGIC;
obj->type = type;
obj->references = 1;
obj->cleanup_func = cleanup_func;
return obj;

View File

@ -23,21 +23,27 @@
#define E_OBJECT_MAGIC_FREED 0xe0bf6eed
#define E_OBJECT(x) ((E_Object *)(x))
#define E_OBJECT_CLEANUP_FUNC(x) ((E_Object_Cleanup_Func)(x))
#define E_OBJECT_ALLOC(x, cleanup_func) e_object_alloc(sizeof(x), E_OBJECT_CLEANUP_FUNC(cleanup_func))
#define E_OBJECT_ALLOC(x, type, cleanup_func) e_object_alloc(sizeof(x), (type), E_OBJECT_CLEANUP_FUNC(cleanup_func))
#define E_OBJECT_DEL_SET(x, del_func) e_object_del_func_set(E_OBJECT(x), E_OBJECT_CLEANUP_FUNC(del_func))
#ifdef OBJECT_PARANOIA_CHECK
# define E_OBJECT_CHECK(x) {if (e_object_error(E_OBJECT(x))) return;}
# define E_OBJECT_CHECK_RETURN(x, ret) {if (e_object_error(E_OBJECT(x))) return ret;}
# define E_OBJECT_IF_NOT_TYPE(x, type) if (E_OBJECT(x)->type != (type))
# define E_OBJECT_CHECK(x) do {if (e_object_error(E_OBJECT(x))) return;} while (0)
# define E_OBJECT_CHECK_RETURN(x, ret) do {if (e_object_error(E_OBJECT(x))) return ret;} while (0)
# define E_OBJECT_TYPE_CHECK(x, tp) do {if ((E_OBJECT(x)->type) != (tp)) { fprintf(stderr, "Object type check failed in %s\n", __FUNCTION__); return;} } while (0)
# define E_OBJECT_TYPE_CHECK_RETURN(x, tp, ret) do {if ((E_OBJECT(x)->type) != tp) { fprintf(stderr, "Object type check failed in %s\n", __FUNCTION__); return ret;} } while (0)
# define E_OBJECT_IF_NOT_TYPE(x, tp) if (E_OBJECT(x)->type != (tp))
#else
# ifdef OBJECT_CHECK
# define E_OBJECT_CHECK(x) {if ((!E_OBJECT(x)) || (E_OBJECT(x)->magic != E_OBJECT_MAGIC)) return;}
# define E_OBJECT_CHECK_RETURN(x, ret) {if ((!E_OBJECT(x)) || (E_OBJECT(x)->magic != E_OBJECT_MAGIC)) return ret;}
# define E_OBJECT_CHECK(x) do {if ((!E_OBJECT(x)) || (E_OBJECT(x)->magic != E_OBJECT_MAGIC)) return;} while (0)
# define E_OBJECT_CHECK_RETURN(x, ret) do {if ((!E_OBJECT(x)) || (E_OBJECT(x)->magic != E_OBJECT_MAGIC)) return ret;} while (0)
# define E_OBJECT_TYPE_CHECK(x, tp) do {if ((E_OBJECT(x)->type) != (tp)) { fprintf(stderr, "Object type check failed in %s\n", __FUNCTION__); return;} } while (0)
# define E_OBJECT_TYPE_CHECK_RETURN(x, tp, ret) do {if ((E_OBJECT(x)->type) != (tp)) { fprintf(stderr, "Object type check failed in %s\n", __FUNCTION__); return ret;} } while (0)
# define E_OBJECT_IF_NOT_TYPE(x, type) if (E_OBJECT(x)->type != (type))
# else
# define E_OBJECT_CHECK(x)
# define E_OBJECT_CHECK_RETURN(x, ret)
# define E_OBJECT_TYPE_CHECK(x, type)
# define E_OBJECT_TYPE_CHECK_RETURN(x, type, ret)
# define E_OBJECT_IF_NOT_TYPE(x, type)
# endif
#endif
@ -63,7 +69,7 @@ struct _E_Object
unsigned char deleted : 1;
};
EAPI void *e_object_alloc (int size, E_Object_Cleanup_Func cleanup_func);
EAPI void *e_object_alloc (int size, int type, E_Object_Cleanup_Func cleanup_func);
EAPI void e_object_del (E_Object *obj);
EAPI int e_object_del_get (E_Object *obj);
EAPI void e_object_del_func_set (E_Object *obj, E_Object_Cleanup_Func del_func);

View File

@ -14,7 +14,7 @@ e_path_new(void)
{
E_Path *ep;
ep = E_OBJECT_ALLOC(E_Path, _e_path_free);
ep = E_OBJECT_ALLOC(E_Path, E_PATH_TYPE, _e_path_free);
return ep;
}
@ -22,6 +22,7 @@ void
e_path_path_append(E_Path *ep, const char *path)
{
E_OBJECT_CHECK(ep);
E_OBJECT_TYPE_CHECK(ep, E_PATH_TYPE);
if (!path) return;
if (path[0] == '~')
{
@ -53,6 +54,7 @@ void
e_path_path_prepend(E_Path *ep, const char *path)
{
E_OBJECT_CHECK(ep);
E_OBJECT_TYPE_CHECK(ep, E_PATH_TYPE);
if (!path) return;
if (path[0] == '~')
{
@ -86,6 +88,7 @@ e_path_path_remove(E_Path *ep, const char *path)
Evas_List *l;
E_OBJECT_CHECK(ep);
E_OBJECT_TYPE_CHECK(ep, E_PATH_TYPE);
if (!path) return;
if (path[0] == '~')
{
@ -151,6 +154,7 @@ e_path_find(E_Path *ep, const char *file)
char *str;
E_OBJECT_CHECK_RETURN(ep, NULL);
E_OBJECT_TYPE_CHECK_RETURN(ep, E_PATH_TYPE, NULL);
if (!file) return NULL;
_e_path_buf[0] = 0;
str = evas_hash_find(ep->hash, file);
@ -189,6 +193,7 @@ e_path_evas_append(E_Path *ep, Evas *evas)
Evas_List *l;
E_OBJECT_CHECK(ep);
E_OBJECT_TYPE_CHECK(ep, E_PATH_TYPE);
if (!evas) return;
for (l = ep->dir_list; l; l = l->next)
{

View File

@ -6,6 +6,8 @@ typedef struct _E_Path E_Path;
#ifndef E_PATH_H
#define E_PATH_H
#define E_PATH_TYPE 0xE0b0100c
struct _E_Path
{
E_Object e_obj_inherit;

View File

@ -39,7 +39,7 @@ e_zone_new(E_Container *con, int x, int y, int w, int h)
E_Zone *zone;
int i;
zone = E_OBJECT_ALLOC(E_Zone, _e_zone_free);
zone = E_OBJECT_ALLOC(E_Zone, E_ZONE_TYPE, _e_zone_free);
if (!zone) return NULL;
zone->container = con;
@ -105,6 +105,7 @@ void
e_zone_name_set(E_Zone *zone, const char *name)
{
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
if (zone->name)
free(zone->name);
zone->name = strdup(name);
@ -114,6 +115,7 @@ void
e_zone_move(E_Zone *zone, int x, int y)
{
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
if ((x == zone->x) && (y == zone->y)) return;
zone->x = x;
@ -127,6 +129,7 @@ void
e_zone_resize(E_Zone *zone, int w, int h)
{
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
if ((w == zone->w) && (h == zone->h)) return;
zone->w = w;
@ -140,6 +143,7 @@ void
e_zone_move_resize(E_Zone *zone, int x, int y, int w, int h)
{
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
if ((x == zone->x) && (y == zone->y) && (w == zone->w) && (h == zone->h))
return;
@ -164,6 +168,7 @@ e_zone_current_get(E_Container *con)
E_Border *bd;
E_OBJECT_CHECK_RETURN(con, NULL);
E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL);
bd = e_border_focused_get();
if (bd)
{
@ -195,6 +200,7 @@ e_zone_bg_reconfigure(E_Zone *zone)
Evas_Object *o;
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
o = zone->bg_object;
evas_object_hide(o);
edje_object_file_set(o,
@ -207,8 +213,9 @@ e_zone_bg_reconfigure(E_Zone *zone)
Evas_List *
e_zone_clients_list_get(E_Zone *zone)
{
E_OBJECT_CHECK_RETURN(zone, NULL);
return zone->clients;
E_OBJECT_CHECK_RETURN(zone, NULL);
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
return zone->clients;
}

View File

@ -8,6 +8,8 @@ typedef struct _E_Event_Zone_Desk_Count_Set E_Event_Zone_Desk_Count_Set;
#ifndef E_ZONE_H
#define E_ZONE_H
#define E_ZONE_TYPE 0xE0b0100d
struct _E_Zone
{
E_Object e_obj_inherit;