VirtualBox

source: vbox/trunk/src/libs/libxml2-2.9.4/include/libxml/xmlmemory.h@ 78251

Last change on this file since 78251 was 65950, checked in by vboxsync, 8 years ago

libxml 2.9.4: fix export

  • Property svn:eol-style set to native
File size: 5.9 KB
Line 
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
18/**
19 * DEBUG_MEMORY:
20 *
21 * DEBUG_MEMORY replaces the allocator with a collect and debug
22 * shell to the libc allocator.
23 * DEBUG_MEMORY should only be activated when debugging
24 * libxml i.e. if libxml has been configured with --with-debug-mem too.
25 */
26/* #define DEBUG_MEMORY_FREED */
27/* #define DEBUG_MEMORY_LOCATION */
28
29#ifndef VBOX /* Avoid spewing out boring libxml2 memory logging. */
30#ifdef DEBUG
31#ifndef DEBUG_MEMORY
32#define DEBUG_MEMORY
33#endif
34#endif
35#endif /* !VBOX */
36
37/**
38 * DEBUG_MEMORY_LOCATION:
39 *
40 * DEBUG_MEMORY_LOCATION should be activated only when debugging
41 * libxml i.e. if libxml has been configured with --with-debug-mem too.
42 */
43#ifdef DEBUG_MEMORY_LOCATION
44#endif
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50/*
51 * The XML memory wrapper support 4 basic overloadable functions.
52 */
53/**
54 * xmlFreeFunc:
55 * @mem: an already allocated block of memory
56 *
57 * Signature for a free() implementation.
58 */
59typedef void (XMLCALL *xmlFreeFunc)(void *mem);
60/**
61 * xmlMallocFunc:
62 * @size: the size requested in bytes
63 *
64 * Signature for a malloc() implementation.
65 *
66 * Returns a pointer to the newly allocated block or NULL in case of error.
67 */
68typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size);
69
70/**
71 * xmlReallocFunc:
72 * @mem: an already allocated block of memory
73 * @size: the new size requested in bytes
74 *
75 * Signature for a realloc() implementation.
76 *
77 * Returns a pointer to the newly reallocated block or NULL in case of error.
78 */
79typedef void *(XMLCALL *xmlReallocFunc)(void *mem, size_t size);
80
81/**
82 * xmlStrdupFunc:
83 * @str: a zero terminated string
84 *
85 * Signature for an strdup() implementation.
86 *
87 * Returns the copy of the string or NULL in case of error.
88 */
89typedef char *(XMLCALL *xmlStrdupFunc)(const char *str);
90
91/*
92 * The 4 interfaces used for all memory handling within libxml.
93LIBXML_DLL_IMPORT xmlFreeFunc xmlFree;
94LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc;
95LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic;
96LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc;
97LIBXML_DLL_IMPORT xmlStrdupFunc xmlMemStrdup;
98 */
99
100/*
101 * The way to overload the existing functions.
102 * The xmlGc function have an extra entry for atomic block
103 * allocations useful for garbage collected memory allocators
104 */
105XMLPUBFUN int XMLCALL
106 xmlMemSetup (xmlFreeFunc freeFunc,
107 xmlMallocFunc mallocFunc,
108 xmlReallocFunc reallocFunc,
109 xmlStrdupFunc strdupFunc);
110XMLPUBFUN int XMLCALL
111 xmlMemGet (xmlFreeFunc *freeFunc,
112 xmlMallocFunc *mallocFunc,
113 xmlReallocFunc *reallocFunc,
114 xmlStrdupFunc *strdupFunc);
115XMLPUBFUN int XMLCALL
116 xmlGcMemSetup (xmlFreeFunc freeFunc,
117 xmlMallocFunc mallocFunc,
118 xmlMallocFunc mallocAtomicFunc,
119 xmlReallocFunc reallocFunc,
120 xmlStrdupFunc strdupFunc);
121XMLPUBFUN int XMLCALL
122 xmlGcMemGet (xmlFreeFunc *freeFunc,
123 xmlMallocFunc *mallocFunc,
124 xmlMallocFunc *mallocAtomicFunc,
125 xmlReallocFunc *reallocFunc,
126 xmlStrdupFunc *strdupFunc);
127
128/*
129 * Initialization of the memory layer.
130 */
131XMLPUBFUN int XMLCALL
132 xmlInitMemory (void);
133
134/*
135 * Cleanup of the memory layer.
136 */
137XMLPUBFUN void XMLCALL
138 xmlCleanupMemory (void);
139/*
140 * These are specific to the XML debug memory wrapper.
141 */
142XMLPUBFUN int XMLCALL
143 xmlMemUsed (void);
144XMLPUBFUN int XMLCALL
145 xmlMemBlocks (void);
146XMLPUBFUN void XMLCALL
147 xmlMemDisplay (FILE *fp);
148XMLPUBFUN void XMLCALL
149 xmlMemDisplayLast(FILE *fp, long nbBytes);
150XMLPUBFUN void XMLCALL
151 xmlMemShow (FILE *fp, int nr);
152XMLPUBFUN void XMLCALL
153 xmlMemoryDump (void);
154XMLPUBFUN void * XMLCALL
155 xmlMemMalloc (size_t size) LIBXML_ATTR_ALLOC_SIZE(1);
156XMLPUBFUN void * XMLCALL
157 xmlMemRealloc (void *ptr,size_t size);
158XMLPUBFUN void XMLCALL
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
167 xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
168XMLPUBFUN char * XMLCALL
169 xmlMemStrdupLoc (const char *str, const char *file, int line);
170
171
172#ifdef DEBUG_MEMORY_LOCATION
173/**
174 * xmlMalloc:
175 * @size: number of bytes to allocate
176 *
177 * Wrapper for the malloc() function used in the XML library.
178 *
179 * Returns the pointer to the allocated area or NULL in case of error.
180 */
181#define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__)
182/**
183 * xmlMallocAtomic:
184 * @size: number of bytes to allocate
185 *
186 * Wrapper for the malloc() function used in the XML library for allocation
187 * of block not containing pointers to other areas.
188 *
189 * Returns the pointer to the allocated area or NULL in case of error.
190 */
191#define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__)
192/**
193 * xmlRealloc:
194 * @ptr: pointer to the existing allocated area
195 * @size: number of bytes to allocate
196 *
197 * Wrapper for the realloc() function used in the XML library.
198 *
199 * Returns the pointer to the allocated area or NULL in case of error.
200 */
201#define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__)
202/**
203 * xmlMemStrdup:
204 * @str: pointer to the existing string
205 *
206 * Wrapper for the strdup() function, xmlStrdup() is usually preferred.
207 *
208 * Returns the pointer to the allocated area or NULL in case of error.
209 */
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
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette