After benchmarking, providing inline does impact performance of list and array user.
SVN revision: 35406
This commit is contained in:
parent
5cfb71ff72
commit
ce23f3c2a9
|
@ -17,7 +17,8 @@ eina_array.h \
|
||||||
eina_counter.h \
|
eina_counter.h \
|
||||||
eina_inline_array.x \
|
eina_inline_array.x \
|
||||||
eina_magic.h \
|
eina_magic.h \
|
||||||
eina_stringshare.h
|
eina_stringshare.h \
|
||||||
|
eina_inline_list.x
|
||||||
|
|
||||||
installed_mainheaderdir = $(prefix)/include/eina-@VMAJ@
|
installed_mainheaderdir = $(prefix)/include/eina-@VMAJ@
|
||||||
installed_mainheader_DATA = Eina.h
|
installed_mainheader_DATA = Eina.h
|
||||||
|
|
|
@ -32,19 +32,26 @@ struct _Eina_Array /** An array of data */
|
||||||
unsigned int step; /**< How much must we grow the vector When it is full */
|
unsigned int step; /**< How much must we grow the vector When it is full */
|
||||||
};
|
};
|
||||||
|
|
||||||
EAPI int eina_array_init (void);
|
EAPI int eina_array_init (void);
|
||||||
EAPI int eina_array_shutdown (void);
|
EAPI int eina_array_shutdown (void);
|
||||||
|
|
||||||
EAPI Eina_Array *eina_array_new (unsigned int step);
|
EAPI Eina_Array * eina_array_new (unsigned int step);
|
||||||
EAPI void eina_array_setup (Eina_Array *array, unsigned int step);
|
EAPI void eina_array_setup (Eina_Array *array, unsigned int step);
|
||||||
EAPI void eina_array_free (Eina_Array *array);
|
EAPI void eina_array_free (Eina_Array *array);
|
||||||
EAPI void eina_array_append (Eina_Array *array, void *data);
|
EAPI void eina_array_clean (Eina_Array *array);
|
||||||
EAPI void *eina_array_get (Eina_Array *array, unsigned int index);
|
EAPI void eina_array_flush (Eina_Array *array);
|
||||||
EAPI void eina_array_clean (Eina_Array *array);
|
EAPI void eina_array_remove (Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata), void *gdata);
|
||||||
EAPI void eina_array_flush (Eina_Array *array);
|
|
||||||
EAPI void eina_array_remove (Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata), void *gdata);
|
|
||||||
|
|
||||||
#define EINA_ARRAY_ITER_NEXT(array, index, item) for ((index) = 0, (item) = ((array) && (array)->count > 0) ? _eina_array_get((array), (index)) : NULL; (index) < (array)->count; ++(index), (item) = _eina_array_get((array), (index)))
|
static inline void * eina_array_get (Eina_Array *array, unsigned int index);
|
||||||
|
static inline void eina_array_append (Eina_Array *array, void *data);
|
||||||
|
static inline unsigned int eina_array_count (Eina_Array *array);
|
||||||
|
|
||||||
|
#define EINA_ARRAY_ITER_NEXT(array, index, item) \
|
||||||
|
for ((index) = 0; (index) < eina_array_count(array); ++(index)) \
|
||||||
|
{ \
|
||||||
|
(item) = eina_array_get((array), (index));
|
||||||
|
|
||||||
|
#define EINA_ARRAY_ITER_END }
|
||||||
|
|
||||||
#include "eina_inline_array.x"
|
#include "eina_inline_array.x"
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
#ifndef EINA_LIST_H_
|
#ifndef EINA_LIST_H_
|
||||||
#define EINA_LIST_H_
|
#define EINA_LIST_H_
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "eina_types.h"
|
#include "eina_types.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,6 +29,21 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct _Eina_List Eina_List;
|
typedef struct _Eina_List Eina_List;
|
||||||
|
typedef struct _Eina_List_Accounting Eina_List_Accounting;
|
||||||
|
|
||||||
|
struct _Eina_List /** A linked list node */
|
||||||
|
{
|
||||||
|
void *data; /**< Pointer to list element payload */
|
||||||
|
Eina_List *next; /**< Next member in the list */
|
||||||
|
Eina_List *prev; /**< Previous member in the list */
|
||||||
|
struct _Eina_List_Accounting *accounting; /**< Private list accounting info - don't touch */
|
||||||
|
};
|
||||||
|
struct _Eina_List_Accounting
|
||||||
|
{
|
||||||
|
Eina_List *last;
|
||||||
|
int count;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
EAPI int eina_list_init(void);
|
EAPI int eina_list_init(void);
|
||||||
EAPI int eina_list_shutdown(void);
|
EAPI int eina_list_shutdown(void);
|
||||||
|
@ -43,17 +60,18 @@ EAPI Eina_List *eina_list_promote_list (Eina_List *list, Eina_List *move_list);
|
||||||
EAPI void *eina_list_find(const Eina_List *list, const void *data);
|
EAPI void *eina_list_find(const Eina_List *list, const void *data);
|
||||||
EAPI Eina_List *eina_list_find_list (const Eina_List *list, const void *data);
|
EAPI Eina_List *eina_list_find_list (const Eina_List *list, const void *data);
|
||||||
EAPI Eina_List *eina_list_free (Eina_List *list);
|
EAPI Eina_List *eina_list_free (Eina_List *list);
|
||||||
EAPI Eina_List *eina_list_last (const Eina_List *list);
|
|
||||||
EAPI Eina_List *eina_list_next (const Eina_List *list);
|
|
||||||
EAPI Eina_List *eina_list_prev (const Eina_List *list);
|
|
||||||
EAPI void *eina_list_data(const Eina_List *list);
|
|
||||||
EAPI int eina_list_count(const Eina_List *list);
|
|
||||||
EAPI void *eina_list_nth(const Eina_List *list, int n);
|
EAPI void *eina_list_nth(const Eina_List *list, int n);
|
||||||
EAPI Eina_List *eina_list_nth_list (const Eina_List *list, int n);
|
EAPI Eina_List *eina_list_nth_list (const Eina_List *list, int n);
|
||||||
EAPI Eina_List *eina_list_reverse (Eina_List *list);
|
EAPI Eina_List *eina_list_reverse (Eina_List *list);
|
||||||
EAPI Eina_List *eina_list_sort (Eina_List *list, int size, int(*func)(void*,void*));
|
EAPI Eina_List *eina_list_sort (Eina_List *list, int size, int(*func)(void*,void*));
|
||||||
|
|
||||||
|
static inline Eina_List *eina_list_last (const Eina_List *list);
|
||||||
|
static inline Eina_List *eina_list_next (const Eina_List *list);
|
||||||
|
static inline Eina_List *eina_list_prev (const Eina_List *list);
|
||||||
|
static inline void *eina_list_data(const Eina_List *list);
|
||||||
|
static inline int eina_list_count(const Eina_List *list);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
#include "eina_inline_list.x"
|
||||||
|
|
||||||
#endif /* EINA_LIST_H_ */
|
#endif /* EINA_LIST_H_ */
|
||||||
|
|
|
@ -43,18 +43,6 @@ eina_array_shutdown(void)
|
||||||
return eina_error_shutdown();
|
return eina_error_shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
|
||||||
eina_array_append(Eina_Array *array, void *data)
|
|
||||||
{
|
|
||||||
_eina_array_append(array, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void *
|
|
||||||
eina_array_get(Eina_Array *array, unsigned int index)
|
|
||||||
{
|
|
||||||
return _eina_array_get(array, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
eina_array_clean(Eina_Array *array)
|
eina_array_clean(Eina_Array *array)
|
||||||
{
|
{
|
||||||
|
@ -119,7 +107,7 @@ eina_array_remove(Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata),
|
||||||
|
|
||||||
for (i = 0; i < array->count; ++i)
|
for (i = 0; i < array->count; ++i)
|
||||||
{
|
{
|
||||||
data = _eina_array_get(array, i);
|
data = eina_array_get(array, i);
|
||||||
|
|
||||||
if (keep(data, gdata) == EINA_FALSE) break;
|
if (keep(data, gdata) == EINA_FALSE) break;
|
||||||
}
|
}
|
||||||
|
@ -127,7 +115,7 @@ eina_array_remove(Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata),
|
||||||
if (i < array->count) ++i;
|
if (i < array->count) ++i;
|
||||||
for (; i < array->count; ++i)
|
for (; i < array->count; ++i)
|
||||||
{
|
{
|
||||||
data = _eina_array_get(array, i);
|
data = eina_array_get(array, i);
|
||||||
|
|
||||||
if (keep(data, gdata) == EINA_TRUE) break;
|
if (keep(data, gdata) == EINA_TRUE) break;
|
||||||
}
|
}
|
||||||
|
@ -164,7 +152,7 @@ eina_array_remove(Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata),
|
||||||
|
|
||||||
for (; i < array->count; ++i)
|
for (; i < array->count; ++i)
|
||||||
{
|
{
|
||||||
data = _eina_array_get(array, i);
|
data = eina_array_get(array, i);
|
||||||
|
|
||||||
if (keep(data, gdata))
|
if (keep(data, gdata))
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,21 +65,6 @@
|
||||||
/*============================================================================*
|
/*============================================================================*
|
||||||
* Local *
|
* Local *
|
||||||
*============================================================================*/
|
*============================================================================*/
|
||||||
struct _Eina_List /** A linked list node */
|
|
||||||
{
|
|
||||||
void *data; /**< Pointer to list element payload */
|
|
||||||
Eina_List *next; /**< Next member in the list */
|
|
||||||
Eina_List *prev; /**< Previous member in the list */
|
|
||||||
struct _Eina_List_Accounting *accounting; /**< Private list accounting info - don't touch */
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct _Eina_List_Accounting Eina_List_Accounting;
|
|
||||||
struct _Eina_List_Accounting
|
|
||||||
{
|
|
||||||
Eina_List *last;
|
|
||||||
int count;
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline Eina_List_Accounting*
|
static inline Eina_List_Accounting*
|
||||||
_eina_list_mempool_accounting_new(__UNUSED__ Eina_List *list)
|
_eina_list_mempool_accounting_new(__UNUSED__ Eina_List *list)
|
||||||
{
|
{
|
||||||
|
@ -604,12 +589,7 @@ eina_list_promote_list(Eina_List *list, Eina_List *move_list)
|
||||||
EAPI void *
|
EAPI void *
|
||||||
eina_list_find(const Eina_List *list, const void *data)
|
eina_list_find(const Eina_List *list, const void *data)
|
||||||
{
|
{
|
||||||
const Eina_List *l;
|
if (eina_list_find_list(list, data)) return data;
|
||||||
|
|
||||||
for (l = list; l; l = l->next)
|
|
||||||
{
|
|
||||||
if (l->data == data) return (void *)data;
|
|
||||||
}
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -712,12 +692,7 @@ eina_list_free(Eina_List *list)
|
||||||
* @endcode
|
* @endcode
|
||||||
* @ingroup Eina_List_Traverse_Group
|
* @ingroup Eina_List_Traverse_Group
|
||||||
*/
|
*/
|
||||||
EAPI Eina_List *
|
static inline Eina_List *eina_list_last(const Eina_List *list);
|
||||||
eina_list_last(const Eina_List *list)
|
|
||||||
{
|
|
||||||
if (!list) return NULL;
|
|
||||||
return list->accounting->last;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the next list node after the specified list node
|
* Get the next list node after the specified list node
|
||||||
|
@ -740,12 +715,7 @@ eina_list_last(const Eina_List *list)
|
||||||
* @endcode
|
* @endcode
|
||||||
* @ingroup Eina_List_Traverse_Group
|
* @ingroup Eina_List_Traverse_Group
|
||||||
*/
|
*/
|
||||||
EAPI Eina_List *
|
static inline Eina_List *eina_list_next(const Eina_List *list);
|
||||||
eina_list_next(const Eina_List *list)
|
|
||||||
{
|
|
||||||
if (!list) return NULL;
|
|
||||||
return list->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the previous list node before the specified list node
|
* Get the previous list node before the specified list node
|
||||||
|
@ -769,12 +739,7 @@ eina_list_next(const Eina_List *list)
|
||||||
* @endcode
|
* @endcode
|
||||||
* @ingroup Eina_List_Traverse_Group
|
* @ingroup Eina_List_Traverse_Group
|
||||||
*/
|
*/
|
||||||
EAPI Eina_List *
|
static inline Eina_List *eina_list_prev(const Eina_List *list);
|
||||||
eina_list_prev(const Eina_List *list)
|
|
||||||
{
|
|
||||||
if (!list) return NULL;
|
|
||||||
return list->prev;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @defgroup Eina_List_General_Group Linked List General Functions
|
* @defgroup Eina_List_General_Group Linked List General Functions
|
||||||
|
@ -803,12 +768,7 @@ eina_list_prev(const Eina_List *list)
|
||||||
* @endcode
|
* @endcode
|
||||||
* @ingroup Eina_List_General_Group
|
* @ingroup Eina_List_General_Group
|
||||||
*/
|
*/
|
||||||
EAPI void *
|
static inline void *eina_list_data(const Eina_List *list);
|
||||||
eina_list_data(const Eina_List *list)
|
|
||||||
{
|
|
||||||
if (!list) return NULL;
|
|
||||||
return list->data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the count of the number of items in a list
|
* Get the count of the number of items in a list
|
||||||
|
@ -829,12 +789,7 @@ eina_list_data(const Eina_List *list)
|
||||||
* @endcode
|
* @endcode
|
||||||
* @ingroup Eina_List_General_Group
|
* @ingroup Eina_List_General_Group
|
||||||
*/
|
*/
|
||||||
EAPI int
|
static inline int eina_list_count(const Eina_List *list);
|
||||||
eina_list_count(const Eina_List *list)
|
|
||||||
{
|
|
||||||
if (!list) return 0;
|
|
||||||
return list->accounting->count;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the nth member's data pointer in a list
|
* Get the nth member's data pointer in a list
|
||||||
|
|
|
@ -73,6 +73,7 @@ eina_magic_string_get(Eina_Magic magic)
|
||||||
EINA_ARRAY_ITER_NEXT(strings, i, ems)
|
EINA_ARRAY_ITER_NEXT(strings, i, ems)
|
||||||
if (ems->magic == magic)
|
if (ems->magic == magic)
|
||||||
return ems->string;
|
return ems->string;
|
||||||
|
EINA_ARRAY_ITER_END;
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -95,6 +96,7 @@ eina_magic_string_set(Eina_Magic magic, const char *magic_name)
|
||||||
ems->string = NULL;
|
ems->string = NULL;
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
EINA_ARRAY_ITER_END;
|
||||||
|
|
||||||
ems = malloc(sizeof (Eina_Magic_String));
|
ems = malloc(sizeof (Eina_Magic_String));
|
||||||
ems->magic = magic;
|
ems->magic = magic;
|
||||||
|
@ -103,7 +105,7 @@ eina_magic_string_set(Eina_Magic magic, const char *magic_name)
|
||||||
else
|
else
|
||||||
ems->string = NULL;
|
ems->string = NULL;
|
||||||
|
|
||||||
_eina_array_append(strings, ems);
|
eina_array_append(strings, ems);
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
|
|
@ -50,7 +50,7 @@ static Eina_Bool keep(void *data, __UNUSED__ void *gdata)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
eina_bench_array_4evas_render(int request)
|
eina_bench_array_4evas_render_inline(int request)
|
||||||
{
|
{
|
||||||
Eina_Array *array;
|
Eina_Array *array;
|
||||||
Eina_Bench_Object *ebo;
|
Eina_Bench_Object *ebo;
|
||||||
|
@ -79,16 +79,20 @@ eina_bench_array_4evas_render(int request)
|
||||||
{
|
{
|
||||||
EINA_ARRAY_ITER_NEXT(array, j, ebo)
|
EINA_ARRAY_ITER_NEXT(array, j, ebo)
|
||||||
free(ebo);
|
free(ebo);
|
||||||
|
EINA_ARRAY_ITER_END;
|
||||||
|
|
||||||
eina_array_clean(array);
|
eina_array_clean(array);
|
||||||
}
|
}
|
||||||
else if (i % 30 == 0) eina_array_remove(array, keep, NULL);
|
else if (i % 30 == 0) eina_array_remove(array, keep, NULL);
|
||||||
|
|
||||||
EINA_ARRAY_ITER_NEXT(array, j, ebo)
|
EINA_ARRAY_ITER_NEXT(array, j, ebo)
|
||||||
ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE;
|
ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE;
|
||||||
|
EINA_ARRAY_ITER_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
EINA_ARRAY_ITER_NEXT(array, j, ebo)
|
EINA_ARRAY_ITER_NEXT(array, j, ebo)
|
||||||
free(ebo);
|
free(ebo);
|
||||||
|
EINA_ARRAY_ITER_END;
|
||||||
|
|
||||||
eina_array_free(array);
|
eina_array_free(array);
|
||||||
|
|
||||||
|
@ -227,7 +231,7 @@ eina_bench_inlist_4evas_render(int request)
|
||||||
|
|
||||||
void eina_bench_array(Eina_Bench *bench)
|
void eina_bench_array(Eina_Bench *bench)
|
||||||
{
|
{
|
||||||
eina_bench_register(bench, "array", EINA_BENCH(eina_bench_array_4evas_render), 200, 4000, 100);
|
eina_bench_register(bench, "array-inline", EINA_BENCH(eina_bench_array_4evas_render_inline), 200, 4000, 100);
|
||||||
eina_bench_register(bench, "list", EINA_BENCH(eina_bench_list_4evas_render), 200, 4000, 100);
|
eina_bench_register(bench, "list", EINA_BENCH(eina_bench_list_4evas_render), 200, 4000, 100);
|
||||||
eina_bench_register(bench, "inlist", EINA_BENCH(eina_bench_inlist_4evas_render), 200, 4000, 100);
|
eina_bench_register(bench, "inlist", EINA_BENCH(eina_bench_inlist_4evas_render), 200, 4000, 100);
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,6 +68,7 @@ eina_bench_lookup_superfast(int request)
|
||||||
|
|
||||||
EINA_ARRAY_ITER_NEXT(array, i, tmp_val)
|
EINA_ARRAY_ITER_NEXT(array, i, tmp_val)
|
||||||
free(tmp_val);
|
free(tmp_val);
|
||||||
|
EINA_ARRAY_ITER_END;
|
||||||
|
|
||||||
eina_array_free(array);
|
eina_array_free(array);
|
||||||
}
|
}
|
||||||
|
@ -115,6 +116,7 @@ eina_bench_lookup_djb2(int request)
|
||||||
|
|
||||||
EINA_ARRAY_ITER_NEXT(array, i, tmp_val)
|
EINA_ARRAY_ITER_NEXT(array, i, tmp_val)
|
||||||
free(tmp_val);
|
free(tmp_val);
|
||||||
|
EINA_ARRAY_ITER_END;
|
||||||
|
|
||||||
eina_array_free(array);
|
eina_array_free(array);
|
||||||
}
|
}
|
||||||
|
@ -164,6 +166,7 @@ eina_bench_lookup_djb2_inline(int request)
|
||||||
|
|
||||||
EINA_ARRAY_ITER_NEXT(array, i, tmp_val)
|
EINA_ARRAY_ITER_NEXT(array, i, tmp_val)
|
||||||
free(tmp_val);
|
free(tmp_val);
|
||||||
|
EINA_ARRAY_ITER_END;
|
||||||
|
|
||||||
eina_array_free(array);
|
eina_array_free(array);
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,10 +45,9 @@ START_TEST(eina_array_simple)
|
||||||
fail_if(atoi(eina_array_get(ea, 10)) != 10);
|
fail_if(atoi(eina_array_get(ea, 10)) != 10);
|
||||||
|
|
||||||
EINA_ARRAY_ITER_NEXT(ea, i, tmp)
|
EINA_ARRAY_ITER_NEXT(ea, i, tmp)
|
||||||
{
|
fail_if((unsigned int) atoi(tmp) != i);
|
||||||
fail_if((unsigned int) atoi(tmp) != i);
|
free(tmp);
|
||||||
free(tmp);
|
EINA_ARRAY_ITER_END
|
||||||
}
|
|
||||||
|
|
||||||
fail_if(i != 200);
|
fail_if(i != 200);
|
||||||
|
|
||||||
|
@ -83,10 +82,9 @@ START_TEST(eina_array_static)
|
||||||
fail_if(atoi(eina_array_get(&sea, 10)) != 10);
|
fail_if(atoi(eina_array_get(&sea, 10)) != 10);
|
||||||
|
|
||||||
EINA_ARRAY_ITER_NEXT(&sea, i, tmp)
|
EINA_ARRAY_ITER_NEXT(&sea, i, tmp)
|
||||||
{
|
fail_if((unsigned int) atoi(tmp) != i);
|
||||||
fail_if((unsigned int) atoi(tmp) != i);
|
free(tmp);
|
||||||
free(tmp);
|
EINA_ARRAY_ITER_END
|
||||||
}
|
|
||||||
|
|
||||||
fail_if(i != 200);
|
fail_if(i != 200);
|
||||||
|
|
||||||
|
@ -141,6 +139,7 @@ START_TEST(eina_array_remove_stuff)
|
||||||
fail_if(eina_array_count(ea) != 990);
|
fail_if(eina_array_count(ea) != 990);
|
||||||
EINA_ARRAY_ITER_NEXT(ea, i, tmp)
|
EINA_ARRAY_ITER_NEXT(ea, i, tmp)
|
||||||
fail_if(*tmp == 0);
|
fail_if(*tmp == 0);
|
||||||
|
EINA_ARRAY_ITER_END;
|
||||||
|
|
||||||
// Remove the last items
|
// Remove the last items
|
||||||
for (i = 980; i < 990; ++i)
|
for (i = 980; i < 990; ++i)
|
||||||
|
@ -158,6 +157,8 @@ START_TEST(eina_array_remove_stuff)
|
||||||
fail_if(*tmp == 0);
|
fail_if(*tmp == 0);
|
||||||
*tmp = 0;
|
*tmp = 0;
|
||||||
}
|
}
|
||||||
|
EINA_ARRAY_ITER_END;
|
||||||
|
|
||||||
eina_array_remove(ea, keep_int, NULL);
|
eina_array_remove(ea, keep_int, NULL);
|
||||||
|
|
||||||
fail_if(eina_array_count(ea) != 0);
|
fail_if(eina_array_count(ea) != 0);
|
||||||
|
|
Loading…
Reference in New Issue