struct _array_ {
unsigned short size; /* number of elements */
bool hashmod; /* hashed part contains new elements */
Uint ref; /* number of references */
Uint tag; /* used in sorting */
Uint odcount; /* last destructed object count */
value *elts; /* elements */
struct _maphash_ *hashed; /* hashed mapping elements */
struct _arrref_ *primary; /* primary reference */
array *prev, *next; /* per-object linked list */
};
typedef struct _arrmerge_ arrmerge; /* array merge table */
typedef struct _abchunk_ abchunk; /* array backup chunk */
extern void arr_init P((unsigned int));
extern array *arr_alloc P((unsigned int));
extern array *arr_new P((dataspace*, long));
extern array *arr_ext_new P((dataspace*, long));
# define arr_ref(a) ((a)->ref++)
extern void arr_del P((array*));
extern void arr_freelist P((array*));
extern void arr_freeall P((void));
extern arrmerge *arr_merge P((void));
extern Uint arr_put P((arrmerge*, array*, Uint));
extern void arr_clear P((arrmerge*));
extern void arr_backup P((abchunk**, array*));
extern void arr_commit P((abchunk**, dataplane*, int));
extern void arr_discard P((abchunk**));
extern array *arr_add P((dataspace*, array*, array*));
extern array *arr_sub P((dataspace*, array*, array*));
extern array *arr_intersect P((dataspace*, array*, array*));
extern array *arr_setadd P((dataspace*, array*, array*));
extern array *arr_setxadd P((dataspace*, array*, array*));
extern unsigned short arr_index P((array*, long));
extern void arr_ckrange P((array*, long, long));
extern array *arr_range P((dataspace*, array*, long, long));
extern array *map_new P((dataspace*, long));
extern void map_sort P((array*));
extern void map_rmhash P((array*));
extern void map_compact P((dataspace*, array*));
extern unsigned short map_size P((dataspace*, array*));
extern array *map_add P((dataspace*, array*, array*));
extern array *map_sub P((dataspace*, array*, array*));
extern array *map_intersect P((dataspace*, array*, array*));
extern value *map_index P((dataspace*, array*, value*, value*));
extern array *map_range P((dataspace*, array*, value*, value*));
extern array *map_indices P((dataspace*, array*));
extern array *map_values P((dataspace*, array*));
extern array *lwo_new P((dataspace*, object*));
extern array *lwo_copy P((dataspace*, array*));