| /* |
| * 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 <malloc.h> |
| #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 <stdio.h> |
| |
| /* #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_ */ |
| |