00001
00002
00003
00004
00005
00006
00007
00008
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
00027
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
00050
00057 typedef void (XMLCALL *xmlFreeFunc)(void *mem);
00066 typedef void *(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
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
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
00128
00129 XMLPUBFUN int XMLCALL
00130 xmlInitMemory (void);
00131
00132
00133
00134
00135 XMLPUBFUN void XMLCALL
00136 xmlCleanupMemory (void);
00137
00138
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 xmlMemShow (FILE *fp, int nr);
00148 XMLPUBFUN void XMLCALL
00149 xmlMemoryDump (void);
00150 XMLPUBFUN void * XMLCALL
00151 xmlMemMalloc (size_t size);
00152 XMLPUBFUN void * XMLCALL
00153 xmlMemRealloc (void *ptr,size_t size);
00154 XMLPUBFUN void XMLCALL
00155 xmlMemFree (void *ptr);
00156 XMLPUBFUN char * XMLCALL
00157 xmlMemoryStrdup (const char *str);
00158 XMLPUBFUN void * XMLCALL
00159 xmlMallocLoc (size_t size, const char *file, int line);
00160 XMLPUBFUN void * XMLCALL
00161 xmlReallocLoc (void *ptr, size_t size, const char *file, int line);
00162 XMLPUBFUN void * XMLCALL
00163 xmlMallocAtomicLoc (size_t size, const char *file, int line);
00164 XMLPUBFUN char * XMLCALL
00165 xmlMemStrdupLoc (const char *str, const char *file, int line);
00166
00167
00168 #ifdef DEBUG_MEMORY_LOCATION
00169
00177 #define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__)
00178
00187 #define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__)
00188
00197 #define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__)
00198
00206 #define xmlMemStrdup(str) xmlMemStrdupLoc((str), __FILE__, __LINE__)
00207
00208 #endif
00209
00210 #ifdef __cplusplus
00211 }
00212 #endif
00213
00214 #ifndef __XML_GLOBALS_H
00215 #ifndef __XML_THREADS_H__
00216 #include <libxml/threads.h>
00217 #include <libxml/globals.h>
00218 #endif
00219 #endif
00220
00221 #endif
00222