00001
00002 #ifndef ARRAY_H
00003 #define ARRAY_H
00004
00005
00016 #define array_at(array, index) ((array)->elements[index])
00017
00018
00027 typedef struct
00028 {
00029 void **elements;
00030 int length;
00031 int max_length;
00032 } Array;
00033
00034
00043 typedef void (* DestructorFnc) (void *element);
00044
00057 typedef int (* EqualsFnc) (void *element, void *user_data);
00058
00059 int array_increase(Array *array, int nNewEntries);
00060 Array *array_create();
00061 Array *array_create_sized(int bufferSize) ;
00062 int array_append(Array *array, void *newElement) ;
00063 void array_remove(Array *array, int index, DestructorFnc destructor) ;
00064 void array_remove_element(Array *array, void *element, DestructorFnc destructor) ;
00065 int array_find_index(Array *array, void *element) ;
00066 void *array_find_equals(Array *array, EqualsFnc equals, void *user_data) ;
00067
00068 int array_insert_before(Array *array, int index, void *element);
00069 void *array_get(Array *array, int index) ;
00070 void array_clear(Array *array, DestructorFnc destructor);
00071 void array_destroy(Array *array, DestructorFnc destructor);
00072
00073
00074
00075 #endif