forked from enlightenment/efl
parent
2b8c136ad9
commit
55bc10d2a0
|
@ -433,6 +433,7 @@ extern "C" {
|
||||||
EAPI void *evas_array_get (Evas_Array *array, unsigned int index);
|
EAPI void *evas_array_get (Evas_Array *array, unsigned int index);
|
||||||
EAPI void evas_array_clean (Evas_Array *array);
|
EAPI void evas_array_clean (Evas_Array *array);
|
||||||
EAPI void evas_array_flush (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:
|
/* FIXME: add:
|
||||||
* api to add find, del members by data, size not just string and also
|
* 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);
|
evas_array_flush(array);
|
||||||
free(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