/*

  Interface definitions for bget.c, the memory management package.

*/
#ifndef _BGET_H_
#define _BGET_H_

/* in PIO we use DEBUG bget uses NDEBUG */
//#ifndef DEBUG
//#undef NDEBUG
//#endif

#ifndef _
#ifdef PROTOTYPES
#define  _(x)  x                      /* If compiler knows prototypes */
#else
#define  _(x)  ()                     /* It it doesn't */
#endif /* PROTOTYPES */
#endif

typedef long bufsize;
void    bpool       _((void *buffer, bufsize len));
void   *bget        _((bufsize size));
void   *bgetz       _((bufsize size));
void   *bgetr       _((void *buffer, bufsize newsize));
void    brel        _((void *buf));
void    bectl       _((int (*compact)(bufsize sizereq, int sequence),
                       void *(*acquire)(bufsize size),
                       void (*release)(void *buf), bufsize pool_incr));
void    bstats      _((bufsize *curalloc, bufsize *totfree, bufsize *maxfree,
                       long *nget, long *nrel));
void    bstatse     _((bufsize *pool_incr, long *npool, long *npget,
                       long *nprel, long *ndget, long *ndrel));
void    bufdump     _((void *buf));
void    bpoold      _((void *pool, int dumpalloc, int dumpfree));
int     bpoolv      _((void *pool));
void bpoolrelease  _();
void bfreespace  _((bufsize *maxfree, bufsize *totfree));

#endif
