forked from enlightenment/efl
parent
2b8c136ad9
commit
55bc10d2a0
|
@ -426,13 +426,14 @@ extern "C" {
|
|||
EAPI Evas_List *evas_list_sort (Evas_List *list, int size, int(*func)(void*,void*));
|
||||
EAPI int evas_list_alloc_error (void);
|
||||
|
||||
EAPI Evas_Array *evas_array_new (unsigned int step);
|
||||
EAPI void evas_array_setup (Evas_Array *array, unsigned int step);
|
||||
EAPI void evas_array_free (Evas_Array *array);
|
||||
EAPI void evas_array_append (Evas_Array *array, void *data);
|
||||
EAPI void *evas_array_get (Evas_Array *array, unsigned int index);
|
||||
EAPI void evas_array_clean (Evas_Array *array);
|
||||
EAPI void evas_array_flush (Evas_Array *array);
|
||||
EAPI Evas_Array *evas_array_new (unsigned int step);
|
||||
EAPI void evas_array_setup (Evas_Array *array, unsigned int step);
|
||||
EAPI void evas_array_free (Evas_Array *array);
|
||||
EAPI void evas_array_append (Evas_Array *array, void *data);
|
||||
EAPI void *evas_array_get (Evas_Array *array, unsigned int index);
|
||||
EAPI void evas_array_clean (Evas_Array *array);
|
||||
EAPI void evas_array_flush (Evas_Array *array);
|
||||
EAPI void evas_array_remove (Evas_Array *array, Evas_Bool (*keep)(void *data, void *gdata), void *gdata);
|
||||
|
||||
/* FIXME: add:
|
||||
* api to add find, del members by data, size not just string and also
|
||||
|
|
|
@ -73,3 +73,41 @@ evas_array_free(Evas_Array *array)
|
|||
evas_array_flush(array);
|
||||
free(array);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_array_remove(Evas_Array *array, Evas_Bool (*keep)(void *data, void *gdata), void *gdata)
|
||||
{
|
||||
void **tmp;
|
||||
unsigned int total = 0;
|
||||
unsigned int i;
|
||||
|
||||
if (array->total == 0) return ;
|
||||
|
||||
tmp = malloc(sizeof (void*) * array->total);
|
||||
if (!tmp) return ;
|
||||
|
||||
for (i = 0; i < array->count; ++i)
|
||||
{
|
||||
void *data;
|
||||
|
||||
data = _evas_array_get(array, i);
|
||||
|
||||
if (keep(data, gdata))
|
||||
{
|
||||
tmp[total] = data;
|
||||
total++;
|
||||
}
|
||||
}
|
||||
|
||||
free(array->data);
|
||||
|
||||
if (total == 0)
|
||||
{
|
||||
array->data = NULL;
|
||||
free(tmp);
|
||||
}
|
||||
else
|
||||
array->data = tmp;
|
||||
|
||||
array->count = total;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue