ReactOS  0.4.15-dev-5496-g599ba9c
xmlmemory.h
Go to the documentation of this file.
1 /*
2  * Summary: interface for the memory allocator
3  * Description: provides interfaces for the memory allocator,
4  * including debugging capabilities.
5  *
6  * Copy: See Copyright for the status of this software.
7  *
8  * Author: Daniel Veillard
9  */
10 
11 
12 #ifndef __DEBUG_MEMORY_ALLOC__
13 #define __DEBUG_MEMORY_ALLOC__
14 
15 #include <stdio.h>
16 #include <libxml/xmlversion.h>
17 
26 /* #define DEBUG_MEMORY_FREED */
27 /* #define DEBUG_MEMORY_LOCATION */
28 
29 #ifdef DEBUG
30 #ifndef DEBUG_MEMORY
31 #define DEBUG_MEMORY
32 #endif
33 #endif
34 
41 #ifdef DEBUG_MEMORY_LOCATION
42 #endif
43 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47 
48 /*
49  * The XML memory wrapper support 4 basic overloadable functions.
50  */
57 typedef void (XMLCALL *xmlFreeFunc)(void *mem);
66 typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size);
67 
77 typedef void *(XMLCALL *xmlReallocFunc)(void *mem, size_t size);
78 
87 typedef char *(XMLCALL *xmlStrdupFunc)(const char *str);
88 
89 /*
90  * The 4 interfaces used for all memory handling within libxml.
91 LIBXML_DLL_IMPORT xmlFreeFunc xmlFree;
92 LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc;
93 LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic;
94 LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc;
95 LIBXML_DLL_IMPORT xmlStrdupFunc xmlMemStrdup;
96  */
97 
98 /*
99  * The way to overload the existing functions.
100  * The xmlGc function have an extra entry for atomic block
101  * allocations useful for garbage collected memory allocators
102  */
103 XMLPUBFUN int XMLCALL
104  xmlMemSetup (xmlFreeFunc freeFunc,
105  xmlMallocFunc mallocFunc,
106  xmlReallocFunc reallocFunc,
107  xmlStrdupFunc strdupFunc);
108 XMLPUBFUN int XMLCALL
109  xmlMemGet (xmlFreeFunc *freeFunc,
110  xmlMallocFunc *mallocFunc,
111  xmlReallocFunc *reallocFunc,
112  xmlStrdupFunc *strdupFunc);
113 XMLPUBFUN int XMLCALL
114  xmlGcMemSetup (xmlFreeFunc freeFunc,
115  xmlMallocFunc mallocFunc,
116  xmlMallocFunc mallocAtomicFunc,
117  xmlReallocFunc reallocFunc,
118  xmlStrdupFunc strdupFunc);
119 XMLPUBFUN int XMLCALL
120  xmlGcMemGet (xmlFreeFunc *freeFunc,
121  xmlMallocFunc *mallocFunc,
122  xmlMallocFunc *mallocAtomicFunc,
123  xmlReallocFunc *reallocFunc,
124  xmlStrdupFunc *strdupFunc);
125 
126 /*
127  * Initialization of the memory layer.
128  */
130 XMLPUBFUN int XMLCALL
131  xmlInitMemory (void);
132 
133 /*
134  * Cleanup of the memory layer.
135  */
137 XMLPUBFUN void XMLCALL
138  xmlCleanupMemory (void);
139 /*
140  * These are specific to the XML debug memory wrapper.
141  */
142 XMLPUBFUN int XMLCALL
143  xmlMemUsed (void);
144 XMLPUBFUN int XMLCALL
145  xmlMemBlocks (void);
146 XMLPUBFUN void XMLCALL
147  xmlMemDisplay (FILE *fp);
148 XMLPUBFUN void XMLCALL
149  xmlMemDisplayLast(FILE *fp, long nbBytes);
150 XMLPUBFUN void XMLCALL
151  xmlMemShow (FILE *fp, int nr);
152 XMLPUBFUN void XMLCALL
153  xmlMemoryDump (void);
154 XMLPUBFUN void * XMLCALL
156 XMLPUBFUN void * XMLCALL
157  xmlMemRealloc (void *ptr,size_t size);
158 XMLPUBFUN void XMLCALL
159  xmlMemFree (void *ptr);
160 XMLPUBFUN char * XMLCALL
161  xmlMemoryStrdup (const char *str);
162 XMLPUBFUN void * XMLCALL
163  xmlMallocLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
164 XMLPUBFUN void * XMLCALL
165  xmlReallocLoc (void *ptr, size_t size, const char *file, int line);
166 XMLPUBFUN void * XMLCALL
168 XMLPUBFUN char * XMLCALL
169  xmlMemStrdupLoc (const char *str, const char *file, int line);
170 
171 
172 #ifdef DEBUG_MEMORY_LOCATION
173 
181 #define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__)
182 
191 #define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__)
192 
201 #define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__)
202 
210 #define xmlMemStrdup(str) xmlMemStrdupLoc((str), __FILE__, __LINE__)
211 
212 #endif /* DEBUG_MEMORY_LOCATION */
213 
214 #ifdef __cplusplus
215 }
216 #endif /* __cplusplus */
217 
218 #ifndef __XML_GLOBALS_H
219 #ifndef __XML_THREADS_H__
220 #include <libxml/threads.h>
221 #include <libxml/globals.h>
222 #endif
223 #endif
224 
225 #endif /* __DEBUG_MEMORY_ALLOC__ */
226 
XMLPUBFUN int XMLCALL xmlGcMemSetup(xmlFreeFunc freeFunc, xmlMallocFunc mallocFunc, xmlMallocFunc mallocAtomicFunc, xmlReallocFunc reallocFunc, xmlStrdupFunc strdupFunc)
Definition: xmlmemory.c:1088
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define XML_DEPRECATED
Definition: xmlversion.h:494
ULONG nr
Definition: thread.c:7
void(XMLCALL * xmlFreeFunc)(void *mem)
Definition: xmlmemory.h:57
XMLPUBFUN void XMLCALL xmlMemShow(FILE *fp, int nr)
Definition: xmlmemory.c:865
XMLPUBFUN int XMLCALL xmlMemGet(xmlFreeFunc *freeFunc, xmlMallocFunc *mallocFunc, xmlReallocFunc *reallocFunc, xmlStrdupFunc *strdupFunc)
Definition: xmlmemory.c:1060
XMLPUBFUN int XMLCALL xmlMemBlocks(void)
Definition: xmlmemory.c:586
XMLPUBFUN int XMLCALL xmlMemUsed(void)
Definition: xmlmemory.c:568
XMLPUBFUN void *XMLCALL xmlMallocLoc(size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1)
Definition: xmlmemory.c:145
#define XMLPUBFUN
Definition: xmlexports.h:61
void *(XMLCALL * xmlReallocFunc)(void *mem, size_t size)
Definition: xmlmemory.h:77
XMLPUBFUN void *XMLCALL xmlMemMalloc(size_t size) LIBXML_ATTR_ALLOC_SIZE(1)
Definition: xmlmemory.c:294
static PVOID ptr
Definition: dispmode.c:27
char *(XMLCALL * xmlStrdupFunc)(const char *str)
Definition: xmlmemory.h:87
const WCHAR * str
XML_DEPRECATED XMLPUBFUN void XMLCALL xmlCleanupMemory(void)
Definition: xmlmemory.c:989
Definition: parser.c:48
XMLPUBFUN void *XMLCALL xmlMallocAtomicLoc(size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1)
Definition: xmlmemory.c:221
XMLPUBFUN void XMLCALL xmlMemFree(void *ptr)
Definition: xmlmemory.c:414
GLsizeiptr size
Definition: glext.h:5919
XMLPUBFUN void *XMLCALL xmlReallocLoc(void *ptr, size_t size, const char *file, int line)
Definition: xmlmemory.c:312
void * LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size)
Definition: xmlmemory.h:66
XMLPUBFUN void XMLCALL xmlMemoryDump(void)
Definition: xmlmemory.c:910
XML_DEPRECATED XMLPUBFUN int XMLCALL xmlInitMemory(void)
Definition: xmlmemory.c:946
XMLPUBFUN void *XMLCALL xmlMemRealloc(void *ptr, size_t size)
Definition: xmlmemory.c:403
XMLPUBFUN char *XMLCALL xmlMemoryStrdup(const char *str)
Definition: xmlmemory.c:555
XMLPUBFUN int XMLCALL xmlGcMemGet(xmlFreeFunc *freeFunc, xmlMallocFunc *mallocFunc, xmlMallocFunc *mallocAtomicFunc, xmlReallocFunc *reallocFunc, xmlStrdupFunc *strdupFunc)
Definition: xmlmemory.c:1132
XMLPUBFUN char *XMLCALL xmlMemStrdupLoc(const char *str, const char *file, int line)
Definition: xmlmemory.c:490
#define XMLCALL
Definition: mem.c:156
XMLPUBFUN void XMLCALL xmlMemDisplay(FILE *fp)
Definition: xmlmemory.c:739
XMLPUBFUN int XMLCALL xmlMemSetup(xmlFreeFunc freeFunc, xmlMallocFunc mallocFunc, xmlReallocFunc reallocFunc, xmlStrdupFunc strdupFunc)
Definition: xmlmemory.c:1022
#define const
Definition: zconf.h:230
Definition: fci.c:126
XMLPUBFUN void XMLCALL xmlMemDisplayLast(FILE *fp, long nbBytes)
Definition: xmlmemory.c:668