2001-02-23 20:55:21 +03:00
/*
* xmlmemory . h : interface for the memory allocation debug .
*
* Daniel . Veillard @ w3 . org
*/
# ifndef _DEBUG_MEMORY_ALLOC_
# define _DEBUG_MEMORY_ALLOC_
# include <stdio.h>
# include <libxml/xmlversion.h>
/*
* DEBUG_MEMORY_LOCATION should be activated only done when debugging
* libxml .
*/
2001-02-25 19:11:03 +03:00
/* #define DEBUG_MEMORY_FREED */
2001-02-23 20:55:21 +03:00
/* #define DEBUG_MEMORY_LOCATION */
# ifdef DEBUG
# ifndef DEBUG_MEMORY
# define DEBUG_MEMORY
# endif
# endif
# ifdef DEBUG_MEMORY_LOCATION
# define MEM_LIST /* keep a list of all the allocated memory blocks */
# endif
2001-02-25 19:11:03 +03:00
# ifdef DEBUG_MEMORY_FREED
# define MEM_CLEANUP(p,l) memset((p), -1, (l));
# else
# define MEM_CLEANUP(p,l)
# endif
2001-02-23 20:55:21 +03:00
# ifdef __cplusplus
extern " C " {
# endif
/*
* The XML memory wrapper support 4 basic overloadable functions
*/
typedef void ( * xmlFreeFunc ) ( void * ) ;
typedef void * ( * xmlMallocFunc ) ( int ) ;
typedef void * ( * xmlReallocFunc ) ( void * , int ) ;
typedef char * ( * xmlStrdupFunc ) ( const char * ) ;
/*
* The 4 interfaces used for all memory handling within libxml
*/
LIBXML_DLL_IMPORT extern xmlFreeFunc xmlFree ;
LIBXML_DLL_IMPORT extern xmlMallocFunc xmlMalloc ;
LIBXML_DLL_IMPORT extern xmlReallocFunc xmlRealloc ;
LIBXML_DLL_IMPORT extern xmlStrdupFunc xmlMemStrdup ;
/*
* The way to overload the existing functions
*/
int xmlMemSetup ( xmlFreeFunc freeFunc ,
xmlMallocFunc mallocFunc ,
xmlReallocFunc reallocFunc ,
xmlStrdupFunc strdupFunc ) ;
int xmlMemGet ( xmlFreeFunc * freeFunc ,
xmlMallocFunc * mallocFunc ,
xmlReallocFunc * reallocFunc ,
xmlStrdupFunc * strdupFunc ) ;
/*
* Initialization of the memory layer
*/
int xmlInitMemory ( void ) ;
/*
* Those are specific to the XML debug memory wrapper
*/
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__)
void * xmlMallocLoc ( int size , const char * file , int line ) ;
void * xmlReallocLoc ( void * ptr , int size , const char * file , int line ) ;
char * xmlMemStrdupLoc ( const char * str , const char * file , int line ) ;
# endif /* DEBUG_MEMORY_LOCATION */
# ifdef __cplusplus
}
# endif /* __cplusplus */
# endif /* _DEBUG_MEMORY_ALLOC_ */