/* * xmlmemory.h: interface for the memory allocation debug. * * Daniel.Veillard@w3.org */ #ifndef _DEBUG_MEMORY_ALLOC_ #define _DEBUG_MEMORY_ALLOC_ #define NO_DEBUG_MEMORY #ifdef NO_DEBUG_MEMORY #ifdef HAVE_MALLOC_H #include #endif #define xmlFree(x) free((x)) #define xmlMalloc(x) malloc(x) #define xmlRealloc(p, x) realloc((p), (x)) #define xmlMemStrdup(x) strdup((x)) #define xmlInitMemory() #define xmlMemUsed() #define xmlInitMemory() #define xmlMemoryDump() #define xmlMemDisplay(x) #define xmlMemShow(x, d) #else /* ! NO_DEBUG_MEMORY */ #include /* #define DEBUG_MEMORY */ /* */ #define DEBUG_MEMORY_LOCATION #ifdef DEBUG #ifndef DEBUG_MEMORY #define DEBUG_MEMORY #endif #endif #define MEM_LIST /* keep a list of all the allocated memory blocks */ #ifdef __cplusplus extern "C" { #endif int xmlInitMemory (void); void * xmlMalloc (int size); void * xmlRealloc (void *ptr, int size); void xmlFree (void *ptr); char * xmlMemStrdup (const char *str); int xmlMemUsed (void); void xmlMemDisplay (FILE *fp); void xmlMemShow (FILE *fp, int nr); void xmlMemoryDump (void); int xmlInitMemory (void); #ifdef DEBUG_MEMORY_LOCATION #define xmlMalloc(x) xmlMallocLoc((x), __FILE__, __LINE__) #define xmlRealloc(p, x) xmlReallocLoc((p), (x), __FILE__, __LINE__) #define xmlMemStrdup(x) xmlMemStrdupLoc((x), __FILE__, __LINE__) extern void * xmlMallocLoc(int size, const char *file, int line); extern void * xmlReallocLoc(void *ptr,int size, const char *file, int line); extern char * xmlMemStrdupLoc(const char *str, const char *file, int line); #ifdef __cplusplus } #endif #endif /* DEBUG_MEMORY_LOCATION */ #endif /* ! NO_DEBUG_MEMORY */ #endif /* _DEBUG_MEMORY_ALLOC_ */