Updated Array API

This commit is contained in:
Pierre Pronchery 2007-11-02 15:17:18 +00:00
parent da796ef52a
commit f1cd4a8c5c
3 changed files with 18 additions and 17 deletions

View File

@ -31,27 +31,27 @@
typedef struct _Array
{
char * data;
unsigned int count;
unsigned int size;
size_t count;
size_t size;
} Array;
typedef void (*ArrayApplyFunc)(void * data, void * userdata);
/* functions */
Array * array_new(unsigned int size);
Array * array_new(size_t size);
void array_delete(Array * array);
/* returns */
unsigned int array_count(Array * array);
size_t array_count(Array * array);
/* useful */
void * array_get(Array * array, unsigned int pos);
int array_get_copy(Array * array, unsigned int pos, void * data);
int array_set(Array * array, unsigned int pos, void * data);
void * array_get(Array * array, size_t pos);
int array_get_copy(Array * array, size_t pos, void * data);
int array_set(Array * array, size_t pos, void * data);
int array_append(Array * array, void * data);
int array_remove_pos(Array * array, unsigned int pos);
int array_remove_pos(Array * array, size_t pos);
void array_apply(Array * array, ArrayApplyFunc func, void * userdata);

View File

@ -22,7 +22,7 @@
/* Array */
Array * array_new(unsigned int size)
Array * array_new(size_t size)
{
Array * array;
@ -57,20 +57,20 @@ int array_append(Array * array, void * data)
void array_apply(Array * array, ArrayApplyFunc func, void * userdata)
{
unsigned int i;
size_t i;
for(i = 0; i < array->count; i++)
func(&array->data + (i * array->size), userdata);
}
unsigned int array_count(Array * array)
size_t array_count(Array * array)
{
return array->count;
}
void * array_get(Array * array, unsigned int pos)
void * array_get(Array * array, size_t pos)
{
if(pos >= array->count)
return NULL;
@ -78,7 +78,7 @@ void * array_get(Array * array, unsigned int pos)
}
int array_get_copy(Array * array, unsigned int pos, void * data)
int array_get_copy(Array * array, size_t pos, void * data)
{
if(pos >= array->count)
return 1;
@ -87,7 +87,7 @@ int array_get_copy(Array * array, unsigned int pos, void * data)
}
int array_remove_pos(Array * array, unsigned int pos)
int array_remove_pos(Array * array, size_t pos)
{
if(pos >= array->count)
return 1;

View File

@ -64,7 +64,7 @@ Hash * hash_new(void)
void hash_delete(Hash * hash)
{
unsigned int i;
size_t i;
HashEntry * he;
for(i = array_count(hash); i > 0; i--)
@ -77,7 +77,7 @@ void hash_delete(Hash * hash)
/* useful */
void * hash_get(Hash * hash, char const * name)
{
unsigned int i;
size_t i;
HashEntry * he;
for(i = array_count(hash); i > 0; i--)
@ -87,13 +87,14 @@ void * hash_get(Hash * hash, char const * name)
if(string_compare(he->name, name) == 0)
return he->data;
}
error_set_code(1, "%s%s", name, ": Not found");
return NULL;
}
int hash_set(Hash * hash, char const * name, void * data)
{
unsigned int i;
size_t i;
HashEntry he;
HashEntry * p;