/************************************************************************ * * * Copyright (c) 1985 by * * Digital Equipment Corporation, Maynard, MA * * All rights reserved. * * * * The information in this software is subject to change without * * notice and should not be construed as a commitment by Digital * * Equipment Corporation. * * * * Digital assumes no responsibility for the use or reliability * * of its software on equipment which is not supplied by Digital. * * * * Redistribution and use in source and binary forms are permitted * * provided that the above copyright notice and this paragraph are * * duplicated in all such forms and that any documentation, * * advertising materials, and other materials related to such * * distribution and use acknowledge that the software was developed * * by Digital Equipment Corporation. The name of Digital Equipment * * Corporation may not be used to endorse or promote products derived * * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.* * Do not take internally. In case of accidental ingestion, contact * * your physician immediately. * * * ************************************************************************/ #ifndef _INCL_MNEMOSYNE_H #include <stdio.h> #include "mnemconf.h" /* $Header: RCS.h.mnemosyn 1.4 91/04/17 18:36:53 gtoal Exp Locker: gtoal $ */ /* change function calls to macros returning area address */ /* main include file for the mnemosyne memory allocation tracker. this file provides some pre-processor fakes for malloc(), realloc() and family, as well as forward declarations for the mnemosyne functions. Marcus J. Ranum, 1990. (mjr@decuac.dec.com) */ /* these disguise mnemosyne calls as calls to malloc and family */ #ifndef NOFAKEMALLOC /* Can call them explicitly if macros cause problems */ /* knowing about __FILE__ is a weaker condition that knowing about stringizing */ #define strdup(s) mnem_strdup(s,__FILE__,__LINE__,__FUNCTION__) #define malloc(siz) mnem_malloc(siz,__FILE__,__LINE__,__FUNCTION__) #define calloc(siz,cnt) mnem_calloc(siz,cnt,__FILE__,__LINE__,__FUNCTION__) #define realloc(ptr,siz) mnem_realloc(ptr,siz,__FILE__,__LINE__,__FUNCTION__, #ptr) #define free(ptr) mnem_free(ptr,__FILE__,__LINE__,__FUNCTION__, #ptr) #endif /* NOFAKEMALLOC */ #define mall_t void * extern mall_t mnem_strdup(char *s, char *lab, int lin, char *caller); extern mall_t mnem_malloc(unsigned siz, char *lab, int lin, char *caller); extern mall_t mnem_calloc(unsigned cnt, unsigned siz, char *lab, int lin, char *caller); extern mall_t mnem_realloc(mall_t ptr, unsigned siz, char *lab, int lin, char *caller, char *varname); extern void mnem_free(mall_t ptr, char *lab, int lin, char *caller, char *varname); /* explicit debugging assistance */ extern int mnem_checkptr(mall_t ptr, char *lab, int lin, char *caller, char *varname); #define CHECKPTR(ptr) mnem_checkptr(ptr, __FILE__, __LINE__,__FUNCTION__, #ptr) extern void mnem_checkheap(char *lab, int lin, char *caller); #define CHECKHEAP() mnem_checkheap(__FILE__, __LINE__,__FUNCTION__) /* some internal functions and oddimentia */ extern int mnem_recording(void); extern int mnem_setrecording(int val); extern void mnem_setlog(FILE *fp); extern int mnem_writestats(void); #define _INCL_MNEMOSYNE_H #endif