mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-01-12 09:17:37 +03:00
248 lines
11 KiB
Plaintext
248 lines
11 KiB
Plaintext
* 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__
|