00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef REF_ARRAY_H
00021 #define REF_ARRAY_H
00022
00023 #include <stdint.h>
00024 #include <stdlib.h>
00025
00026 struct ref_array;
00027
00028 #ifndef EOK
00029 #define EOK 0
00030 #endif
00031
00074 typedef enum
00075 {
00076 REF_ARRAY_DESTROY,
00077 REF_ARRAY_DELETE,
00078 } ref_array_del_enum;
00079
00086 typedef void (*ref_array_fn)(void *elem,
00087 ref_array_del_enum type,
00088 void *data);
00089
00090
00107 int ref_array_create(struct ref_array **ra,
00108 size_t elem,
00109 uint32_t grow_by,
00110 ref_array_fn cb,
00111 void *data);
00112
00121 struct ref_array *ref_array_getref(struct ref_array *ra);
00122
00130 void ref_array_destroy(struct ref_array *ra);
00131
00148 int ref_array_append(struct ref_array *ra, void *element);
00149
00174 void *ref_array_get(struct ref_array *ra, uint32_t idx, void *acptr);
00175
00188 int ref_array_getlen(struct ref_array *ra, uint32_t *len);
00189
00199 uint32_t ref_array_len(struct ref_array *ra);
00200
00206 #endif