forked from enlightenment/efl
parent
f193096aa8
commit
cf5bc3129d
|
@ -32,14 +32,17 @@ 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 Eina_Array *eina_array_new (unsigned int step);
|
EAPI int eina_array_init (void);
|
||||||
EAPI void eina_array_setup (Eina_Array *array, unsigned int step);
|
EAPI int eina_array_shutdown (void);
|
||||||
EAPI void eina_array_free (Eina_Array *array);
|
|
||||||
EAPI void eina_array_append (Eina_Array *array, void *data);
|
EAPI Eina_Array *eina_array_new (unsigned int step);
|
||||||
EAPI void *eina_array_get (Eina_Array *array, unsigned int index);
|
EAPI void eina_array_setup (Eina_Array *array, unsigned int step);
|
||||||
EAPI void eina_array_clean (Eina_Array *array);
|
EAPI void eina_array_free (Eina_Array *array);
|
||||||
EAPI void eina_array_flush (Eina_Array *array);
|
EAPI void eina_array_append (Eina_Array *array, void *data);
|
||||||
EAPI void eina_array_remove (Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata), void *gdata);
|
EAPI void *eina_array_get (Eina_Array *array, unsigned int index);
|
||||||
|
EAPI void eina_array_clean (Eina_Array *array);
|
||||||
|
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)))
|
#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)))
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,22 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "eina_error.h"
|
||||||
#include "eina_array.h"
|
#include "eina_array.h"
|
||||||
#include "eina_inline_array.x"
|
#include "eina_inline_array.x"
|
||||||
|
|
||||||
|
EAPI int
|
||||||
|
eina_array_init(void)
|
||||||
|
{
|
||||||
|
return eina_error_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI int
|
||||||
|
eina_array_shutdown(void)
|
||||||
|
{
|
||||||
|
return eina_error_shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
eina_array_append(Eina_Array *array, void *data)
|
eina_array_append(Eina_Array *array, void *data)
|
||||||
{
|
{
|
||||||
|
@ -69,8 +82,12 @@ eina_array_new(unsigned int step)
|
||||||
{
|
{
|
||||||
Eina_Array *array;
|
Eina_Array *array;
|
||||||
|
|
||||||
|
eina_error_set(0);
|
||||||
array = malloc(sizeof (Eina_Array));
|
array = malloc(sizeof (Eina_Array));
|
||||||
if (!array) return NULL;
|
if (!array) {
|
||||||
|
eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
array->data = NULL;
|
array->data = NULL;
|
||||||
array->total = 0;
|
array->total = 0;
|
||||||
|
@ -132,8 +149,12 @@ eina_array_remove(Eina_Array *array, Eina_Bool (*keep)(void *data, void *gdata),
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
eina_error_set(0);
|
||||||
tmp = malloc(sizeof (void*) * array->total);
|
tmp = malloc(sizeof (void*) * array->total);
|
||||||
if (!tmp) return ;
|
if (!tmp) {
|
||||||
|
eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(tmp, array->data, limit * sizeof(void*));
|
memcpy(tmp, array->data, limit * sizeof(void*));
|
||||||
total = limit;
|
total = limit;
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "eina_inlist.h"
|
#include "eina_inlist.h"
|
||||||
#include "eina_error.h"
|
#include "eina_error.h"
|
||||||
#include "eina_private.h"
|
#include "eina_private.h"
|
||||||
|
|
||||||
/*============================================================================*
|
/*============================================================================*
|
||||||
* Local *
|
* Local *
|
||||||
*============================================================================*/
|
*============================================================================*/
|
||||||
|
@ -51,7 +52,6 @@ struct _Eina_Hash_El
|
||||||
};
|
};
|
||||||
|
|
||||||
static int _eina_hash_init_count = 0;
|
static int _eina_hash_init_count = 0;
|
||||||
static int EINA_HASH_ERROR_OUT_OF_MEMORY = 0;
|
|
||||||
|
|
||||||
static inline Eina_Hash_El *
|
static inline Eina_Hash_El *
|
||||||
_eina_hash_find_by_hash(const Eina_Hash *hash, const char *key, int key_length, int key_hash)
|
_eina_hash_find_by_hash(const Eina_Hash *hash, const char *key, int key_length, int key_hash)
|
||||||
|
@ -126,10 +126,7 @@ eina_hash_init(void)
|
||||||
_eina_hash_init_count++;
|
_eina_hash_init_count++;
|
||||||
|
|
||||||
if (_eina_hash_init_count == 1)
|
if (_eina_hash_init_count == 1)
|
||||||
{
|
eina_error_init();
|
||||||
eina_error_init();
|
|
||||||
EINA_HASH_ERROR_OUT_OF_MEMORY = eina_error_register("Eina_Hash out of memory");
|
|
||||||
}
|
|
||||||
|
|
||||||
return _eina_hash_init_count;
|
return _eina_hash_init_count;
|
||||||
}
|
}
|
||||||
|
@ -168,7 +165,7 @@ eina_hash_new(Eina_Key_Length key_length_cb,
|
||||||
return new;
|
return new;
|
||||||
|
|
||||||
on_error:
|
on_error:
|
||||||
eina_error_set(EINA_HASH_ERROR_OUT_OF_MEMORY);
|
eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,7 +239,7 @@ eina_hash_add_by_hash(Eina_Hash *hash,
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
|
||||||
on_error:
|
on_error:
|
||||||
eina_error_set(EINA_HASH_ERROR_OUT_OF_MEMORY);
|
eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,7 +297,7 @@ eina_hash_direct_add_by_hash(Eina_Hash *hash,
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
|
||||||
on_error:
|
on_error:
|
||||||
eina_error_set(EINA_HASH_ERROR_OUT_OF_MEMORY);
|
eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,8 @@ START_TEST(eina_array_simple)
|
||||||
char *tmp;
|
char *tmp;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
|
eina_array_init();
|
||||||
|
|
||||||
ea = eina_array_new(11);
|
ea = eina_array_new(11);
|
||||||
fail_if(!ea);
|
fail_if(!ea);
|
||||||
|
|
||||||
|
@ -53,6 +55,8 @@ START_TEST(eina_array_simple)
|
||||||
eina_array_clean(ea);
|
eina_array_clean(ea);
|
||||||
eina_array_flush(ea);
|
eina_array_flush(ea);
|
||||||
eina_array_free(ea);
|
eina_array_free(ea);
|
||||||
|
|
||||||
|
eina_array_shutdown();
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
@ -62,6 +66,8 @@ START_TEST(eina_array_static)
|
||||||
char *tmp;
|
char *tmp;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
|
eina_array_init();
|
||||||
|
|
||||||
eina_array_setup(&sea, 10);
|
eina_array_setup(&sea, 10);
|
||||||
|
|
||||||
for (i = 0; i < 200; ++i)
|
for (i = 0; i < 200; ++i)
|
||||||
|
@ -86,6 +92,8 @@ START_TEST(eina_array_static)
|
||||||
|
|
||||||
eina_array_clean(&sea);
|
eina_array_clean(&sea);
|
||||||
eina_array_flush(&sea);
|
eina_array_flush(&sea);
|
||||||
|
|
||||||
|
eina_array_shutdown();
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
@ -107,6 +115,8 @@ START_TEST(eina_array_remove_stuff)
|
||||||
int *tmp;
|
int *tmp;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
|
eina_array_init();
|
||||||
|
|
||||||
ea = eina_array_new(64);
|
ea = eina_array_new(64);
|
||||||
fail_if(!ea);
|
fail_if(!ea);
|
||||||
|
|
||||||
|
@ -153,6 +163,8 @@ START_TEST(eina_array_remove_stuff)
|
||||||
fail_if(eina_array_count(ea) != 0);
|
fail_if(eina_array_count(ea) != 0);
|
||||||
|
|
||||||
eina_array_free(ea);
|
eina_array_free(ea);
|
||||||
|
|
||||||
|
eina_array_shutdown();
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue