ReactOS 0.4.15-dev-7918-g2a2556c
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
45extern "C" {
46#endif
47
48/*
49 * The XML memory wrapper support 4 basic overloadable functions.
50 */
57typedef void (XMLCALL *xmlFreeFunc)(void *mem);
66typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size);
67
77typedef void *(XMLCALL *xmlReallocFunc)(void *mem, size_t size);
78
87typedef char *(XMLCALL *xmlStrdupFunc)(const char *str);
88
89/*
90 * The 4 interfaces used for all memory handling within libxml.
91LIBXML_DLL_IMPORT xmlFreeFunc xmlFree;
92LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc;
93LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic;
94LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc;
95LIBXML_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 */
104 xmlMemSetup (xmlFreeFunc freeFunc,
105 xmlMallocFunc mallocFunc,
106 xmlReallocFunc reallocFunc,
107 xmlStrdupFunc strdupFunc);
109 xmlMemGet (xmlFreeFunc *freeFunc,
110 xmlMallocFunc *mallocFunc,
111 xmlReallocFunc *reallocFunc,
112 xmlStrdupFunc *strdupFunc);
114 xmlGcMemSetup (xmlFreeFunc freeFunc,
115 xmlMallocFunc mallocFunc,
116 xmlMallocFunc mallocAtomicFunc,
117 xmlReallocFunc reallocFunc,
118 xmlStrdupFunc strdupFunc);
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 */
131 xmlInitMemory (void);
132
133/*
134 * Cleanup of the memory layer.
135 */
138 xmlCleanupMemory (void);
139/*
140 * These are specific to the XML debug memory wrapper.
141 */
143 xmlMemUsed (void);
145 xmlMemBlocks (void);
147 xmlMemDisplay (FILE *fp);
149 xmlMemDisplayLast(FILE *fp, long nbBytes);
151 xmlMemShow (FILE *fp, int nr);
153 xmlMemoryDump (void);
154XMLPUBFUN void * XMLCALL
156XMLPUBFUN void * XMLCALL
157 xmlMemRealloc (void *ptr,size_t size);
159 xmlMemFree (void *ptr);
160XMLPUBFUN char * XMLCALL
161 xmlMemoryStrdup (const char *str);
162XMLPUBFUN void * XMLCALL
163 xmlMallocLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
164XMLPUBFUN void * XMLCALL
165 xmlReallocLoc (void *ptr, size_t size, const char *file, int line);
166XMLPUBFUN void * XMLCALL
168XMLPUBFUN char * XMLCALL
169 xmlMemStrdupLoc (const char *str, const char *file, int line);
170
171
172#ifdef DEBUG_MEMORY_LOCATION
181#define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__)
191#define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__)
201#define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__)
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
#define XMLCALL
GLsizeiptr size
Definition: glext.h:5919
static PVOID ptr
Definition: dispmode.c:27
ULONG nr
Definition: thread.c:7
const WCHAR * str
Definition: fci.c:127
Definition: parser.c:49
Definition: mem.c:156
#define XMLPUBFUN
Definition: xmlexports.h:61
XMLPUBFUN int XMLCALL xmlMemUsed(void)
Definition: xmlmemory.c:568
void *(XMLCALL * xmlReallocFunc)(void *mem, size_t size)
Definition: xmlmemory.h:77
XMLPUBFUN int XMLCALL xmlGcMemSetup(xmlFreeFunc freeFunc, xmlMallocFunc mallocFunc, xmlMallocFunc mallocAtomicFunc, xmlReallocFunc reallocFunc, xmlStrdupFunc strdupFunc)
Definition: xmlmemory.c:1088
char *(XMLCALL * xmlStrdupFunc)(const char *str)
Definition: xmlmemory.h:87
XMLPUBFUN void XMLCALL xmlMemShow(FILE *fp, int nr)
Definition: xmlmemory.c:865
XMLPUBFUN int XMLCALL xmlMemBlocks(void)
Definition: xmlmemory.c:586
XMLPUBFUN void *XMLCALL xmlMallocLoc(size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1)
Definition: xmlmemory.c:145
XMLPUBFUN void XMLCALL xmlMemFree(void *ptr)
Definition: xmlmemory.c:414
XMLPUBFUN void XMLCALL xmlMemDisplay(FILE *fp)
Definition: xmlmemory.c:739
void(XMLCALL * xmlFreeFunc)(void *mem)
Definition: xmlmemory.h:57
XML_DEPRECATED XMLPUBFUN void XMLCALL xmlCleanupMemory(void)
Definition: xmlmemory.c:989
XMLPUBFUN int XMLCALL xmlGcMemGet(xmlFreeFunc *freeFunc, xmlMallocFunc *mallocFunc, xmlMallocFunc *mallocAtomicFunc, xmlReallocFunc *reallocFunc, xmlStrdupFunc *strdupFunc)
Definition: xmlmemory.c:1132
XMLPUBFUN void XMLCALL xmlMemoryDump(void)
Definition: xmlmemory.c:910
XMLPUBFUN void *XMLCALL xmlMemMalloc(size_t size) LIBXML_ATTR_ALLOC_SIZE(1)
Definition: xmlmemory.c:294
XMLPUBFUN int XMLCALL xmlMemSetup(xmlFreeFunc freeFunc, xmlMallocFunc mallocFunc, xmlReallocFunc reallocFunc, xmlStrdupFunc strdupFunc)
Definition: xmlmemory.c:1022
XML_DEPRECATED XMLPUBFUN int XMLCALL xmlInitMemory(void)
Definition: xmlmemory.c:946
XMLPUBFUN char *XMLCALL xmlMemoryStrdup(const char *str)
Definition: xmlmemory.c:555
XMLPUBFUN char *XMLCALL xmlMemStrdupLoc(const char *str, const char *file, int line)
Definition: xmlmemory.c:490
XMLPUBFUN void *XMLCALL xmlMallocAtomicLoc(size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1)
Definition: xmlmemory.c:221
XMLPUBFUN void *XMLCALL xmlReallocLoc(void *ptr, size_t size, const char *file, int line)
Definition: xmlmemory.c:312
XMLPUBFUN int XMLCALL xmlMemGet(xmlFreeFunc *freeFunc, xmlMallocFunc *mallocFunc, xmlReallocFunc *reallocFunc, xmlStrdupFunc *strdupFunc)
Definition: xmlmemory.c:1060
void * LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size)
Definition: xmlmemory.h:66
XMLPUBFUN void *XMLCALL xmlMemRealloc(void *ptr, size_t size)
Definition: xmlmemory.c:403
XMLPUBFUN void XMLCALL xmlMemDisplayLast(FILE *fp, long nbBytes)
Definition: xmlmemory.c:668
#define XML_DEPRECATED
Definition: xmlversion.h:494
#define const
Definition: zconf.h:233