xref: /aosp_15_r20/external/libxml2/os400/rpgsupport.c (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker /**
2*7c568831SAndroid Build Coastguard Worker ***     Additional procedures for ILE/RPG support.
3*7c568831SAndroid Build Coastguard Worker ***
4*7c568831SAndroid Build Coastguard Worker ***     See Copyright for the status of this software.
5*7c568831SAndroid Build Coastguard Worker ***
6*7c568831SAndroid Build Coastguard Worker ***     Author: Patrick Monnerat <[email protected]>, DATASPHERE S.A.
7*7c568831SAndroid Build Coastguard Worker **/
8*7c568831SAndroid Build Coastguard Worker 
9*7c568831SAndroid Build Coastguard Worker #include <sys/types.h>
10*7c568831SAndroid Build Coastguard Worker 
11*7c568831SAndroid Build Coastguard Worker #include <stdarg.h>
12*7c568831SAndroid Build Coastguard Worker 
13*7c568831SAndroid Build Coastguard Worker #include "libxml/xmlmemory.h"
14*7c568831SAndroid Build Coastguard Worker #include "libxml/xpath.h"
15*7c568831SAndroid Build Coastguard Worker #include "libxml/parser.h"
16*7c568831SAndroid Build Coastguard Worker #include "libxml/HTMLparser.h"
17*7c568831SAndroid Build Coastguard Worker 
18*7c568831SAndroid Build Coastguard Worker #include "rpgsupport.h"
19*7c568831SAndroid Build Coastguard Worker 
20*7c568831SAndroid Build Coastguard Worker 
21*7c568831SAndroid Build Coastguard Worker /**
22*7c568831SAndroid Build Coastguard Worker ***     ILE/RPG cannot directly dereference a pointer and has no macros.
23*7c568831SAndroid Build Coastguard Worker ***     The following additional procedures supply these functions.
24*7c568831SAndroid Build Coastguard Worker ***     In addition, the following code is adjusted for threads control at
25*7c568831SAndroid Build Coastguard Worker ***             compile time via the C macros.
26*7c568831SAndroid Build Coastguard Worker **/
27*7c568831SAndroid Build Coastguard Worker 
28*7c568831SAndroid Build Coastguard Worker #define THREADED_VAR(name, type)                                        \
29*7c568831SAndroid Build Coastguard Worker                 type __get_##name(void) { return name; }                \
30*7c568831SAndroid Build Coastguard Worker                 void __set_##name(type arg) { name = arg; }
31*7c568831SAndroid Build Coastguard Worker 
32*7c568831SAndroid Build Coastguard Worker 
THREADED_VAR(xmlFree,xmlFreeFunc)33*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlFree, xmlFreeFunc)
34*7c568831SAndroid Build Coastguard Worker 
35*7c568831SAndroid Build Coastguard Worker void
36*7c568831SAndroid Build Coastguard Worker __call_xmlFree(void * mem)
37*7c568831SAndroid Build Coastguard Worker 
38*7c568831SAndroid Build Coastguard Worker {
39*7c568831SAndroid Build Coastguard Worker         xmlFree(mem);
40*7c568831SAndroid Build Coastguard Worker }
41*7c568831SAndroid Build Coastguard Worker 
42*7c568831SAndroid Build Coastguard Worker 
THREADED_VAR(xmlMalloc,xmlMallocFunc)43*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlMalloc, xmlMallocFunc)
44*7c568831SAndroid Build Coastguard Worker 
45*7c568831SAndroid Build Coastguard Worker void *
46*7c568831SAndroid Build Coastguard Worker __call_xmlMalloc(size_t size)
47*7c568831SAndroid Build Coastguard Worker 
48*7c568831SAndroid Build Coastguard Worker {
49*7c568831SAndroid Build Coastguard Worker         return xmlMalloc(size);
50*7c568831SAndroid Build Coastguard Worker }
51*7c568831SAndroid Build Coastguard Worker 
52*7c568831SAndroid Build Coastguard Worker 
THREADED_VAR(xmlMallocAtomic,xmlMallocFunc)53*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlMallocAtomic, xmlMallocFunc)
54*7c568831SAndroid Build Coastguard Worker 
55*7c568831SAndroid Build Coastguard Worker void *
56*7c568831SAndroid Build Coastguard Worker __call_xmlMallocAtomic(size_t size)
57*7c568831SAndroid Build Coastguard Worker 
58*7c568831SAndroid Build Coastguard Worker {
59*7c568831SAndroid Build Coastguard Worker         return xmlMallocAtomic(size);
60*7c568831SAndroid Build Coastguard Worker }
61*7c568831SAndroid Build Coastguard Worker 
62*7c568831SAndroid Build Coastguard Worker 
THREADED_VAR(xmlRealloc,xmlReallocFunc)63*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlRealloc, xmlReallocFunc)
64*7c568831SAndroid Build Coastguard Worker 
65*7c568831SAndroid Build Coastguard Worker void *
66*7c568831SAndroid Build Coastguard Worker __call_xmlRealloc(void * mem, size_t size)
67*7c568831SAndroid Build Coastguard Worker 
68*7c568831SAndroid Build Coastguard Worker {
69*7c568831SAndroid Build Coastguard Worker         return xmlRealloc(mem, size);
70*7c568831SAndroid Build Coastguard Worker }
71*7c568831SAndroid Build Coastguard Worker 
72*7c568831SAndroid Build Coastguard Worker 
THREADED_VAR(xmlMemStrdup,xmlStrdupFunc)73*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlMemStrdup, xmlStrdupFunc)
74*7c568831SAndroid Build Coastguard Worker 
75*7c568831SAndroid Build Coastguard Worker char *
76*7c568831SAndroid Build Coastguard Worker __call_xmlMemStrdup(const char * str)
77*7c568831SAndroid Build Coastguard Worker 
78*7c568831SAndroid Build Coastguard Worker {
79*7c568831SAndroid Build Coastguard Worker         return xmlMemStrdup(str);
80*7c568831SAndroid Build Coastguard Worker }
81*7c568831SAndroid Build Coastguard Worker 
82*7c568831SAndroid Build Coastguard Worker 
83*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_DOCB_ENABLED
THREADED_VAR(docbDefaultSAXHandler,xmlSAXHandlerV1)84*7c568831SAndroid Build Coastguard Worker THREADED_VAR(docbDefaultSAXHandler, xmlSAXHandlerV1)
85*7c568831SAndroid Build Coastguard Worker #endif
86*7c568831SAndroid Build Coastguard Worker 
87*7c568831SAndroid Build Coastguard Worker 
88*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_HTML_ENABLED
89*7c568831SAndroid Build Coastguard Worker THREADED_VAR(htmlDefaultSAXHandler, xmlSAXHandlerV1)
90*7c568831SAndroid Build Coastguard Worker #endif
91*7c568831SAndroid Build Coastguard Worker 
92*7c568831SAndroid Build Coastguard Worker 
93*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlLastError, xmlError)
94*7c568831SAndroid Build Coastguard Worker 
95*7c568831SAndroid Build Coastguard Worker THREADED_VAR(oldXMLWDcompatibility, int)
96*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlBufferAllocScheme, xmlBufferAllocationScheme)
97*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlDefaultBufferSize, int)
98*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlDefaultSAXHandler, xmlSAXHandlerV1)
99*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlDefaultSAXLocator, xmlSAXLocator)
100*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlDoValidityCheckingDefaultValue, int)
101*7c568831SAndroid Build Coastguard Worker 
102*7c568831SAndroid Build Coastguard Worker /* No caller to xmlGenericError() because the argument list is unknown. */
103*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlGenericError, xmlGenericErrorFunc)
104*7c568831SAndroid Build Coastguard Worker 
105*7c568831SAndroid Build Coastguard Worker 
106*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlStructuredError, xmlStructuredErrorFunc)
107*7c568831SAndroid Build Coastguard Worker 
108*7c568831SAndroid Build Coastguard Worker void
109*7c568831SAndroid Build Coastguard Worker __call_xmlStructuredError(void * userData, xmlErrorPtr error)
110*7c568831SAndroid Build Coastguard Worker 
111*7c568831SAndroid Build Coastguard Worker {
112*7c568831SAndroid Build Coastguard Worker         xmlStructuredError(userData, error);
113*7c568831SAndroid Build Coastguard Worker }
114*7c568831SAndroid Build Coastguard Worker 
THREADED_VAR(xmlGenericErrorContext,void *)115*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlGenericErrorContext, void *)
116*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlStructuredErrorContext, void *)
117*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlGetWarningsDefaultValue, int)
118*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlIndentTreeOutput, int)
119*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlTreeIndentString, const char *)
120*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlKeepBlanksDefaultValue, int)
121*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlLineNumbersDefaultValue, int)
122*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlLoadExtDtdDefaultValue, int)
123*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlParserDebugEntities, int)
124*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlParserVersion, const char *)
125*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlPedanticParserDefaultValue, int)
126*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlSaveNoEmptyTags, int)
127*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlSubstituteEntitiesDefaultValue, int)
128*7c568831SAndroid Build Coastguard Worker 
129*7c568831SAndroid Build Coastguard Worker 
130*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlRegisterNodeDefaultValue, xmlRegisterNodeFunc)
131*7c568831SAndroid Build Coastguard Worker 
132*7c568831SAndroid Build Coastguard Worker void
133*7c568831SAndroid Build Coastguard Worker __call_xmlRegisterNodeDefaultValue(xmlNodePtr node)
134*7c568831SAndroid Build Coastguard Worker 
135*7c568831SAndroid Build Coastguard Worker {
136*7c568831SAndroid Build Coastguard Worker         xmlRegisterNodeDefaultValue(node);
137*7c568831SAndroid Build Coastguard Worker }
138*7c568831SAndroid Build Coastguard Worker 
139*7c568831SAndroid Build Coastguard Worker 
THREADED_VAR(xmlDeregisterNodeDefaultValue,xmlDeregisterNodeFunc)140*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlDeregisterNodeDefaultValue, xmlDeregisterNodeFunc)
141*7c568831SAndroid Build Coastguard Worker 
142*7c568831SAndroid Build Coastguard Worker void
143*7c568831SAndroid Build Coastguard Worker __call_xmlDeregisterNodeDefaultValue(xmlNodePtr node)
144*7c568831SAndroid Build Coastguard Worker 
145*7c568831SAndroid Build Coastguard Worker {
146*7c568831SAndroid Build Coastguard Worker         xmlDeregisterNodeDefaultValue(node);
147*7c568831SAndroid Build Coastguard Worker }
148*7c568831SAndroid Build Coastguard Worker 
149*7c568831SAndroid Build Coastguard Worker 
THREADED_VAR(xmlParserInputBufferCreateFilenameValue,xmlParserInputBufferCreateFilenameFunc)150*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlParserInputBufferCreateFilenameValue, xmlParserInputBufferCreateFilenameFunc)
151*7c568831SAndroid Build Coastguard Worker 
152*7c568831SAndroid Build Coastguard Worker xmlParserInputBufferPtr
153*7c568831SAndroid Build Coastguard Worker __call_xmlParserInputBufferCreateFilenameValue(const char *URI,
154*7c568831SAndroid Build Coastguard Worker                                                         xmlCharEncoding enc)
155*7c568831SAndroid Build Coastguard Worker 
156*7c568831SAndroid Build Coastguard Worker {
157*7c568831SAndroid Build Coastguard Worker         return xmlParserInputBufferCreateFilenameValue(URI, enc);
158*7c568831SAndroid Build Coastguard Worker }
159*7c568831SAndroid Build Coastguard Worker 
160*7c568831SAndroid Build Coastguard Worker 
THREADED_VAR(xmlOutputBufferCreateFilenameValue,xmlOutputBufferCreateFilenameFunc)161*7c568831SAndroid Build Coastguard Worker THREADED_VAR(xmlOutputBufferCreateFilenameValue, xmlOutputBufferCreateFilenameFunc)
162*7c568831SAndroid Build Coastguard Worker 
163*7c568831SAndroid Build Coastguard Worker xmlOutputBufferPtr
164*7c568831SAndroid Build Coastguard Worker __call_xmlOutputBufferCreateFilenameValue(const char *URI,
165*7c568831SAndroid Build Coastguard Worker                         xmlCharEncodingHandlerPtr encoder, int compression)
166*7c568831SAndroid Build Coastguard Worker 
167*7c568831SAndroid Build Coastguard Worker {
168*7c568831SAndroid Build Coastguard Worker         return xmlOutputBufferCreateFilenameValue(URI, encoder, compression);
169*7c568831SAndroid Build Coastguard Worker }
170*7c568831SAndroid Build Coastguard Worker 
171*7c568831SAndroid Build Coastguard Worker 
172*7c568831SAndroid Build Coastguard Worker 
173*7c568831SAndroid Build Coastguard Worker /**
174*7c568831SAndroid Build Coastguard Worker ***     va_list support.
175*7c568831SAndroid Build Coastguard Worker **/
176*7c568831SAndroid Build Coastguard Worker 
177*7c568831SAndroid Build Coastguard Worker void
__xmlVaStart(char ** list,char * lastargaddr,size_t lastargsize)178*7c568831SAndroid Build Coastguard Worker __xmlVaStart(char * * list, char * lastargaddr, size_t lastargsize)
179*7c568831SAndroid Build Coastguard Worker 
180*7c568831SAndroid Build Coastguard Worker {
181*7c568831SAndroid Build Coastguard Worker         list[1] = lastargaddr + lastargsize;
182*7c568831SAndroid Build Coastguard Worker }
183*7c568831SAndroid Build Coastguard Worker 
184*7c568831SAndroid Build Coastguard Worker 
185*7c568831SAndroid Build Coastguard Worker void *
__xmlVaArg(char ** list,void * dest,size_t argsize)186*7c568831SAndroid Build Coastguard Worker __xmlVaArg(char * * list, void * dest, size_t argsize)
187*7c568831SAndroid Build Coastguard Worker 
188*7c568831SAndroid Build Coastguard Worker {
189*7c568831SAndroid Build Coastguard Worker         size_t align;
190*7c568831SAndroid Build Coastguard Worker 
191*7c568831SAndroid Build Coastguard Worker         if (!argsize)
192*7c568831SAndroid Build Coastguard Worker                 return (void *) NULL;
193*7c568831SAndroid Build Coastguard Worker 
194*7c568831SAndroid Build Coastguard Worker         for (align = 16; align > argsize; align >>= 1)
195*7c568831SAndroid Build Coastguard Worker                 ;
196*7c568831SAndroid Build Coastguard Worker 
197*7c568831SAndroid Build Coastguard Worker         align--;
198*7c568831SAndroid Build Coastguard Worker         list[0] = list[1] + (align - (((size_t) list[0] - 1) & align));
199*7c568831SAndroid Build Coastguard Worker         list[1] = list[0] + argsize;
200*7c568831SAndroid Build Coastguard Worker 
201*7c568831SAndroid Build Coastguard Worker         if (dest)
202*7c568831SAndroid Build Coastguard Worker                 memcpy(dest, list[0], argsize);
203*7c568831SAndroid Build Coastguard Worker 
204*7c568831SAndroid Build Coastguard Worker         return (void *) list[0];
205*7c568831SAndroid Build Coastguard Worker }
206*7c568831SAndroid Build Coastguard Worker 
207*7c568831SAndroid Build Coastguard Worker 
208*7c568831SAndroid Build Coastguard Worker void
__xmlVaEnd(char ** list)209*7c568831SAndroid Build Coastguard Worker __xmlVaEnd(char * * list)
210*7c568831SAndroid Build Coastguard Worker 
211*7c568831SAndroid Build Coastguard Worker {
212*7c568831SAndroid Build Coastguard Worker         /* Nothing to do. */
213*7c568831SAndroid Build Coastguard Worker }
214*7c568831SAndroid Build Coastguard Worker 
215*7c568831SAndroid Build Coastguard Worker 
216*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_XPATH_ENABLED
217*7c568831SAndroid Build Coastguard Worker 
218*7c568831SAndroid Build Coastguard Worker int
__xmlXPathNodeSetGetLength(const xmlNodeSet * ns)219*7c568831SAndroid Build Coastguard Worker __xmlXPathNodeSetGetLength(const xmlNodeSet * ns)
220*7c568831SAndroid Build Coastguard Worker 
221*7c568831SAndroid Build Coastguard Worker {
222*7c568831SAndroid Build Coastguard Worker         return xmlXPathNodeSetGetLength(ns);
223*7c568831SAndroid Build Coastguard Worker }
224*7c568831SAndroid Build Coastguard Worker 
225*7c568831SAndroid Build Coastguard Worker 
226*7c568831SAndroid Build Coastguard Worker xmlNodePtr
__xmlXPathNodeSetItem(const xmlNodeSet * ns,int index)227*7c568831SAndroid Build Coastguard Worker __xmlXPathNodeSetItem(const xmlNodeSet * ns, int index)
228*7c568831SAndroid Build Coastguard Worker 
229*7c568831SAndroid Build Coastguard Worker {
230*7c568831SAndroid Build Coastguard Worker         return xmlXPathNodeSetItem(ns, index);
231*7c568831SAndroid Build Coastguard Worker }
232*7c568831SAndroid Build Coastguard Worker 
233*7c568831SAndroid Build Coastguard Worker 
234*7c568831SAndroid Build Coastguard Worker int
__xmlXPathNodeSetIsEmpty(const xmlNodeSet * ns)235*7c568831SAndroid Build Coastguard Worker __xmlXPathNodeSetIsEmpty(const xmlNodeSet * ns)
236*7c568831SAndroid Build Coastguard Worker 
237*7c568831SAndroid Build Coastguard Worker {
238*7c568831SAndroid Build Coastguard Worker         return xmlXPathNodeSetIsEmpty(ns);
239*7c568831SAndroid Build Coastguard Worker }
240*7c568831SAndroid Build Coastguard Worker 
241*7c568831SAndroid Build Coastguard Worker #endif
242*7c568831SAndroid Build Coastguard Worker 
243*7c568831SAndroid Build Coastguard Worker 
244*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_HTML_ENABLED
245*7c568831SAndroid Build Coastguard Worker 
246*7c568831SAndroid Build Coastguard Worker const char *
__htmlDefaultSubelement(const htmlElemDesc * elt)247*7c568831SAndroid Build Coastguard Worker __htmlDefaultSubelement(const htmlElemDesc * elt)
248*7c568831SAndroid Build Coastguard Worker 
249*7c568831SAndroid Build Coastguard Worker {
250*7c568831SAndroid Build Coastguard Worker         return htmlDefaultSubelement(elt);
251*7c568831SAndroid Build Coastguard Worker }
252*7c568831SAndroid Build Coastguard Worker 
253*7c568831SAndroid Build Coastguard Worker 
254*7c568831SAndroid Build Coastguard Worker int
__htmlElementAllowedHereDesc(const htmlElemDesc * parent,const htmlElemDesc * elt)255*7c568831SAndroid Build Coastguard Worker __htmlElementAllowedHereDesc(const htmlElemDesc * parent,
256*7c568831SAndroid Build Coastguard Worker                                                 const htmlElemDesc * elt)
257*7c568831SAndroid Build Coastguard Worker 
258*7c568831SAndroid Build Coastguard Worker {
259*7c568831SAndroid Build Coastguard Worker         return htmlElementAllowedHereDesc(parent, elt);
260*7c568831SAndroid Build Coastguard Worker }
261*7c568831SAndroid Build Coastguard Worker 
262*7c568831SAndroid Build Coastguard Worker 
263*7c568831SAndroid Build Coastguard Worker const char * *
__htmlRequiredAttrs(const htmlElemDesc * elt)264*7c568831SAndroid Build Coastguard Worker __htmlRequiredAttrs(const htmlElemDesc * elt)
265*7c568831SAndroid Build Coastguard Worker 
266*7c568831SAndroid Build Coastguard Worker {
267*7c568831SAndroid Build Coastguard Worker         return htmlRequiredAttrs(elt);
268*7c568831SAndroid Build Coastguard Worker }
269*7c568831SAndroid Build Coastguard Worker 
270*7c568831SAndroid Build Coastguard Worker #endif
271