lpc4/lib/
lpc4/lib/doc/efun/
lpc4/lib/doc/lfun/
lpc4/lib/doc/operators/
lpc4/lib/doc/simul_efuns/
lpc4/lib/doc/types/
lpc4/lib/etc/
lpc4/lib/include/
lpc4/lib/include/arpa/
lpc4/lib/obj/d/
lpc4/lib/save/
lpc4/lib/secure/
lpc4/lib/std/
lpc4/lib/std/living/
#ifndef ARRAY_H
#define ARRAY_H
#include "interpret.h"
struct vector
{
  int ref;
  int size;
  int malloced_size;
  short flags;
  short types;
#ifdef DEBUG
  int extra_ref;
  struct vector *next;
#endif
  struct svalue item[1];
};


struct vector *resize_array(struct vector *,int);
void order_alist(struct vector *);
struct vector *shrink_array(struct vector *, int);
int check_for_circularity(struct vector *,struct vector *);
void donk_alist_item(struct vector *,int);
void check_vector_for_destruct(struct vector *);
void check_alist_for_destruct(struct vector *);
struct vector *allocate_n_array(struct svalue *,int);
int search_alist(struct svalue *key,struct vector * keylist);
struct vector *insert_alist(
	struct svalue *key,
	struct svalue *key_data,
	struct vector *list);
struct vector *map_array (struct vector *,struct svalue *,struct svalue *,int);
int search_array (struct vector *,struct svalue *,struct svalue *,int);
struct vector *make_unique PROT((struct vector *arr,char *func,
    struct svalue *skipnum));
struct vector *filter (struct vector *,struct svalue *,struct svalue *,
		       int);
struct vector *deep_inventory PROT((struct object *, int));
struct vector *add_array PROT((struct vector *, struct vector *));
struct vector *all_inventory PROT((struct object *));
char *implode_string PROT((struct vector *, char *));
struct vector *slice_array PROT((struct vector *,int,int));
struct vector *allocate_array_no_init PROT((int,int));
struct vector *allocate_array PROT((int));
struct vector *match_regexp PROT((struct vector *v, struct regexp *reg));
struct vector *file_stat(char *file,int raw);
struct vector *explode(struct svalue *str,struct svalue *del);
void implode(struct svalue *to,struct vector *v,struct svalue *del);
int assoc(struct svalue *key,struct vector * list);
INLINE int alist_cmp(struct svalue *p1,struct svalue *p2);

#ifndef DEBUG
void real_free_vector PROT((struct vector *));
#define free_vector(v) { if(!(v)->ref--) real_free_vector(v); }
#else
void free_vector PROT((struct vector *));
#endif

#endif