#if !defined(_ZARRAY_H_) #define _ZARRAY_H_ 1 #include #include #include "mylock.h" #include "xlist.h" typedef void (*zarray_item_killer_t)(void*); typedef int (*zarray_iter_fn_t)(void*, void*); typedef int (*zarray_iter_skip_fn_t)(void*); typedef int (*zarray_find_cond_fn_t)(void*, va_list); typedef struct { mylock_t lock; int count; int pos; int caps; int delta; zarray_item_killer_t killer; void** data; } zarray_t; extern int zarray_init(zarray_t*, int, zarray_item_killer_t); extern int zarray_store(zarray_t*, void*); extern int zarray_clear(zarray_t*, int); extern int zarray_iter_ex(zarray_t*, zarray_iter_skip_fn_t, xlist_t*, void*); extern int zarray_iter(zarray_t*, zarray_iter_fn_t, void*); extern int zarray_del(zarray_t*, int); extern int zarray_put(zarray_t*, int, void*); extern int zarray_put_ex(zarray_t*, int, int*, void**); extern int zarray_get_ex(zarray_t*, int, int*, void**); extern void* zarray_get(zarray_t*, int); extern void* zarray_find(zarray_t*, zarray_find_cond_fn_t, ...); extern void zarray_fini(zarray_t*); typedef struct { int delta; destroy_fn_t datakiller; } xzarray_params_t; extern typeinfo_t xzarray_type; #endif