xref: /aosp_15_r20/external/libxml2/os400/libxmlrpg/xmlmemory.rpgle (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker      * Summary: interface for the memory allocator
2*7c568831SAndroid Build Coastguard Worker      * Description: provides interfaces for the memory allocator,
3*7c568831SAndroid Build Coastguard Worker      *              including debugging capabilities.
4*7c568831SAndroid Build Coastguard Worker      *
5*7c568831SAndroid Build Coastguard Worker      * Copy: See Copyright for the status of this software.
6*7c568831SAndroid Build Coastguard Worker      *
7*7c568831SAndroid Build Coastguard Worker      * Author: Patrick Monnerat <[email protected]>, DATASPHERE S.A.
8*7c568831SAndroid Build Coastguard Worker
9*7c568831SAndroid Build Coastguard Worker      /if not defined(DEBUG_MEMORY_ALLOC__)
10*7c568831SAndroid Build Coastguard Worker      /define DEBUG_MEMORY_ALLOC__
11*7c568831SAndroid Build Coastguard Worker
12*7c568831SAndroid Build Coastguard Worker      /include "libxmlrpg/xmlversion"
13*7c568831SAndroid Build Coastguard Worker      /include "libxmlrpg/xmlTypesC"
14*7c568831SAndroid Build Coastguard Worker
15*7c568831SAndroid Build Coastguard Worker      * DEBUG_MEMORY:
16*7c568831SAndroid Build Coastguard Worker      *
17*7c568831SAndroid Build Coastguard Worker      * DEBUG_MEMORY replaces the allocator with a collect and debug
18*7c568831SAndroid Build Coastguard Worker      * shell to the libc allocator.
19*7c568831SAndroid Build Coastguard Worker      * DEBUG_MEMORY should only be activated when debugging
20*7c568831SAndroid Build Coastguard Worker      * libxml i.e. if libxml has been configured with --with-debug-mem too.
21*7c568831SAndroid Build Coastguard Worker
22*7c568831SAndroid Build Coastguard Worker      * /define DEBUG_MEMORY_FREED
23*7c568831SAndroid Build Coastguard Worker      * /define DEBUG_MEMORY_LOCATION
24*7c568831SAndroid Build Coastguard Worker
25*7c568831SAndroid Build Coastguard Worker      /if defined(DEBUG)
26*7c568831SAndroid Build Coastguard Worker      /if not defined(DEBUG_MEMORY)
27*7c568831SAndroid Build Coastguard Worker      /define DEBUG_MEMORY
28*7c568831SAndroid Build Coastguard Worker      /endif
29*7c568831SAndroid Build Coastguard Worker      /endif
30*7c568831SAndroid Build Coastguard Worker
31*7c568831SAndroid Build Coastguard Worker      * DEBUG_MEMORY_LOCATION:
32*7c568831SAndroid Build Coastguard Worker      *
33*7c568831SAndroid Build Coastguard Worker      * DEBUG_MEMORY_LOCATION should be activated only when debugging
34*7c568831SAndroid Build Coastguard Worker      * libxml i.e. if libxml has been configured with --with-debug-mem too.
35*7c568831SAndroid Build Coastguard Worker
36*7c568831SAndroid Build Coastguard Worker      /if defined(DEBUG_MEMORY_LOCATION)
37*7c568831SAndroid Build Coastguard Worker      /endif
38*7c568831SAndroid Build Coastguard Worker
39*7c568831SAndroid Build Coastguard Worker      * The XML memory wrapper support 4 basic overloadable functions.
40*7c568831SAndroid Build Coastguard Worker
41*7c568831SAndroid Build Coastguard Worker      * xmlFreeFunc:
42*7c568831SAndroid Build Coastguard Worker      * @mem: an already allocated block of memory
43*7c568831SAndroid Build Coastguard Worker      *
44*7c568831SAndroid Build Coastguard Worker      * Signature for a free() implementation.
45*7c568831SAndroid Build Coastguard Worker
46*7c568831SAndroid Build Coastguard Worker     d xmlFreeFunc     s               *   based(######typedef######)
47*7c568831SAndroid Build Coastguard Worker     d                                     procptr
48*7c568831SAndroid Build Coastguard Worker
49*7c568831SAndroid Build Coastguard Worker      * xmlMallocFunc:
50*7c568831SAndroid Build Coastguard Worker      * @size:  the size requested in bytes
51*7c568831SAndroid Build Coastguard Worker      *
52*7c568831SAndroid Build Coastguard Worker      * Signature for a malloc() implementation.
53*7c568831SAndroid Build Coastguard Worker      *
54*7c568831SAndroid Build Coastguard Worker      * Returns a pointer to the newly allocated block or NULL in case of error.
55*7c568831SAndroid Build Coastguard Worker
56*7c568831SAndroid Build Coastguard Worker     d xmlMallocFunc   s               *   based(######typedef######)
57*7c568831SAndroid Build Coastguard Worker     d                                     procptr
58*7c568831SAndroid Build Coastguard Worker
59*7c568831SAndroid Build Coastguard Worker      * xmlReallocFunc:
60*7c568831SAndroid Build Coastguard Worker      * @mem: an already allocated block of memory
61*7c568831SAndroid Build Coastguard Worker      * @size:  the new size requested in bytes
62*7c568831SAndroid Build Coastguard Worker      *
63*7c568831SAndroid Build Coastguard Worker      * Signature for a realloc() implementation.
64*7c568831SAndroid Build Coastguard Worker      *
65*7c568831SAndroid Build Coastguard Worker      * Returns a pointer to the newly reallocated block or NULL in case of error.
66*7c568831SAndroid Build Coastguard Worker
67*7c568831SAndroid Build Coastguard Worker     d xmlReallocFunc  s               *   based(######typedef######)
68*7c568831SAndroid Build Coastguard Worker     d                                     procptr
69*7c568831SAndroid Build Coastguard Worker
70*7c568831SAndroid Build Coastguard Worker      * xmlStrdupFunc:
71*7c568831SAndroid Build Coastguard Worker      * @str: a zero terminated string
72*7c568831SAndroid Build Coastguard Worker      *
73*7c568831SAndroid Build Coastguard Worker      * Signature for an strdup() implementation.
74*7c568831SAndroid Build Coastguard Worker      *
75*7c568831SAndroid Build Coastguard Worker      * Returns the copy of the string or NULL in case of error.
76*7c568831SAndroid Build Coastguard Worker
77*7c568831SAndroid Build Coastguard Worker     d xmlStrdupFunc   s               *   based(######typedef######)
78*7c568831SAndroid Build Coastguard Worker     d                                     procptr
79*7c568831SAndroid Build Coastguard Worker
80*7c568831SAndroid Build Coastguard Worker      * The 5 interfaces used for all memory handling within libxml.
81*7c568831SAndroid Build Coastguard Worker      * Since indirect calls are only supported via a based prototype,
82*7c568831SAndroid Build Coastguard Worker      *   storage is accessed via functions.
83*7c568831SAndroid Build Coastguard Worker
84*7c568831SAndroid Build Coastguard Worker     d get_xmlFree     pr                  extproc('__get_xmlFree')
85*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlFreeFunc)
86*7c568831SAndroid Build Coastguard Worker
87*7c568831SAndroid Build Coastguard Worker     d set_xmlFree     pr                  extproc('__set_xmlFree')
88*7c568831SAndroid Build Coastguard Worker     d  func                               value like(xmlFreeFunc)
89*7c568831SAndroid Build Coastguard Worker
90*7c568831SAndroid Build Coastguard Worker     d xmlFree         pr                  extproc('__call_xmlFree')
91*7c568831SAndroid Build Coastguard Worker     d  mem                            *   value                                void *
92*7c568831SAndroid Build Coastguard Worker
93*7c568831SAndroid Build Coastguard Worker     d get_xmlMalloc   pr                  extproc('__get_xmlMalloc')
94*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlMallocFunc)
95*7c568831SAndroid Build Coastguard Worker
96*7c568831SAndroid Build Coastguard Worker     d set_xmlMalloc   pr                  extproc('__set_xmlMalloc')
97*7c568831SAndroid Build Coastguard Worker     d  func                               value like(xmlMallocFunc)
98*7c568831SAndroid Build Coastguard Worker
99*7c568831SAndroid Build Coastguard Worker     d xmlMalloc       pr              *   extproc('__call_xmlMalloc')          void *
100*7c568831SAndroid Build Coastguard Worker     d  size                               value like(xmlCsize_t)
101*7c568831SAndroid Build Coastguard Worker
102*7c568831SAndroid Build Coastguard Worker     d get_xmlMallocAtomic...
103*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('__get_xmlMallocAtomic')
104*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlMallocFunc)
105*7c568831SAndroid Build Coastguard Worker
106*7c568831SAndroid Build Coastguard Worker     d set_xmlMallocAtomic...
107*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('__set_xmlMallocAtomic')
108*7c568831SAndroid Build Coastguard Worker     d  func                               value like(xmlMallocFunc)
109*7c568831SAndroid Build Coastguard Worker
110*7c568831SAndroid Build Coastguard Worker     d xmlMallocAtomic...
111*7c568831SAndroid Build Coastguard Worker     d                 pr              *   extproc('__call_xmlMallocAtomic')    void *
112*7c568831SAndroid Build Coastguard Worker     d  size                               value like(xmlCsize_t)
113*7c568831SAndroid Build Coastguard Worker
114*7c568831SAndroid Build Coastguard Worker     d get_xmlRealloc  pr                  extproc('__get_xmlRealloc')
115*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlReallocFunc)
116*7c568831SAndroid Build Coastguard Worker
117*7c568831SAndroid Build Coastguard Worker     d set_xmlRealloc  pr                  extproc('__set_xmlRealloc')
118*7c568831SAndroid Build Coastguard Worker     d  func                               value like(xmlReallocFunc)
119*7c568831SAndroid Build Coastguard Worker
120*7c568831SAndroid Build Coastguard Worker     d xmlRealloc      pr              *   extproc('__call_xmlRealloc')         void *
121*7c568831SAndroid Build Coastguard Worker     d  mem                            *   value                                void *
122*7c568831SAndroid Build Coastguard Worker     d  size                               value like(xmlCsize_t)
123*7c568831SAndroid Build Coastguard Worker
124*7c568831SAndroid Build Coastguard Worker     d get_xmlMemStrdup...
125*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('__get_xmlMemStrdup')
126*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlStrdupFunc)
127*7c568831SAndroid Build Coastguard Worker
128*7c568831SAndroid Build Coastguard Worker     d set_xmlMemStrdup...
129*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('__set_xmlMemstrdup')
130*7c568831SAndroid Build Coastguard Worker     d  func                               value like(xmlStrdupFunc)
131*7c568831SAndroid Build Coastguard Worker
132*7c568831SAndroid Build Coastguard Worker     d xmlMemStrdup    pr              *   extproc('__call_xmlMemStrdup')          void *
133*7c568831SAndroid Build Coastguard Worker     d  str                            *   value options(*string)               const char *
134*7c568831SAndroid Build Coastguard Worker
135*7c568831SAndroid Build Coastguard Worker      * The way to overload the existing functions.
136*7c568831SAndroid Build Coastguard Worker      * The xmlGc function have an extra entry for atomic block
137*7c568831SAndroid Build Coastguard Worker      * allocations useful for garbage collected memory allocators
138*7c568831SAndroid Build Coastguard Worker
139*7c568831SAndroid Build Coastguard Worker     d xmlMemSetup     pr                  extproc('xmlMemSetup')
140*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
141*7c568831SAndroid Build Coastguard Worker     d  freeFunc                           value like(xmlFreeFunc)
142*7c568831SAndroid Build Coastguard Worker     d  mallocFunc                         value like(xmlMallocFunc)
143*7c568831SAndroid Build Coastguard Worker     d  reallocFunc                        value like(xmlReallocFunc)
144*7c568831SAndroid Build Coastguard Worker     d  strdupFunc                         value like(xmlStrdupFunc)
145*7c568831SAndroid Build Coastguard Worker
146*7c568831SAndroid Build Coastguard Worker     d xmlMemGet       pr                  extproc('xmlMemGet')
147*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
148*7c568831SAndroid Build Coastguard Worker     d  freeFunc                           like(xmlFreeFunc)
149*7c568831SAndroid Build Coastguard Worker     d  mallocFunc                         like(xmlMallocFunc)
150*7c568831SAndroid Build Coastguard Worker     d  reallocFunc                        like(xmlReallocFunc)
151*7c568831SAndroid Build Coastguard Worker     d  strdupFunc                         like(xmlStrdupFunc)
152*7c568831SAndroid Build Coastguard Worker
153*7c568831SAndroid Build Coastguard Worker     d xmlGcMemSetup   pr                  extproc('xmlGcMemSetup')
154*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
155*7c568831SAndroid Build Coastguard Worker     d  freeFunc                           value like(xmlFreeFunc)
156*7c568831SAndroid Build Coastguard Worker     d  mallocFunc                         value like(xmlMallocFunc)
157*7c568831SAndroid Build Coastguard Worker     d  mallocAtomicFunc...
158*7c568831SAndroid Build Coastguard Worker     d                                     value like(xmlMallocFunc)
159*7c568831SAndroid Build Coastguard Worker     d  reallocFunc                        value like(xmlReallocFunc)
160*7c568831SAndroid Build Coastguard Worker     d  strdupFunc                         value like(xmlStrdupFunc)
161*7c568831SAndroid Build Coastguard Worker
162*7c568831SAndroid Build Coastguard Worker     d xmlGcMemGet     pr                  extproc('xmlGcMemGet')
163*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
164*7c568831SAndroid Build Coastguard Worker     d  freeFunc                           like(xmlFreeFunc)
165*7c568831SAndroid Build Coastguard Worker     d  mallocFunc                         like(xmlMallocFunc)
166*7c568831SAndroid Build Coastguard Worker     d  mallocAtomicFunc...
167*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlMallocFunc)
168*7c568831SAndroid Build Coastguard Worker     d  reallocFunc                        like(xmlReallocFunc)
169*7c568831SAndroid Build Coastguard Worker     d  strdupFunc                         like(xmlStrdupFunc)
170*7c568831SAndroid Build Coastguard Worker
171*7c568831SAndroid Build Coastguard Worker      * Initialization of the memory layer.
172*7c568831SAndroid Build Coastguard Worker
173*7c568831SAndroid Build Coastguard Worker     d xmlInitMemory   pr                  extproc('xmlInitMemory')
174*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
175*7c568831SAndroid Build Coastguard Worker
176*7c568831SAndroid Build Coastguard Worker      * Cleanup of the memory layer.
177*7c568831SAndroid Build Coastguard Worker
178*7c568831SAndroid Build Coastguard Worker     d xmlCleanupMemory...
179*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlCleanupMemory')
180*7c568831SAndroid Build Coastguard Worker
181*7c568831SAndroid Build Coastguard Worker      * These are specific to the XML debug memory wrapper.
182*7c568831SAndroid Build Coastguard Worker
183*7c568831SAndroid Build Coastguard Worker     d xmlMemUsed      pr                  extproc('xmlMemUsed')
184*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
185*7c568831SAndroid Build Coastguard Worker
186*7c568831SAndroid Build Coastguard Worker     d xmlMemBlocks    pr                  extproc('xmlMemBlocks')
187*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
188*7c568831SAndroid Build Coastguard Worker
189*7c568831SAndroid Build Coastguard Worker     d xmlMemDisplay   pr                  extproc('xmlMemDisplay')
190*7c568831SAndroid Build Coastguard Worker     d  fp                             *   value                                FILE *
191*7c568831SAndroid Build Coastguard Worker
192*7c568831SAndroid Build Coastguard Worker     d xmlMmDisplayLast...
193*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlMemDisplayLast')
194*7c568831SAndroid Build Coastguard Worker     d  fp                             *   value                                FILE *
195*7c568831SAndroid Build Coastguard Worker     d  nbBytes                            value like(xmlClong)
196*7c568831SAndroid Build Coastguard Worker
197*7c568831SAndroid Build Coastguard Worker     d xmlMemShow      pr                  extproc('xmlMemShow')
198*7c568831SAndroid Build Coastguard Worker     d  fp                             *   value                                FILE *
199*7c568831SAndroid Build Coastguard Worker     d  nr                                 value like(xmlCint)
200*7c568831SAndroid Build Coastguard Worker
201*7c568831SAndroid Build Coastguard Worker     d xmlMemoryDump   pr                  extproc('xmlMemoryDump')
202*7c568831SAndroid Build Coastguard Worker
203*7c568831SAndroid Build Coastguard Worker     d xmlMemMalloc    pr              *   extproc('xmlMemMalloc')              void *
204*7c568831SAndroid Build Coastguard Worker     d  size                               value like(xmlCsize_t)
205*7c568831SAndroid Build Coastguard Worker
206*7c568831SAndroid Build Coastguard Worker     d xmlMemRealloc   pr              *   extproc('xmlMemRealloc')             void *
207*7c568831SAndroid Build Coastguard Worker     d  ptr                            *   value                                void *
208*7c568831SAndroid Build Coastguard Worker     d  size                               value like(xmlCsize_t)
209*7c568831SAndroid Build Coastguard Worker
210*7c568831SAndroid Build Coastguard Worker     d xmlMemFree      pr                  extproc('xmlMemFree')
211*7c568831SAndroid Build Coastguard Worker     d  ptr                            *   value                                void *
212*7c568831SAndroid Build Coastguard Worker
213*7c568831SAndroid Build Coastguard Worker     d xmlMemoryStrdup...
214*7c568831SAndroid Build Coastguard Worker     d                 pr              *   extproc('xmlMemoryStrdup')           char *
215*7c568831SAndroid Build Coastguard Worker     d  str                            *   value options(*string)               const char *
216*7c568831SAndroid Build Coastguard Worker
217*7c568831SAndroid Build Coastguard Worker     d xmlMallocLoc    pr              *   extproc('xmlMallocLoc')              void *
218*7c568831SAndroid Build Coastguard Worker     d  size                               value like(xmlCsize_t)
219*7c568831SAndroid Build Coastguard Worker     d  file                           *   value options(*string)               const char *
220*7c568831SAndroid Build Coastguard Worker     d  line                               value like(xmlCint)
221*7c568831SAndroid Build Coastguard Worker
222*7c568831SAndroid Build Coastguard Worker     d xmlReallocLoc   pr              *   extproc('xmlReallocLoc')              void *
223*7c568831SAndroid Build Coastguard Worker     d  ptr                            *   value                                void *
224*7c568831SAndroid Build Coastguard Worker     d  size                               value like(xmlCsize_t)
225*7c568831SAndroid Build Coastguard Worker     d  file                           *   value options(*string)               const char *
226*7c568831SAndroid Build Coastguard Worker     d  line                               value like(xmlCint)
227*7c568831SAndroid Build Coastguard Worker
228*7c568831SAndroid Build Coastguard Worker     d xmlMallocAtomicLoc...
229*7c568831SAndroid Build Coastguard Worker     d                 pr              *   extproc('xmlMallocAtomicLoc')        void *
230*7c568831SAndroid Build Coastguard Worker     d  size                               value like(xmlCsize_t)
231*7c568831SAndroid Build Coastguard Worker     d  file                           *   value options(*string)               const char *
232*7c568831SAndroid Build Coastguard Worker     d  line                               value like(xmlCint)
233*7c568831SAndroid Build Coastguard Worker
234*7c568831SAndroid Build Coastguard Worker     d xmlMemStrdupLoc...
235*7c568831SAndroid Build Coastguard Worker     d                 pr              *   extproc('xmlMemStrdupLoc')           char *
236*7c568831SAndroid Build Coastguard Worker     d  str                            *   value options(*string)               const char *
237*7c568831SAndroid Build Coastguard Worker     d  file                           *   value options(*string)               const char *
238*7c568831SAndroid Build Coastguard Worker     d  line                               value like(xmlCint)
239*7c568831SAndroid Build Coastguard Worker
240*7c568831SAndroid Build Coastguard Worker      /if not defined(XML_GLOBALS_H)
241*7c568831SAndroid Build Coastguard Worker      /if not defined(XML_THREADS_H__)
242*7c568831SAndroid Build Coastguard Worker      /include "libxmlrpg/threads"
243*7c568831SAndroid Build Coastguard Worker      /include "libxmlrpg/globals"
244*7c568831SAndroid Build Coastguard Worker      /endif
245*7c568831SAndroid Build Coastguard Worker      /endif
246*7c568831SAndroid Build Coastguard Worker
247*7c568831SAndroid Build Coastguard Worker      /endif                                                                    DEBUG_MEMORY_ALLOC__
248