blob: 165eacac05a89076c51e52568aeeab6154fc2f0b [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"
* 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 10u 0 value size_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 10u 0 value size_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 10u 0 value size_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 10i 0 extproc('xmlMemSetup')
d freeFunc value like(xmlFreeFunc)
d mallocFunc value like(xmlMallocFunc)
d reallocFunc value like(xmlReallocFunc)
d strdupFunc value like(xmlStrdupFunc)
d xmlMemGet pr 10i 0 extproc('xmlMemGet')
d freeFunc like(xmlFreeFunc)
d mallocFunc like(xmlMallocFunc)
d reallocFunc like(xmlReallocFunc)
d strdupFunc like(xmlStrdupFunc)
d xmlGcMemSetup pr 10i 0 extproc('xmlGcMemSetup')
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 10i 0 extproc('xmlGcMemGet')
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 10i 0 extproc('xmlInitMemory')
* Cleanup of the memory layer.
d xmlCleanupMemory...
d pr extproc('xmlCleanupMemory')
* These are specific to the XML debug memory wrapper.
d xmlMemUsed pr 10i 0 extproc('xmlMemUsed')
d xmlMemBlocks pr 10i 0 extproc('xmlMemBlocks')
d xmlMemDisplay pr extproc('xmlMemDisplay')
d fp * value FILE *
d xmlMmDisplayLast...
d pr extproc('xmlMemDisplayLast')
d fp * value FILE *
d nbBytes 20i 0 value
d xmlMemShow pr extproc('xmlMemShow')
d fp * value FILE *
d nr 10i 0 value
d xmlMemoryDump pr extproc('xmlMemoryDump')
d xmlMemMalloc pr * extproc('xmlMemMalloc') void *
d size 10u 0 value size_t
d xmlMemRealloc pr * extproc('xmlMemRealloc') void *
d ptr * value void *
d size 10u 0 value size_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 10u 0 value size_t
d file * value options(*string) const char *
d line 10i 0 value
d xmlReallocLoc pr * extproc('xmlReallocLoc') void *
d ptr * value void *
d size 10u 0 value size_t
d file * value options(*string) const char *
d line 10i 0 value
d xmlMallocAtomicLoc...
d pr * extproc('xmlMallocAtomicLoc') void *
d size 10u 0 value size_t
d file * value options(*string) const char *
d line 10i 0 value
d xmlMemStrdupLoc...
d pr * extproc('xmlMemStrdupLoc') char *
d str * value options(*string) const char *
d file * value options(*string) const char *
d line 10i 0 value
/if not defined(XML_GLOBALS_H)
/if not defined(XML_THREADS_H__)
/include "libxmlrpg/threads"
/include "libxmlrpg/globals"
/endif
/endif
/endif DEBUG_MEMORY_ALLOC__