Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
hhhrrrttt222111
GitHub Repository: hhhrrrttt222111/Dorkify
Path: blob/master/venv/Lib/site-packages/lxml/includes/libxml/xmlmemory.h
811 views
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
#ifdef DEBUG
30
#ifndef DEBUG_MEMORY
31
#define DEBUG_MEMORY
32
#endif
33
#endif
34
35
/**
36
* DEBUG_MEMORY_LOCATION:
37
*
38
* DEBUG_MEMORY_LOCATION should be activated only when debugging
39
* libxml i.e. if libxml has been configured with --with-debug-mem too.
40
*/
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
*/
51
/**
52
* xmlFreeFunc:
53
* @mem: an already allocated block of memory
54
*
55
* Signature for a free() implementation.
56
*/
57
typedef void (XMLCALL *xmlFreeFunc)(void *mem);
58
/**
59
* xmlMallocFunc:
60
* @size: the size requested in bytes
61
*
62
* Signature for a malloc() implementation.
63
*
64
* Returns a pointer to the newly allocated block or NULL in case of error.
65
*/
66
typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size);
67
68
/**
69
* xmlReallocFunc:
70
* @mem: an already allocated block of memory
71
* @size: the new size requested in bytes
72
*
73
* Signature for a realloc() implementation.
74
*
75
* Returns a pointer to the newly reallocated block or NULL in case of error.
76
*/
77
typedef void *(XMLCALL *xmlReallocFunc)(void *mem, size_t size);
78
79
/**
80
* xmlStrdupFunc:
81
* @str: a zero terminated string
82
*
83
* Signature for an strdup() implementation.
84
*
85
* Returns the copy of the string or NULL in case of error.
86
*/
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
*/
129
XMLPUBFUN int XMLCALL
130
xmlInitMemory (void);
131
132
/*
133
* Cleanup of the memory layer.
134
*/
135
XMLPUBFUN void XMLCALL
136
xmlCleanupMemory (void);
137
/*
138
* These are specific to the XML debug memory wrapper.
139
*/
140
XMLPUBFUN int XMLCALL
141
xmlMemUsed (void);
142
XMLPUBFUN int XMLCALL
143
xmlMemBlocks (void);
144
XMLPUBFUN void XMLCALL
145
xmlMemDisplay (FILE *fp);
146
XMLPUBFUN void XMLCALL
147
xmlMemDisplayLast(FILE *fp, long nbBytes);
148
XMLPUBFUN void XMLCALL
149
xmlMemShow (FILE *fp, int nr);
150
XMLPUBFUN void XMLCALL
151
xmlMemoryDump (void);
152
XMLPUBFUN void * XMLCALL
153
xmlMemMalloc (size_t size) LIBXML_ATTR_ALLOC_SIZE(1);
154
XMLPUBFUN void * XMLCALL
155
xmlMemRealloc (void *ptr,size_t size);
156
XMLPUBFUN void XMLCALL
157
xmlMemFree (void *ptr);
158
XMLPUBFUN char * XMLCALL
159
xmlMemoryStrdup (const char *str);
160
XMLPUBFUN void * XMLCALL
161
xmlMallocLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
162
XMLPUBFUN void * XMLCALL
163
xmlReallocLoc (void *ptr, size_t size, const char *file, int line);
164
XMLPUBFUN void * XMLCALL
165
xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
166
XMLPUBFUN char * XMLCALL
167
xmlMemStrdupLoc (const char *str, const char *file, int line);
168
169
170
#ifdef DEBUG_MEMORY_LOCATION
171
/**
172
* xmlMalloc:
173
* @size: number of bytes to allocate
174
*
175
* Wrapper for the malloc() function used in the XML library.
176
*
177
* Returns the pointer to the allocated area or NULL in case of error.
178
*/
179
#define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__)
180
/**
181
* xmlMallocAtomic:
182
* @size: number of bytes to allocate
183
*
184
* Wrapper for the malloc() function used in the XML library for allocation
185
* of block not containing pointers to other areas.
186
*
187
* Returns the pointer to the allocated area or NULL in case of error.
188
*/
189
#define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__)
190
/**
191
* xmlRealloc:
192
* @ptr: pointer to the existing allocated area
193
* @size: number of bytes to allocate
194
*
195
* Wrapper for the realloc() function used in the XML library.
196
*
197
* Returns the pointer to the allocated area or NULL in case of error.
198
*/
199
#define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__)
200
/**
201
* xmlMemStrdup:
202
* @str: pointer to the existing string
203
*
204
* Wrapper for the strdup() function, xmlStrdup() is usually preferred.
205
*
206
* Returns the pointer to the allocated area or NULL in case of error.
207
*/
208
#define xmlMemStrdup(str) xmlMemStrdupLoc((str), __FILE__, __LINE__)
209
210
#endif /* DEBUG_MEMORY_LOCATION */
211
212
#ifdef __cplusplus
213
}
214
#endif /* __cplusplus */
215
216
#ifndef __XML_GLOBALS_H
217
#ifndef __XML_THREADS_H__
218
#include <libxml/threads.h>
219
#include <libxml/globals.h>
220
#endif
221
#endif
222
223
#endif /* __DEBUG_MEMORY_ALLOC__ */
224
225
226