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 typedef struct _Array
{ {
char * data; char * data;
unsigned int count; size_t count;
unsigned int size; size_t size;
} Array; } Array;
typedef void (*ArrayApplyFunc)(void * data, void * userdata); typedef void (*ArrayApplyFunc)(void * data, void * userdata);
/* functions */ /* functions */
Array * array_new(unsigned int size); Array * array_new(size_t size);
void array_delete(Array * array); void array_delete(Array * array);
/* returns */ /* returns */
unsigned int array_count(Array * array); size_t array_count(Array * array);
/* useful */ /* useful */
void * array_get(Array * array, unsigned int pos); void * array_get(Array * array, size_t pos);
int array_get_copy(Array * array, unsigned int pos, void * data); int array_get_copy(Array * array, size_t pos, void * data);
int array_set(Array * array, unsigned int pos, void * data); int array_set(Array * array, size_t pos, void * data);
int array_append(Array * array, 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); void array_apply(Array * array, ArrayApplyFunc func, void * userdata);

View File

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

View File

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