/* nalloc.h */


#define SBSIZE 16384
#define MAXBLK 20000
typedef struct bigblk BIGBLK;

typedef struct nalloc NALLOC;

struct bigblk {
  NALLOC *owner;		/* list this block belongs to */
  int used;			/* how many datas are used here? */
  char *blk;			/* pointer to data area */
};

/* a kludge to get rid of some warnings */
typedef struct point POINT;

struct point {
  POINT *next;
};

struct nalloc {
  int offset;
  int size;
  int curblk;			/* current block we are adding to */
  POINT *free;			/* pointer to first item on free list or null */
};

extern NALLOC *na_open();
extern char *na_alloc();
extern char *na_get();
extern char *na_ualloc();
extern char *bigalloc();
extern void na_clear();
extern void na_close();
extern void na_giveback();
extern void na_free();
extern void bigfree();