2 *** Additional procedures for ILE/RPG support.
4 *** See Copyright for the status of this software.
6 *** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
13 #include "libxml/xmlmemory.h"
14 #include "libxml/xpath.h"
15 #include "libxml/parser.h"
16 #include "libxml/HTMLparser.h"
18 #include "rpgsupport.h"
22 *** ILE/RPG cannot directly derefence a pointer and has no macros.
23 *** The following additional procedures supply these functions.
24 *** In addition, the following code is adjusted for threads control at
25 *** compile time via the C macros.
28 #define THREADED_VAR(name, type) \
29 type __get_##name(void) { return name; } \
30 void __set_##name(type arg) { name = arg; }
33 THREADED_VAR(xmlFree, xmlFreeFunc)
36 __call_xmlFree(void * mem)
43 THREADED_VAR(xmlMalloc, xmlMallocFunc)
46 __call_xmlMalloc(size_t size)
49 return xmlMalloc(size);
53 THREADED_VAR(xmlMallocAtomic, xmlMallocFunc)
56 __call_xmlMallocAtomic(size_t size)
59 return xmlMallocAtomic(size);
63 THREADED_VAR(xmlRealloc, xmlReallocFunc)
66 __call_xmlRealloc(void * mem, size_t size)
69 return xmlRealloc(mem, size);
73 THREADED_VAR(xmlMemStrdup, xmlStrdupFunc)
76 __call_xmlMemStrdup(const char * str)
79 return xmlMemStrdup(str);
83 #ifdef LIBXML_DOCB_ENABLED
84 THREADED_VAR(docbDefaultSAXHandler, xmlSAXHandlerV1)
88 #ifdef LIBXML_HTML_ENABLED
89 THREADED_VAR(htmlDefaultSAXHandler, xmlSAXHandlerV1)
93 THREADED_VAR(xmlLastError, xmlError)
95 THREADED_VAR(oldXMLWDcompatibility, int)
96 THREADED_VAR(xmlBufferAllocScheme, xmlBufferAllocationScheme)
97 THREADED_VAR(xmlDefaultBufferSize, int)
98 THREADED_VAR(xmlDefaultSAXHandler, xmlSAXHandlerV1)
99 THREADED_VAR(xmlDefaultSAXLocator, xmlSAXLocator)
100 THREADED_VAR(xmlDoValidityCheckingDefaultValue, int)
102 /* No caller to xmlGenericError() because the argument list is unknown. */
103 THREADED_VAR(xmlGenericError, xmlGenericErrorFunc)
106 THREADED_VAR(xmlStructuredError, xmlStructuredErrorFunc)
109 __call_xmlStructuredError(void * userData, xmlErrorPtr error)
112 xmlStructuredError(userData, error);
115 THREADED_VAR(xmlGenericErrorContext, void *)
116 THREADED_VAR(xmlStructuredErrorContext, void *)
117 THREADED_VAR(xmlGetWarningsDefaultValue, int)
118 THREADED_VAR(xmlIndentTreeOutput, int)
119 THREADED_VAR(xmlTreeIndentString, const char *)
120 THREADED_VAR(xmlKeepBlanksDefaultValue, int)
121 THREADED_VAR(xmlLineNumbersDefaultValue, int)
122 THREADED_VAR(xmlLoadExtDtdDefaultValue, int)
123 THREADED_VAR(xmlParserDebugEntities, int)
124 THREADED_VAR(xmlParserVersion, const char *)
125 THREADED_VAR(xmlPedanticParserDefaultValue, int)
126 THREADED_VAR(xmlSaveNoEmptyTags, int)
127 THREADED_VAR(xmlSubstituteEntitiesDefaultValue, int)
130 THREADED_VAR(xmlRegisterNodeDefaultValue, xmlRegisterNodeFunc)
133 __call_xmlRegisterNodeDefaultValue(xmlNodePtr node)
136 xmlRegisterNodeDefaultValue(node);
140 THREADED_VAR(xmlDeregisterNodeDefaultValue, xmlDeregisterNodeFunc)
143 __call_xmlDeregisterNodeDefaultValue(xmlNodePtr node)
146 xmlDeregisterNodeDefaultValue(node);
150 THREADED_VAR(xmlParserInputBufferCreateFilenameValue, xmlParserInputBufferCreateFilenameFunc)
152 xmlParserInputBufferPtr
153 __call_xmlParserInputBufferCreateFilenameValue(const char *URI,
157 return xmlParserInputBufferCreateFilenameValue(URI, enc);
161 THREADED_VAR(xmlOutputBufferCreateFilenameValue, xmlOutputBufferCreateFilenameFunc)
164 __call_xmlOutputBufferCreateFilenameValue(const char *URI,
165 xmlCharEncodingHandlerPtr encoder, int compression)
168 return xmlOutputBufferCreateFilenameValue(URI, encoder, compression);
178 __xmlVaStart(char * * list, char * lastargaddr, size_t lastargsize)
181 list[1] = lastargaddr + lastargsize;
186 __xmlVaArg(char * * list, void * dest, size_t argsize)
192 return (void *) NULL;
194 for (align = 16; align > argsize; align >>= 1)
198 list[0] = list[1] + (align - (((size_t) list[0] - 1) & align));
199 list[1] = list[0] + argsize;
202 memcpy(dest, list[0], argsize);
204 return (void *) list[0];
209 __xmlVaEnd(char * * list)
216 #ifdef LIBXML_XPATH_ENABLED
219 __xmlXPathNodeSetGetLength(const xmlNodeSet * ns)
222 return xmlXPathNodeSetGetLength(ns);
227 __xmlXPathNodeSetItem(const xmlNodeSet * ns, int index)
230 return xmlXPathNodeSetItem(ns, index);
235 __xmlXPathNodeSetIsEmpty(const xmlNodeSet * ns)
238 return xmlXPathNodeSetIsEmpty(ns);
244 #ifdef LIBXML_HTML_ENABLED
247 __htmlDefaultSubelement(const htmlElemDesc * elt)
250 return htmlDefaultSubelement(elt);
255 __htmlElementAllowedHereDesc(const htmlElemDesc * parent,
256 const htmlElemDesc * elt)
259 return htmlElementAllowedHereDesc(parent, elt);
264 __htmlRequiredAttrs(const htmlElemDesc * elt)
267 return htmlRequiredAttrs(elt);