/* alloc.h - External definitions for memory allocation subsystem */
/* $Id: alloc.h,v 1.1 2000/04/11 07:14:42 sdennis Exp $ */
#ifndef M_ALLOC_H
#define M_ALLOC_H
#define POOL_SBUF 0
#define POOL_MBUF 1
#define POOL_LBUF 2
#define POOL_BOOL 3
#define POOL_DESC 4
#define POOL_QENTRY 5
#define POOL_PCACHE 6
#define NUM_POOLS 7
#define LBUF_SIZE 8000 // Large
#define GBUF_SIZE 1024 // Generic
#define MBUF_SIZE 400 // Medium
#define PBUF_SIZE 128 // Pathname
#define SBUF_SIZE 64 // Small
/*
#define LBUF_SIZE 4000
#define MBUF_SIZE 200
#define SBUF_SIZE 32
*/
#ifndef STANDALONE
extern void FDECL(pool_init, (int, int));
extern char * FDECL(pool_alloc, (int, const char *));
extern void FDECL(pool_free, (int, char **));
extern void FDECL(list_bufstats, (dbref));
extern void FDECL(list_buftrace, (dbref));
#define alloc_lbuf(s) pool_alloc(POOL_LBUF,s)
#define free_lbuf(b) pool_free(POOL_LBUF,((char **)&(b)))
#define alloc_mbuf(s) pool_alloc(POOL_MBUF,s)
#define free_mbuf(b) pool_free(POOL_MBUF,((char **)&(b)))
#define alloc_sbuf(s) pool_alloc(POOL_SBUF,s)
#define free_sbuf(b) pool_free(POOL_SBUF,((char **)&(b)))
#define alloc_bool(s) (struct boolexp *)pool_alloc(POOL_BOOL,s)
#define free_bool(b) pool_free(POOL_BOOL,((char **)&(b)))
#define alloc_qentry(s) (BQUE *)pool_alloc(POOL_QENTRY,s)
#define free_qentry(b) pool_free(POOL_QENTRY,((char **)&(b)))
#define alloc_pcache(s) (PCACHE *)pool_alloc(POOL_PCACHE,s)
#define free_pcache(b) pool_free(POOL_PCACHE,((char **)&(b)))
#else
#define alloc_lbuf(s) (char *)malloc(LBUF_SIZE)
#define free_lbuf(b) if (b) free(b)
#define alloc_mbuf(s) (char *)malloc(MBUF_SIZE)
#define free_mbuf(b) if (b) free(b)
#define alloc_sbuf(s) (char *)malloc(SBUF_SIZE)
#define free_sbuf(b) if (b) free(b)
#define alloc_bool(s) (struct boolexp *)malloc(sizeof(struct boolexp))
#define free_bool(b) if (b) free(b)
#define alloc_qentry(s) (BQUE *)malloc(sizeof(BQUE))
#define free_qentry(b) if (b) free(b)
#define alloc_pcache(s) (PCACHE *)malloc(sizeof(PCACHE)
#define free_pcache(b) if (b) free(b)
#endif
#define safe_copy_chr(src, buff, bufp, nSizeOfBuffer) \
{ \
if ((*bufp - buff) < nSizeOfBuffer) \
{ \
**bufp = src; \
(*bufp)++; \
} \
}
#define safe_str(s,b,p) safe_copy_str(s,b,p,(LBUF_SIZE-1))
#define safe_chr(c,b,p) safe_copy_chr(c,b,p,(LBUF_SIZE-1))
#define safe_sb_str(s,b,p) safe_copy_str(s,b,p,(SBUF_SIZE-1))
#define safe_sb_chr(c,b,p) safe_copy_chr(c,b,p,(SBUF_SIZE-1))
#define safe_mb_str(s,b,p) safe_copy_str(s,b,p,(MBUF_SIZE-1))
#define safe_mb_chr(c,b,p) safe_copy_chr(c,b,p,(MBUF_SIZE-1))
#endif /* M_ALLOC_H */