Spaces:
Sleeping
Sleeping
/* | |
* Summary: interface for the memory allocator | |
* Description: provides interfaces for the memory allocator, | |
* including debugging capabilities. | |
* | |
* Copy: See Copyright for the status of this software. | |
* | |
* Author: Daniel Veillard | |
*/ | |
/** | |
* DEBUG_MEMORY: | |
* | |
* DEBUG_MEMORY replaces the allocator with a collect and debug | |
* shell to the libc allocator. | |
* DEBUG_MEMORY should only be activated when debugging | |
* libxml i.e. if libxml has been configured with --with-debug-mem too. | |
*/ | |
/* #define DEBUG_MEMORY_FREED */ | |
/* #define DEBUG_MEMORY_LOCATION */ | |
/** | |
* DEBUG_MEMORY_LOCATION: | |
* | |
* DEBUG_MEMORY_LOCATION should be activated only when debugging | |
* libxml i.e. if libxml has been configured with --with-debug-mem too. | |
*/ | |
extern "C" { | |
/* | |
* The XML memory wrapper support 4 basic overloadable functions. | |
*/ | |
/** | |
* xmlFreeFunc: | |
* @mem: an already allocated block of memory | |
* | |
* Signature for a free() implementation. | |
*/ | |
typedef void (XMLCALL *xmlFreeFunc)(void *mem); | |
/** | |
* xmlMallocFunc: | |
* @size: the size requested in bytes | |
* | |
* Signature for a malloc() implementation. | |
* | |
* Returns a pointer to the newly allocated block or NULL in case of error. | |
*/ | |
typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size); | |
/** | |
* xmlReallocFunc: | |
* @mem: an already allocated block of memory | |
* @size: the new size requested in bytes | |
* | |
* Signature for a realloc() implementation. | |
* | |
* Returns a pointer to the newly reallocated block or NULL in case of error. | |
*/ | |
typedef void *(XMLCALL *xmlReallocFunc)(void *mem, size_t size); | |
/** | |
* xmlStrdupFunc: | |
* @str: a zero terminated string | |
* | |
* Signature for an strdup() implementation. | |
* | |
* Returns the copy of the string or NULL in case of error. | |
*/ | |
typedef char *(XMLCALL *xmlStrdupFunc)(const char *str); | |
/* | |
* The 4 interfaces used for all memory handling within libxml. | |
LIBXML_DLL_IMPORT xmlFreeFunc xmlFree; | |
LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc; | |
LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic; | |
LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc; | |
LIBXML_DLL_IMPORT xmlStrdupFunc xmlMemStrdup; | |
*/ | |
/* | |
* The way to overload the existing functions. | |
* The xmlGc function have an extra entry for atomic block | |
* allocations useful for garbage collected memory allocators | |
*/ | |
XMLPUBFUN int XMLCALL | |
xmlMemSetup (xmlFreeFunc freeFunc, | |
xmlMallocFunc mallocFunc, | |
xmlReallocFunc reallocFunc, | |
xmlStrdupFunc strdupFunc); | |
XMLPUBFUN int XMLCALL | |
xmlMemGet (xmlFreeFunc *freeFunc, | |
xmlMallocFunc *mallocFunc, | |
xmlReallocFunc *reallocFunc, | |
xmlStrdupFunc *strdupFunc); | |
XMLPUBFUN int XMLCALL | |
xmlGcMemSetup (xmlFreeFunc freeFunc, | |
xmlMallocFunc mallocFunc, | |
xmlMallocFunc mallocAtomicFunc, | |
xmlReallocFunc reallocFunc, | |
xmlStrdupFunc strdupFunc); | |
XMLPUBFUN int XMLCALL | |
xmlGcMemGet (xmlFreeFunc *freeFunc, | |
xmlMallocFunc *mallocFunc, | |
xmlMallocFunc *mallocAtomicFunc, | |
xmlReallocFunc *reallocFunc, | |
xmlStrdupFunc *strdupFunc); | |
/* | |
* Initialization of the memory layer. | |
*/ | |
XML_DEPRECATED | |
XMLPUBFUN int XMLCALL | |
xmlInitMemory (void); | |
/* | |
* Cleanup of the memory layer. | |
*/ | |
XML_DEPRECATED | |
XMLPUBFUN void XMLCALL | |
xmlCleanupMemory (void); | |
/* | |
* These are specific to the XML debug memory wrapper. | |
*/ | |
XMLPUBFUN int XMLCALL | |
xmlMemUsed (void); | |
XMLPUBFUN int XMLCALL | |
xmlMemBlocks (void); | |
XMLPUBFUN void XMLCALL | |
xmlMemDisplay (FILE *fp); | |
XMLPUBFUN void XMLCALL | |
xmlMemDisplayLast(FILE *fp, long nbBytes); | |
XMLPUBFUN void XMLCALL | |
xmlMemShow (FILE *fp, int nr); | |
XMLPUBFUN void XMLCALL | |
xmlMemoryDump (void); | |
XMLPUBFUN void * XMLCALL | |
xmlMemMalloc (size_t size) LIBXML_ATTR_ALLOC_SIZE(1); | |
XMLPUBFUN void * XMLCALL | |
xmlMemRealloc (void *ptr,size_t size); | |
XMLPUBFUN void XMLCALL | |
xmlMemFree (void *ptr); | |
XMLPUBFUN char * XMLCALL | |
xmlMemoryStrdup (const char *str); | |
XMLPUBFUN void * XMLCALL | |
xmlMallocLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); | |
XMLPUBFUN void * XMLCALL | |
xmlReallocLoc (void *ptr, size_t size, const char *file, int line); | |
XMLPUBFUN void * XMLCALL | |
xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); | |
XMLPUBFUN char * XMLCALL | |
xmlMemStrdupLoc (const char *str, const char *file, int line); | |
/** | |
* xmlMalloc: | |
* @size: number of bytes to allocate | |
* | |
* Wrapper for the malloc() function used in the XML library. | |
* | |
* Returns the pointer to the allocated area or NULL in case of error. | |
*/ | |
/** | |
* xmlMallocAtomic: | |
* @size: number of bytes to allocate | |
* | |
* Wrapper for the malloc() function used in the XML library for allocation | |
* of block not containing pointers to other areas. | |
* | |
* Returns the pointer to the allocated area or NULL in case of error. | |
*/ | |
/** | |
* xmlRealloc: | |
* @ptr: pointer to the existing allocated area | |
* @size: number of bytes to allocate | |
* | |
* Wrapper for the realloc() function used in the XML library. | |
* | |
* Returns the pointer to the allocated area or NULL in case of error. | |
*/ | |
/** | |
* xmlMemStrdup: | |
* @str: pointer to the existing string | |
* | |
* Wrapper for the strdup() function, xmlStrdup() is usually preferred. | |
* | |
* Returns the pointer to the allocated area or NULL in case of error. | |
*/ | |
} | |