Eneboo - Documentación para desarrolladores
src/libdigidoc/libxml2/include/libxml/xmlmemory.h
Ir a la documentación de este archivo.
00001 /*
00002  * Summary: interface for the memory allocator
00003  * Description: provides interfaces for the memory allocator,
00004  *              including debugging capabilities.
00005  *
00006  * Copy: See Copyright for the status of this software.
00007  *
00008  * Author: Daniel Veillard
00009  */
00010 
00011 
00012 #ifndef __DEBUG_MEMORY_ALLOC__
00013 #define __DEBUG_MEMORY_ALLOC__
00014 
00015 #include <stdio.h>
00016 #include <libxml/xmlversion.h>
00017 
00026 /* #define DEBUG_MEMORY_FREED */
00027 /* #define DEBUG_MEMORY_LOCATION */
00028 
00029 #ifdef DEBUG
00030 #ifndef DEBUG_MEMORY
00031 #define DEBUG_MEMORY
00032 #endif
00033 #endif
00034 
00041 #ifdef DEBUG_MEMORY_LOCATION
00042 #endif
00043 
00044 #ifdef __cplusplus
00045 extern "C" {
00046 #endif
00047 
00048 /*
00049  * The XML memory wrapper support 4 basic overloadable functions.
00050  */
00057 typedef void (XMLCALL *xmlFreeFunc)(void *mem);
00066 typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size);
00067 
00077 typedef void *(XMLCALL *xmlReallocFunc)(void *mem, size_t size);
00078 
00087 typedef char *(XMLCALL *xmlStrdupFunc)(const char *str);
00088 
00089 /*
00090  * The 4 interfaces used for all memory handling within libxml.
00091 LIBXML_DLL_IMPORT xmlFreeFunc xmlFree;
00092 LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc;
00093 LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic;
00094 LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc;
00095 LIBXML_DLL_IMPORT xmlStrdupFunc xmlMemStrdup;
00096  */
00097 
00098 /*
00099  * The way to overload the existing functions.
00100  * The xmlGc function have an extra entry for atomic block
00101  * allocations useful for garbage collected memory allocators
00102  */
00103 XMLPUBFUN int XMLCALL
00104         xmlMemSetup     (xmlFreeFunc freeFunc,
00105                          xmlMallocFunc mallocFunc,
00106                          xmlReallocFunc reallocFunc,
00107                          xmlStrdupFunc strdupFunc);
00108 XMLPUBFUN int XMLCALL
00109         xmlMemGet       (xmlFreeFunc *freeFunc,
00110                          xmlMallocFunc *mallocFunc,
00111                          xmlReallocFunc *reallocFunc,
00112                          xmlStrdupFunc *strdupFunc);
00113 XMLPUBFUN int XMLCALL
00114         xmlGcMemSetup   (xmlFreeFunc freeFunc,
00115                          xmlMallocFunc mallocFunc,
00116                          xmlMallocFunc mallocAtomicFunc,
00117                          xmlReallocFunc reallocFunc,
00118                          xmlStrdupFunc strdupFunc);
00119 XMLPUBFUN int XMLCALL
00120         xmlGcMemGet     (xmlFreeFunc *freeFunc,
00121                          xmlMallocFunc *mallocFunc,
00122                          xmlMallocFunc *mallocAtomicFunc,
00123                          xmlReallocFunc *reallocFunc,
00124                          xmlStrdupFunc *strdupFunc);
00125 
00126 /*
00127  * Initialization of the memory layer.
00128  */
00129 XMLPUBFUN int XMLCALL
00130         xmlInitMemory   (void);
00131 
00132 /*
00133  * Cleanup of the memory layer.
00134  */
00135 XMLPUBFUN void XMLCALL
00136                 xmlCleanupMemory        (void);
00137 /*
00138  * These are specific to the XML debug memory wrapper.
00139  */
00140 XMLPUBFUN int XMLCALL
00141         xmlMemUsed      (void);
00142 XMLPUBFUN int XMLCALL
00143         xmlMemBlocks    (void);
00144 XMLPUBFUN void XMLCALL
00145         xmlMemDisplay   (FILE *fp);
00146 XMLPUBFUN void XMLCALL
00147         xmlMemDisplayLast(FILE *fp, long nbBytes);
00148 XMLPUBFUN void XMLCALL
00149         xmlMemShow      (FILE *fp, int nr);
00150 XMLPUBFUN void XMLCALL
00151         xmlMemoryDump   (void);
00152 XMLPUBFUN void * XMLCALL
00153         xmlMemMalloc    (size_t size) LIBXML_ATTR_ALLOC_SIZE(1);
00154 XMLPUBFUN void * XMLCALL
00155         xmlMemRealloc   (void *ptr,size_t size);
00156 XMLPUBFUN void XMLCALL
00157         xmlMemFree      (void *ptr);
00158 XMLPUBFUN char * XMLCALL
00159         xmlMemoryStrdup (const char *str);
00160 XMLPUBFUN void * XMLCALL
00161         xmlMallocLoc    (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
00162 XMLPUBFUN void * XMLCALL
00163         xmlReallocLoc   (void *ptr, size_t size, const char *file, int line);
00164 XMLPUBFUN void * XMLCALL
00165         xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
00166 XMLPUBFUN char * XMLCALL
00167         xmlMemStrdupLoc (const char *str, const char *file, int line);
00168 
00169 
00170 #ifdef DEBUG_MEMORY_LOCATION
00171 
00179 #define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__)
00180 
00189 #define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__)
00190 
00199 #define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__)
00200 
00208 #define xmlMemStrdup(str) xmlMemStrdupLoc((str), __FILE__, __LINE__)
00209 
00210 #endif /* DEBUG_MEMORY_LOCATION */
00211 
00212 #ifdef __cplusplus
00213 }
00214 #endif /* __cplusplus */
00215 
00216 #ifndef __XML_GLOBALS_H
00217 #ifndef __XML_THREADS_H__
00218 #include <libxml/threads.h>
00219 #include <libxml/globals.h>
00220 #endif
00221 #endif
00222 
00223 #endif  /* __DEBUG_MEMORY_ALLOC__ */
00224 
 Todo Clases Namespaces Archivos Funciones Variables 'typedefs' Enumeraciones Valores de enumeraciones Propiedades Amigas 'defines'