forked from enlightenment/efl
Add eina_array_pop and rename eina_array_append by eina_array_push.
SVN revision: 35679
This commit is contained in:
parent
3878e945fb
commit
4390a37a70
|
@ -50,7 +50,8 @@ EAPI Eina_Iterator *eina_array_iterator_new(const Eina_Array *array);
|
|||
EAPI Eina_Accessor *eina_array_accessor_new(const Eina_Array *array);
|
||||
|
||||
static inline void * eina_array_get (const Eina_Array *array, unsigned int index);
|
||||
static inline void eina_array_append (Eina_Array *array, const void *data);
|
||||
static inline void eina_array_push (Eina_Array *array, const void *data);
|
||||
static inline void * eina_array_pop (Eina_Array *array);
|
||||
static inline unsigned int eina_array_count (const Eina_Array *array);
|
||||
|
||||
#define EINA_ARRAY_ITER_NEXT(array, index, item, iterator) \
|
||||
|
|
|
@ -42,7 +42,7 @@ eina_array_grow(Eina_Array *array)
|
|||
}
|
||||
|
||||
static inline void
|
||||
eina_array_append(Eina_Array *array, const void *data)
|
||||
eina_array_push(Eina_Array *array, const void *data)
|
||||
{
|
||||
if (UNLIKELY((array->count + array->step) > array->total))
|
||||
if (!eina_array_grow(array)) return ;
|
||||
|
@ -50,6 +50,13 @@ eina_array_append(Eina_Array *array, const void *data)
|
|||
array->data[array->count++] = (void*) data;
|
||||
}
|
||||
|
||||
static inline void *
|
||||
eina_array_pop(Eina_Array *array)
|
||||
{
|
||||
if (array->count <= 0) return NULL;
|
||||
return array->data[--array->count];
|
||||
}
|
||||
|
||||
static inline void *
|
||||
eina_array_get(const Eina_Array *array, unsigned int index)
|
||||
{
|
||||
|
|
|
@ -105,7 +105,7 @@ eina_magic_string_set(Eina_Magic magic, const char *magic_name)
|
|||
else
|
||||
ems->string = NULL;
|
||||
|
||||
eina_array_append(strings, ems);
|
||||
eina_array_push(strings, ems);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -30,6 +30,7 @@ eina_test_iterator.c \
|
|||
eina_test_accessor.c \
|
||||
eina_test_module.c \
|
||||
eina_test_convert.c \
|
||||
eina_test_rbtree.c \
|
||||
eina_test_list.c
|
||||
|
||||
eina_suite_LDADD = @CHECK_LIBS@ $(top_builddir)/src/lib/libeina.la
|
||||
|
|
|
@ -73,7 +73,7 @@ eina_bench_array_4evas_render_inline(int request)
|
|||
|
||||
ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
|
||||
|
||||
eina_array_append(array, ebo);
|
||||
eina_array_push(array, ebo);
|
||||
}
|
||||
|
||||
if (i == 500)
|
||||
|
@ -137,7 +137,7 @@ eina_bench_array_4evas_render_iterator(int request)
|
|||
|
||||
ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
|
||||
|
||||
eina_array_append(array, ebo);
|
||||
eina_array_push(array, ebo);
|
||||
}
|
||||
|
||||
if (i == 500)
|
||||
|
|
|
@ -25,6 +25,54 @@
|
|||
#include "eina_array.h"
|
||||
#include "eina_bench.h"
|
||||
|
||||
static void
|
||||
eina_bench_lookup_rbtree(int request)
|
||||
{
|
||||
Eina_Hash *hash = NULL;
|
||||
Eina_Array *array = NULL;
|
||||
int *tmp_val;
|
||||
Eina_Array_Iterator it;
|
||||
unsigned int i;
|
||||
|
||||
array = eina_array_new(1000);
|
||||
|
||||
hash = eina_hash_string_superfast_new();
|
||||
|
||||
for (i = 0; i < (unsigned int) request; ++i)
|
||||
{
|
||||
char tmp_key[10];
|
||||
|
||||
tmp_val = malloc(sizeof (int));
|
||||
|
||||
if (!tmp_val) continue ;
|
||||
|
||||
snprintf(tmp_key, 10, "%i", i);
|
||||
*tmp_val = i;
|
||||
|
||||
eina_hash_add(hash, tmp_key, tmp_val);
|
||||
|
||||
eina_array_push(array, tmp_val);
|
||||
}
|
||||
|
||||
srand(time(NULL));
|
||||
|
||||
for (i = 0; i < (unsigned int) request; ++i)
|
||||
{
|
||||
char tmp_key[10];
|
||||
|
||||
snprintf(tmp_key, 10, "%i", rand() % request);
|
||||
|
||||
tmp_val = eina_hash_find(hash, tmp_key);
|
||||
}
|
||||
|
||||
eina_hash_free(hash);
|
||||
|
||||
EINA_ARRAY_ITER_NEXT(array, i, tmp_val, it)
|
||||
free(tmp_val);
|
||||
|
||||
eina_array_free(array);
|
||||
}
|
||||
|
||||
static void
|
||||
eina_bench_lookup_superfast(int request)
|
||||
{
|
||||
|
@ -51,7 +99,7 @@ eina_bench_lookup_superfast(int request)
|
|||
|
||||
eina_hash_add(hash, tmp_key, tmp_val);
|
||||
|
||||
eina_array_append(array, tmp_val);
|
||||
eina_array_push(array, tmp_val);
|
||||
}
|
||||
|
||||
srand(time(NULL));
|
||||
|
@ -99,7 +147,7 @@ eina_bench_lookup_djb2(int request)
|
|||
|
||||
eina_hash_add(hash, tmp_key, tmp_val);
|
||||
|
||||
eina_array_append(array, tmp_val);
|
||||
eina_array_push(array, tmp_val);
|
||||
}
|
||||
|
||||
srand(time(NULL));
|
||||
|
@ -148,7 +196,7 @@ eina_bench_lookup_djb2_inline(int request)
|
|||
|
||||
eina_hash_add_by_hash(hash, tmp_key, length, eina_hash_djb2(tmp_key, length), tmp_val);
|
||||
|
||||
eina_array_append(array, tmp_val);
|
||||
eina_array_push(array, tmp_val);
|
||||
}
|
||||
|
||||
srand(time(NULL));
|
||||
|
|
|
@ -45,7 +45,7 @@ eina_bench_stringshare_job(int request)
|
|||
snprintf(build, 64, "string_%i", i);
|
||||
tmp = eina_stringshare_add(build);
|
||||
|
||||
eina_array_append(ea, tmp);
|
||||
eina_array_push(ea, tmp);
|
||||
}
|
||||
|
||||
srand(time(NULL));
|
||||
|
@ -58,7 +58,7 @@ eina_bench_stringshare_job(int request)
|
|||
snprintf(build, 64, "string_%i", rand() % request);
|
||||
tmp = eina_stringshare_add(build);
|
||||
|
||||
eina_array_append(ea, tmp);
|
||||
eina_array_push(ea, tmp);
|
||||
}
|
||||
|
||||
EINA_ARRAY_ITER_NEXT(ea, j, tmp, it)
|
||||
|
|
|
@ -56,7 +56,7 @@ START_TEST(eina_accessor_array_simple)
|
|||
fail_if(!tmp);
|
||||
*tmp = i;
|
||||
|
||||
eina_array_append(ea, tmp);
|
||||
eina_array_push(ea, tmp);
|
||||
}
|
||||
|
||||
it = eina_array_accessor_new(ea);
|
||||
|
|
|
@ -33,17 +33,21 @@ START_TEST(eina_array_simple)
|
|||
ea = eina_array_new(11);
|
||||
fail_if(!ea);
|
||||
|
||||
for (i = 0; i < 200; ++i)
|
||||
for (i = 0; i < 201; ++i)
|
||||
{
|
||||
tmp = malloc(sizeof(char) * 10);
|
||||
fail_if(!tmp);
|
||||
snprintf(tmp, 10, "%i", i);
|
||||
|
||||
eina_array_append(ea, tmp);
|
||||
eina_array_push(ea, tmp);
|
||||
}
|
||||
|
||||
fail_if(eina_array_get(ea, 10) == NULL);
|
||||
fail_if(atoi(eina_array_get(ea, 10)) != 10);
|
||||
tmp = eina_array_pop(ea);
|
||||
fail_if(tmp == NULL);
|
||||
fail_if(atoi(tmp) != 200);
|
||||
free(tmp);
|
||||
|
||||
EINA_ARRAY_ITER_NEXT(ea, i, tmp, it)
|
||||
{
|
||||
|
@ -78,7 +82,7 @@ START_TEST(eina_array_static)
|
|||
fail_if(!tmp);
|
||||
snprintf(tmp, 10, "%i", i);
|
||||
|
||||
eina_array_append(&sea, tmp);
|
||||
eina_array_push(&sea, tmp);
|
||||
}
|
||||
|
||||
fail_if(eina_array_get(&sea, 10) == NULL);
|
||||
|
@ -129,7 +133,7 @@ START_TEST(eina_array_remove_stuff)
|
|||
fail_if(!tmp);
|
||||
*tmp = i;
|
||||
|
||||
eina_array_append(ea, tmp);
|
||||
eina_array_push(ea, tmp);
|
||||
}
|
||||
|
||||
// Remove the first 10 items
|
||||
|
|
|
@ -57,7 +57,7 @@ START_TEST(eina_iterator_array_simple)
|
|||
fail_if(!tmp);
|
||||
*tmp = i;
|
||||
|
||||
eina_array_append(ea, tmp);
|
||||
eina_array_push(ea, tmp);
|
||||
}
|
||||
|
||||
it = eina_array_iterator_new(ea);
|
||||
|
|
|
@ -101,14 +101,14 @@ START_TEST(eina_stringshare_collision)
|
|||
for (i = 0; i < 10000; ++i)
|
||||
{
|
||||
snprintf(buffer, 1024, "%i", rand());
|
||||
eina_array_append(ea, (void*) eina_stringshare_add(buffer));
|
||||
eina_array_push(ea, (void*) eina_stringshare_add(buffer));
|
||||
if (rand() > RAND_MAX / 2) eina_stringshare_add(buffer);
|
||||
}
|
||||
|
||||
for (i = 0; i < 10000; ++i)
|
||||
{
|
||||
snprintf(buffer, 1024, "%i", 60000 - i);
|
||||
eina_array_append(ea, (void*) eina_stringshare_add(buffer));
|
||||
eina_array_push(ea, (void*) eina_stringshare_add(buffer));
|
||||
eina_stringshare_add(buffer);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue