blob: 472e941023ee5d7047f5b0a4ec151553eaf65bff [file] [log] [blame]
* 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: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
/if not defined(DEBUG_MEMORY_ALLOC__)
/define DEBUG_MEMORY_ALLOC__
/include "libxmlrpg/xmlversion"
/include "libxmlrpg/xmlTypesC"
* 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
/if defined(DEBUG)
/if not defined(DEBUG_MEMORY)
/define DEBUG_MEMORY
/endif
/endif
* 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.
/if defined(DEBUG_MEMORY_LOCATION)
/endif
* The XML memory wrapper support 4 basic overloadable functions.
* xmlFreeFunc:
* @mem: an already allocated block of memory
*
* Signature for a free() implementation.
d xmlFreeFunc s * based(######typedef######)
d procptr
* 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.
d xmlMallocFunc s * based(######typedef######)
d procptr
* 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.
d xmlReallocFunc s * based(######typedef######)
d procptr
* xmlStrdupFunc:
* @str: a zero terminated string
*
* Signature for an strdup() implementation.
*
* Returns the copy of the string or NULL in case of error.
d xmlStrdupFunc s * based(######typedef######)
d procptr
* The 5 interfaces used for all memory handling within libxml.
* Since indirect calls are only supported via a based prototype,
* storage is accessed via functions.
d get_xmlFree pr extproc('__get_xmlFree')
d like(xmlFreeFunc)
d set_xmlFree pr extproc('__set_xmlFree')
d func value like(xmlFreeFunc)
d xmlFree pr extproc('__call_xmlFree')
d mem * value void *
d get_xmlMalloc pr extproc('__get_xmlMalloc')
d like(xmlMallocFunc)
d set_xmlMalloc pr extproc('__set_xmlMalloc')
d func value like(xmlMallocFunc)
d xmlMalloc pr * extproc('__call_xmlMalloc') void *
d size value like(xmlCsize_t)
d get_xmlMallocAtomic...
d pr extproc('__get_xmlMallocAtomic')
d like(xmlMallocFunc)
d set_xmlMallocAtomic...
d pr extproc('__set_xmlMallocAtomic')
d func value like(xmlMallocFunc)
d xmlMallocAtomic...
d pr * extproc('__call_xmlMallocAtomic') void *
d size value like(xmlCsize_t)
d get_xmlRealloc pr extproc('__get_xmlRealloc')
d like(xmlReallocFunc)
d set_xmlRealloc pr extproc('__set_xmlRealloc')
d func value like(xmlReallocFunc)
d xmlRealloc pr * extproc('__call_xmlRealloc') void *
d mem * value void *
d size value like(xmlCsize_t)
d get_xmlMemStrdup...
d pr extproc('__get_xmlMemStrdup')
d like(xmlStrdupFunc)
d set_xmlMemStrdup...
d pr extproc('__set_xmlMemstrdup')
d func value like(xmlStrdupFunc)
d xmlMemStrdup pr * extproc('__call_xmlMemStrdup') void *
d str * value options(*string) const char *
* The way to overload the existing functions.
* The xmlGc function have an extra entry for atomic block
* allocations useful for garbage collected memory allocators
d xmlMemSetup pr extproc('xmlMemSetup')
d like(xmlCint)
d freeFunc value like(xmlFreeFunc)
d mallocFunc value like(xmlMallocFunc)
d reallocFunc value like(xmlReallocFunc)
d strdupFunc value like(xmlStrdupFunc)
d xmlMemGet pr extproc('xmlMemGet')
d like(xmlCint)
d freeFunc like(xmlFreeFunc)
d mallocFunc like(xmlMallocFunc)
d reallocFunc like(xmlReallocFunc)
d strdupFunc like(xmlStrdupFunc)
d xmlGcMemSetup pr extproc('xmlGcMemSetup')
d like(xmlCint)
d freeFunc value like(xmlFreeFunc)
d mallocFunc value like(xmlMallocFunc)
d mallocAtomicFunc...
d value like(xmlMallocFunc)
d reallocFunc value like(xmlReallocFunc)
d strdupFunc value like(xmlStrdupFunc)
d xmlGcMemGet pr extproc('xmlGcMemGet')
d like(xmlCint)
d freeFunc like(xmlFreeFunc)
d mallocFunc like(xmlMallocFunc)
d mallocAtomicFunc...
d like(xmlMallocFunc)
d reallocFunc like(xmlReallocFunc)
d strdupFunc like(xmlStrdupFunc)
* Initialization of the memory layer.
d xmlInitMemory pr extproc('xmlInitMemory')
d like(xmlCint)
* Cleanup of the memory layer.
d xmlCleanupMemory...
d pr extproc('xmlCleanupMemory')
* These are specific to the XML debug memory wrapper.
d xmlMemUsed pr extproc('xmlMemUsed')
d like(xmlCint)
d xmlMemBlocks pr extproc('xmlMemBlocks')
d like(xmlCint)
d xmlMemDisplay pr extproc('xmlMemDisplay')
d fp * value FILE *
d xmlMmDisplayLast...
d pr extproc('xmlMemDisplayLast')
d fp * value FILE *
d nbBytes value like(xmlClong)
d xmlMemShow pr extproc('xmlMemShow')
d fp * value FILE *
d nr value like(xmlCint)
d xmlMemoryDump pr extproc('xmlMemoryDump')
d xmlMemMalloc pr * extproc('xmlMemMalloc') void *
d size value like(xmlCsize_t)
d xmlMemRealloc pr * extproc('xmlMemRealloc') void *
d ptr * value void *
d size value like(xmlCsize_t)
d xmlMemFree pr extproc('xmlMemFree')
d ptr * value void *
d xmlMemoryStrdup...
d pr * extproc('xmlMemoryStrdup') char *
d str * value options(*string) const char *
d xmlMallocLoc pr * extproc('xmlMallocLoc') void *
d size value like(xmlCsize_t)
d file * value options(*string) const char *
d line value like(xmlCint)
d xmlReallocLoc pr * extproc('xmlReallocLoc') void *
d ptr * value void *
d size value like(xmlCsize_t)
d file * value options(*string) const char *
d line value like(xmlCint)
d xmlMallocAtomicLoc...
d pr * extproc('xmlMallocAtomicLoc') void *
d size value like(xmlCsize_t)
d file * value options(*string) const char *
d line value like(xmlCint)
d xmlMemStrdupLoc...
d pr * extproc('xmlMemStrdupLoc') char *
d str * value options(*string) const char *
d file * value options(*string) const char *
d line value like(xmlCint)
/if not defined(XML_GLOBALS_H)
/if not defined(XML_THREADS_H__)
/include "libxmlrpg/threads"
/include "libxmlrpg/globals"
/endif
/endif
/endif DEBUG_MEMORY_ALLOC__