Esempio n. 1
0
/**
 * @brief Implementation AtkObject->ref_child callback
 *
 * ATK doc says:\n
 * Gets a reference to the specified accessible child of the object. The
 * accessible children are 0-based so the first accessible child is at index 0,
 * the second at index 1 and so on.
 *
 * @returns an AtkObject representing the specified accessible child of the
 * accessible.
 */
static AtkObject *
eail_naviframe_ref_child(AtkObject *obj, gint i)
{
   Eina_List *list;
   EailNaviframe *naviframe;
   EailWidget *widget;
   Evas_Object *e_object;

   g_return_val_if_fail(EAIL_IS_NAVIFRAME(obj), NULL);

   naviframe = EAIL_NAVIFRAME(obj);
   widget = EAIL_WIDGET(naviframe);

   e_object = eail_widget_get_widget(widget);

   list = elm_naviframe_items_get(e_object);
   int list_count = eina_list_count(list);
   if (i >= list_count)
     {
        eina_list_free(list);
        return NULL;
     }

   AtkObject *child = eail_naviframe_page_new(obj, i);
   atk_object_initialize(child, eina_list_nth(list, i));
   g_object_ref(child);
   naviframe->cached_pages = eina_list_append(naviframe->cached_pages, child);

   eina_list_free(list);

   return child;
}
Esempio n. 2
0
static JSBool
elixir_evas_objects_in_rectangle_get(JSContext *cx, uintN argc, jsval *vp)
{
   JSObject *array;
   Eina_List *list;
   Eina_List *walker;
   Evas *evas;
   int x;
   int y;
   int w;
   int h;
   int include_pass_events_objects;
   int include_hidden_objects;
   int i;
   elixir_value_t val[7];

   if (!elixir_params_check(cx, _evas_four_int_double_bool_params, val, argc, JS_ARGV(cx, vp)))
     return JS_FALSE;

   GET_PRIVATE(cx, val[0].v.obj, evas);
   x = val[1].v.num;
   y = val[2].v.num;
   w = val[3].v.num;
   h = val[4].v.num;
   include_pass_events_objects = val[5].v.bol;
   include_hidden_objects = val[6].v.bol;

   list = evas_objects_in_rectangle_get(evas, x, y, w, h, include_pass_events_objects, include_hidden_objects);
   if (!list)
     {
	JS_SET_RVAL(cx, vp, JSVAL_NULL);
	return JS_TRUE;
     }

   array = elixir_return_array(cx, vp);
   if (!array)
     {
	eina_list_free(list);
	return JS_FALSE;
     }

   for (i = 0, walker = list; walker; walker = eina_list_next(walker), ++i)
     {
	Evas_Object *obj;
	jsval js_obj;

	obj = eina_list_data_get(walker);
	evas_object_to_jsval(cx, obj, &js_obj);
	if (JS_SetElement(cx, array, i, &js_obj) == JS_FALSE)
	  {
	     eina_list_free(list);
	     return JS_FALSE;
	  }
     }

   return JS_TRUE;
}
static void
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
{
   if (cfdata->ilist_feeds_sel)
     eina_list_free(cfdata->ilist_feeds_sel);
   if (cfdata->ilist_selected_feeds_sel)
     eina_list_free(cfdata->ilist_selected_feeds_sel);

   cfdata->ni->config_dialog_content = NULL;
   free(cfdata);
}
int
main(int argc, char **argv)
{
    Eet_File *theme_ef;
    Eina_List *l = NULL;
    Efreet_Icon_Theme *theme;
    int i;

    efreet_cache_update = 0;

    if (!efreet_init()) return -1;

    theme_ef = eet_open(efreet_icon_theme_cache_file(), EET_FILE_MODE_READ);
    if (!theme_ef) return -1;

    if (argc > 1)
    {
        for (i = 1; i < argc; i++)
        {
            theme = eet_data_read(theme_ef, efreet_icon_theme_edd(EINA_FALSE), argv[i]);
            if (theme) l = eina_list_append(l, theme);
        }
    }
    else
    {
        char **keys;
        int num;

        keys = eet_list(theme_ef, "*", &num);
        if (keys)
        {
            for (i = 0; i < num; i++)
            {
                theme = eet_data_read(theme_ef, efreet_icon_theme_edd(EINA_FALSE), keys[i]);
                if (theme) l = eina_list_append(l, theme);
            }
            free(keys);
        }
    }

    EINA_LIST_FREE(l, theme)
    {
        void *data;

        dump(theme);

        /* free theme */
        eina_list_free(theme->paths);
        eina_list_free(theme->inherits);
        EINA_LIST_FREE(theme->directories, data)
        free(data);
        free(theme);
    }
Esempio n. 5
0
EINTERN int
e_dnd_shutdown(void)
{
   E_FREE_LIST(_drag_list, e_object_del);

   _active_handlers = eina_list_free(_active_handlers);
   E_FREE_LIST(_drop_handlers, e_drop_handler_del);

   E_FREE_LIST(_event_handlers, ecore_event_handler_del);

   eina_hash_free(_drop_win_hash);

   eina_hash_free(_drop_handlers_responsives);

   eina_stringshare_del(_type_text_uri_list);
   eina_stringshare_del(_type_xds);
   eina_stringshare_del(_type_text_x_moz_url);
   eina_stringshare_del(_type_enlightenment_x_file);
   _type_text_uri_list = NULL;
   _type_xds = NULL;
   _type_text_x_moz_url = NULL;
   _type_enlightenment_x_file = NULL;
   _text_atom = 0;

   return 1;
}
Esempio n. 6
0
EINTERN int
e_thumb_shutdown(void)
{
   _e_thumb_thumbnailers_kill_cancel();
   _e_thumb_cb_kill(NULL);
   if (_exe_del_handler) ecore_event_handler_del(_exe_del_handler);
   _exe_del_handler = NULL;
   _thumbnailers = eina_list_free(_thumbnailers);
   E_FREE_LIST(_thumbnailers_exe, ecore_exe_free);
   _thumb_queue = eina_list_free(_thumb_queue);
   _objid = 0;
   eina_hash_free(_thumbs);
   _thumbs = NULL;
   _pending = 0;
   return 1;
}
Esempio n. 7
0
EAPI int
ecore_shutdown(void)
{
   int (*_ecore_shutdown)(void) =
      dlsym(RTLD_NEXT, "ecore_shutdown");

   if (_hook_setting)
     {
        if (vr_list && _hook_setting->recording)
          write_events(_hook_setting->file_name, vr_list);

        tsuite_evas_hook_reset();

        free(_hook_setting);
        _hook_setting = NULL;
     }

   if (ts.td)
     free(ts.td);

   evas_list = eina_list_free(evas_list);

   memset(&ts, 0, sizeof(Tsuite_Data));
   return _ecore_shutdown();
}
static void
_cb_feed_change(void *data, Evas_Object *obj)
{
   E_Config_Dialog_Data *cfdata;
   E_Ilist_Item *item;
   News_Feed *feed;
   Eina_List *sel, *items, *l;
   int i;

   cfdata = data;

   if (cfdata->ilist_feeds_sel) eina_list_free(cfdata->ilist_feeds_sel);
   sel = NULL;
   items = e_widget_ilist_items_get(cfdata->ilist_feeds);
   for (l=items, i=0; l; l=eina_list_next(l), i++)
     {
        item = l->data;
        if (item->header) continue;
        if (!item->selected) continue;
        feed = e_widget_ilist_nth_data_get(cfdata->ilist_feeds, i);
        sel = eina_list_append(sel, feed);
     }
   cfdata->ilist_feeds_sel = sel;

   if (e_widget_ilist_selected_get(cfdata->ilist_feeds) >= 0)
     {
        if (cfdata->button_add)
          e_widget_disabled_set(cfdata->button_add, 0);
     }
   else
     {
        if (cfdata->button_add)
          e_widget_disabled_set(cfdata->button_add, 1);
     }
}
Esempio n. 9
0
void
theme_text_clear()
{
  if (messages)
    {
      Eina_List *l = NULL;
      Exquisite_Text_Line *t = NULL;
   
      for(l = messages; l; l = l->next)
        {
          t = l->data;
          eina_stringshare_del(t->message);
          if(t->status_text) eina_stringshare_del(t->status_text);
          free(l->data);
        }
      
      eina_list_free(messages);
      messages = NULL;
    }  

   if (edje_object_part_exists(o_bg, "textarea") &&
       edje_object_part_exists(o_bg, "statusarea"))
     {
	edje_object_signal_emit(o_bg, "exquisite", "text_clear");
	edje_object_part_text_set(o_bg, "textarea", "");
	edje_object_part_text_set(o_bg, "statusarea", "");
     }
}
Esempio n. 10
0
void
etam_packets_free(Etam_Packets *packets)
{
   unsigned int i;
   unsigned short j;

   if (EINA_REFCOUNT_GET(packets))
     return ;

   eina_rwlock_free(&packets->lock);

   switch (packets->type)
     {
      case ETAM_T_BOOLEAN:
         for (i = 0; i < packets->packets_count; ++i)
           free(packets->u.boolean[i].rle_value);
         free(packets->u.boolean);
         break;
      case ETAM_T_LONG_LONG:
         for (i = 0; i < packets->packets_count; ++i)
           free(packets->u.long_long[i]);
         free(packets->u.long_long);
         break;
      case ETAM_T_STRING:
         /* It is assumed that all string are coming from Eet dictionnary, none have been directly inserted */
         for (i = 0; i < packets->packets_count; ++i)
           free(packets->u.string);
         free(packets->u.string);
         break;
      case ETAM_G_STRINGS:
         for (i = 0; i < packets->packets_count; ++i)
	   if (packets->u.strings[i])
	     for (j = 0; j < 1024; ++j)
	       eina_list_free(packets->u.strings[i]->values[j]);
         free(packets->u.strings);
         break;

      case ETAM_T_NONE:
      case ETAM_T_CHAR:
      case ETAM_T_UCHAR:
      case ETAM_T_SHORT:
      case ETAM_T_USHORT:
      case ETAM_T_INT:
      case ETAM_T_UINT:
      case ETAM_T_ULONG_LONG:
      case ETAM_T_FLOAT:
      case ETAM_T_DOUBLE:
      case ETAM_T_F32P32:
      case ETAM_T_F16P16:
      case ETAM_T_F8P24:
      case ETAM_T_NULL:
      case ETAM_T_RECTANGLE:
      case ETAM_G_RECTANGLES:
      case ETAM_G_TAGGED_RECTANGLES:
      default:
         fprintf(stderr, "Destruction of packet type %i impossible\n", packets->type);
     }

   free(packets);
}
Esempio n. 11
0
PREFIX value ml_elm_naviframe_items_get(value v_obj)
{
        Eina_List* list = elm_naviframe_items_get((Evas_Object*) v_obj);
        value v_list = copy_Eina_List_Elm_Object_Item(list);
        eina_list_free(list);
        return v_list;
}
void page_destroy(Evas_Object *scroller, Evas_Object *page)
{
	Evas_Object *mapbuf;
	Evas_Object *bg;
	Evas_Object *item;
	Evas_Object *box;
	Evas_Object *index;
	Evas_Object *tab;
	Eina_List *pending_list;

	register unsigned int i;
	int page_max_app;
	unsigned int count;

	evas_object_event_callback_del(page, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints_cb);

	page_max_app = (int) evas_object_data_get(scroller, "page_max_app");
	for (i = 0; i < page_max_app; i ++) {
		item = page_unpack_item_at(page, i);
		if (!item) continue;

		item_destroy(item);
	}

	pending_list = evas_object_data_get(page, "pending,list");
	eina_list_free(pending_list);

	bg = evas_object_data_get(page, "bg");
	evas_object_del(bg);

	box = evas_object_data_get(scroller, "box");
	ret_if(NULL == box);

	mapbuf = mapbuf_get_mapbuf(page);
	if (mapbuf) {
		elm_box_unpack(box, mapbuf);
		mapbuf_unbind(mapbuf);
	} else {
		elm_box_unpack(box, page);
	}

	index = evas_object_data_get(scroller, "index");
	if (index) {
		tab = evas_object_data_get(scroller, "tab");
		count = page_scroller_count_page(scroller);
		index_update(tab, index, count);
	}

	evas_object_data_del(page, "win");
	evas_object_data_del(page, "layout");
	evas_object_data_del(page, "controlbar");
	evas_object_data_del(page, "tab");
	evas_object_data_del(page, "scroller");
	evas_object_data_del(page, "page_edje");
	evas_object_data_del(page, "page_max_app");
	evas_object_data_del(page, "bg");
	evas_object_data_del(page, "pending,list");
	evas_object_data_del(page, "dirty");
	layout_unload_edj(page);
}
Esempio n. 13
0
/**
 * @brief Get index of object in parent object
 *
 * @param obj object instance
 *
 * @returns object index
 */
static gint
eail_naviframe_page_index_in_parent_get(AtkObject *obj)
{
   EailNaviframePage *page = NULL;
   Eina_List *list = NULL;
   gint pos = -1, i = 0;

   if (!EAIL_IS_NAVIFRAME_PAGE(obj))
     {
        ERR("Not a naviframe page");
        return pos;
     }

   page = EAIL_NAVIFRAME_PAGE(obj);
   if (!page->naviframe) return pos;

   list = elm_naviframe_items_get(page->naviframe);
   for (i = 0; i < eina_list_count(list); ++i)
     {
        if (page->page == eina_list_nth(list, i))
          {
             pos = i;
             break;
          }
     }

   eina_list_free(list);
   return pos;
}
Esempio n. 14
0
static void
_cpuclock_status_free(Cpu_Status *s)
{
   Eina_List *l;

   if (eina_list_count(s->frequencies)) eina_list_free(s->frequencies);
   if (s->governors)
     {
        for (l = s->governors; l; l = l->next)
          E_FREE(l->data);
        eina_list_free(s->governors);
     }
   E_FREE(s->cur_governor);
   if (s->orig_governor) eina_stringshare_del(s->orig_governor);
   E_FREE(s);
}
Esempio n. 15
0
OD_Window      *
od_wm_window_prev_by_window_class_get(const char *name)
{
    Eina_List      *l = NULL;
    Eina_List      *tmp = NULL;
    Eina_List      *last = NULL;
    OD_Window      *win = NULL;
    OD_Window      *result = NULL;
    OD_Window      *current = NULL;

    if ((current = evas_hash_find(clients_current, name))) {
        clients_current = evas_hash_del(clients_current, name, current);
        for (l = clients; l; l = l->next) {
            if ((win = l->data)) {
                if (od_wm_iconified(win->id))
                    continue;
                if (win->applnk && win->applnk->data.applnk.winclass) {
                    if (!strcmp(name, win->applnk->data.applnk.winclass)) {
                        tmp = eina_list_append(tmp, win);
                    }
                }
            }
        }
        for (l = tmp; l; l = l->next) {
#if 0
            fprintf(stderr, "%8x %8x\n", ((OD_Window *) l->data)->id, current->id);
#endif
            if ((l->data == current) && (l->prev)) {
                result = l->prev->data;
            }
        }

        if (tmp) {
            last = eina_list_last(tmp);
            if (!result && last)
                result = last->data;
        }
        eina_list_free(tmp);
    } else {
        for (l = clients; l; l = l->next) {
            if ((win = l->data)) {
                if (win->applnk && win->applnk->data.applnk.winclass) {
                    if (od_wm_iconified(win->id))
                        continue;
                    if (!strcmp(name, win->applnk->data.applnk.winclass)) {
                        result = win;
#if 0
                        fprintf(stderr, "%s(%8x)\n", name, win->id);
#endif
                        break;
                    }
                }
            }
        }
    }
    if (result) {
        clients_current = evas_hash_add(clients_current, name, result);
    }
    return (result);
}
Esempio n. 16
0
/* local subsystem functions */
static void
_e_xinerama_clean(void)
{
   E_FREE_LIST(all_screens, free);
   chosen_screens = eina_list_free(chosen_screens);
   E_FREE_LIST(fake_screens, free);
}
Esempio n. 17
0
/**
 * @brief Free an #Azy_Client
 *
 * This function frees a client and ALL associated data.  If called
 * on a connected client, azy_client_close will be called and then the client
 * will be freed.
 * @param client The client (NOT NULL)
 */
void
azy_client_free(Azy_Client *client)
{
   DBG("(client=%p)", client);

   if (!AZY_MAGIC_CHECK(client, AZY_MAGIC_CLIENT))
     {
        AZY_MAGIC_FAIL(client, AZY_MAGIC_CLIENT);
        return;
     }

   if (client->connected)
     azy_client_close(client);
   AZY_MAGIC_SET(client, AZY_MAGIC_NONE);
   if (client->addr)
     eina_stringshare_del(client->addr);
   if (client->session_id)
     eina_stringshare_del(client->session_id);
   if (client->add)
     ecore_event_handler_del(client->add);
   if (client->del)
     ecore_event_handler_del(client->del);
   if (client->upgrade)
     ecore_event_handler_del(client->upgrade);
   if (client->callbacks)
     eina_hash_free(client->callbacks);
   if (client->free_callbacks)
     eina_hash_free(client->free_callbacks);
   if (client->conns)
     client->conns = eina_list_free(client->conns);
   free(client);
}
Esempio n. 18
0
void
on_btn_save_clicked(Etk_Object *object, void *data)
{
  Cover_Entry *ce;
  Eet_File *ef;
  Eina_List *list;
  char *cover_file;

  list = cover_changed;
  asprintf(&cover_file, "%s/.e/apps/emphasis/cover.eet", getenv("HOME"));
  ef = eet_open(cover_file, EET_FILE_MODE_READ_WRITE);
  if (!ef)
    {
      fprintf(stderr, "can't open %s\n", cover_file);
      free(cover_file);
      return;
    }

  while (cover_changed)
    {
      ce = eina_list_data_get(cover_changed);
      eet_write(ef, ce->key, ce->path, strlen(ce->path)+1, 0);
      eet_clearcache();
      free(ce->key);
      free(ce->path);
      free(ce);
      cover_changed = eina_list_next(cover_changed);
    }
  eina_list_free(list);
  eet_close(ef);
  free(cover_file);
}
Esempio n. 19
0
EAPI int
ecore_audio_shutdown(void)
{
   DBG("Ecore_Audio shutdown");
   if (--_ecore_audio_init_count != 0)
     return _ecore_audio_init_count;

#ifdef HAVE_SNDFILE
   ecore_audio_sndfile_lib_unload();
#endif /* HAVE_SNDFILE */
#ifdef HAVE_PULSE
   ecore_audio_pulse_lib_unload();
#endif /* HAVE_PULSE */

   /* FIXME: Shutdown all the inputs and outputs first */
   eina_log_timing(_ecore_audio_log_dom,
		   EINA_LOG_STATE_START,
		   EINA_LOG_STATE_SHUTDOWN);


   eina_list_free(ecore_audio_modules);

   eina_log_domain_unregister(_ecore_audio_log_dom);
   _ecore_audio_log_dom = -1;

   efl_object_shutdown();
   ecore_shutdown();

   return _ecore_audio_init_count;
}
Esempio n. 20
0
E_API void
e_xinerama_screens_set(Eina_List *screens)
{
   E_FREE_LIST(all_screens, free);
   chosen_screens = eina_list_free(chosen_screens);
   all_screens = screens;
   _e_xinerama_update();
}
Esempio n. 21
0
static JSBool
elixir_evas_object_smart_members_get(JSContext *cx, uintN argc, jsval *vp)
{
   Evas_Object *know = NULL;
   Eina_List *list;
   Eina_List *head;
   JSObject *array;
   int i;
   elixir_value_t val[1];

   if (!elixir_params_check(cx, _evas_object_smart_params, val, argc, JS_ARGV(cx, vp)))
     return JS_FALSE;

   GET_PRIVATE(cx, val[0].v.obj, know);

   list = (Eina_List*) evas_object_smart_members_get(know);
   if (!list)
     {
	JS_SET_RVAL(cx, vp, JSVAL_NULL);
	return JS_TRUE;
     }

   array = elixir_return_array(cx, vp);
   if (!array)
     {
	eina_list_free(list);
	return JS_FALSE;
     }

   for (i = 0, head = list; list; list = eina_list_next(list), ++i)
     {
	Evas_Object *obj;
	jsval js_obj;

	obj = eina_list_data_get(list);

	evas_object_to_jsval(cx, obj, &js_obj);
	if (JS_SetElement(cx, array, i, &js_obj) == JS_FALSE)
	  return JS_FALSE;
     }

   eina_list_free(head);

   return JS_TRUE;
}
Esempio n. 22
0
/**
 * @brief Get number of created widgets
 *
 * @param obj EailGengrid instance
 *
 * @returns number of created widgets
 */
static gint
eail_gengrid_n_items_get(AtkObject *obj)
{
   gint n_items;
   Eina_List *items = eail_gengrid_items_get(EAIL_GENGRID(obj));
   n_items  = eina_list_count(items);
   eina_list_free(items);

   return n_items;
}
Esempio n. 23
0
void
_view_free(View_Common *common)
{
   if (common->monitor) efl_del(common->monitor);
   common->monitor = NULL;
   if (common->selection) eina_list_free(common->selection);
   common->selection = NULL;
   if (common->files) eina_hash_free(common->files);
   common->files = NULL;
}
static void
_e_wid_del_hook(Evas_Object *obj)
{
   E_Widget_Data *wd;
   int i = 0;

   wd = e_widget_data_get(obj);
   if (!wd) return;

   for (i = 0; i < E_COLOR_COMPONENT_MAX; i++)
     E_FREE(wd->values[i]);

   E_FREE(wd->values);

   eina_list_free(wd->sliders);
   eina_list_free(wd->entries);

   E_FREE(wd);
}
Esempio n. 25
0
/**
 * @brief Destructor for naviframe object
 */
static void
eail_naviframe_finalize(GObject *obj)
{
   EailNaviframe *naviframe = EAIL_NAVIFRAME(obj);

   eina_list_free(naviframe->cached_pages);
   if (naviframe->click_title_description)
     free(naviframe->click_title_description);

   G_OBJECT_CLASS(eail_naviframe_parent_class)->finalize(obj);
}
Esempio n. 26
0
static void
_sd_del(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
    Smart_Data *sd = data;

    ENNA_OBJECT_DEL(sd->controls);
    ENNA_OBJECT_DEL(sd->slideshow);
    eina_list_free(sd->items);
    enna_input_listener_del(sd->listener);
    ENNA_FREE(sd);
}
Esempio n. 27
0
int
main(int argc, char **argv)
{
   (void)argc;
   (void)argv;
   Eina_List *list = NULL, *r_list;
   Eina_List *l;
   Eina_Iterator *itr;
   void *list_data;

   eina_init();

   list = eina_list_append(list, "caprica");
   list = eina_list_append(list, "sagitarius");
   list = eina_list_append(list, "aerilon");
   list = eina_list_append(list, "gemenon");

   list = eina_list_promote_list(list, eina_list_nth_list(list, 2));
   list = eina_list_demote_list(list, eina_list_nth_list(list, 2));

   list = eina_list_remove(list, "sagitarius");

   l = eina_list_data_find_list(list, "aerilon");
   eina_list_data_set(l, "aquarius");

   printf("size: %d\n", eina_list_count(list));

   r_list = eina_list_reverse_clone(list);

   itr = eina_list_iterator_new(r_list);
   EINA_ITERATOR_FOREACH(itr, list_data)
     printf("%s\n", (char*)list_data);
   eina_iterator_free(itr);

   eina_list_free(list);
   eina_list_free(r_list);

   eina_shutdown();

   return 0;
}
Esempio n. 28
0
/**
 * @internal
 * @return Returns no value
 * @brief Shuts down the icon system
 */
void
efreet_icon_shutdown(void)
{
    IF_RELEASE(efreet_icon_user_dir);
    IF_RELEASE(efreet_icon_deprecated_user_dir);

    IF_FREE_LIST(efreet_icon_extensions, eina_stringshare_del);
    efreet_extra_icon_dirs = eina_list_free(efreet_extra_icon_dirs);

    eina_log_domain_unregister(_efreet_icon_log_dom);
    _efreet_icon_log_dom = -1;
}
Esempio n. 29
0
//Free the loaded subtitles
void eclair_subtitles_free(Eclair_Subtitles *subtitles)
{
   Eina_List *l;
   Eclair_Subtitle *sub;

   if (!subtitles)
      return;

   for (l = subtitles->subtitles; l && (sub = l->data); l = l->next)
      free(sub->subtitle);
   eina_list_free(subtitles->subtitles);
   subtitles->subtitles = NULL;
}
Esempio n. 30
0
/**
 * @brief Implementation AtkObject->get_n_children callback
 *
 * ATK doc says:\n
 * Gets the number of accessible children of the accessible.
 *
 * @returns an integer representing the number of accessible children of
 * the accessible
 */
static gint
eail_genlist_get_n_children(AtkObject *obj)
{
    gint n_items;
    Eina_List *items;

    items = eail_genlist_get_items(EAIL_GENLIST(obj));
    n_items = eina_list_count(items);

    eina_list_free(items);

    return n_items;
}