struct _array_ {
unsigned short size; /* number of 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 */
};
extern void arr_init P((unsigned int));
extern array *arr_alloc P((unsigned int));
extern array *arr_new P((dataspace*, long));
# define arr_ref(a) ((a)->ref++)
extern void arr_del P((array*));
extern void arr_freeall P((void));
extern uindex arr_put P((array*));
extern void arr_clear P((void));
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_compact P((array*));
extern unsigned short map_size P((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((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*));