blob: ad4cc5dddef4a2602a4d45a5b3482b3320b21566 [file] [log] [blame]
Patrick Monnerat7d888f02014-03-04 17:15:23 +01001/**
2*** Additional procedures for ILE/RPG support.
3***
4*** See Copyright for the status of this software.
5***
6*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
7**/
8
9#include <sys/types.h>
10
11#include <stdarg.h>
12
13#include "libxml/xmlmemory.h"
Patrick Monnerat02fd1292014-05-05 18:16:22 +020014#include "libxml/xpath.h"
Patrick Monnerat7d888f02014-03-04 17:15:23 +010015#include "libxml/parser.h"
Patrick Monnerat5378ff92014-05-06 13:39:40 +020016#include "libxml/HTMLparser.h"
Patrick Monnerat7d888f02014-03-04 17:15:23 +010017
18#include "rpgsupport.h"
19
20
21/**
Patrick Monnerat5378ff92014-05-06 13:39:40 +020022*** ILE/RPG cannot directly derefence a pointer and has no macros.
Patrick Monnerat7d888f02014-03-04 17:15:23 +010023*** 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.
26**/
27
28#define THREADED_VAR(name, type) \
29 type __get_##name(void) { return name; } \
30 void __set_##name(type arg) { name = arg; }
31
32
33THREADED_VAR(xmlFree, xmlFreeFunc)
34
35void
36__call_xmlFree(void * mem)
37
38{
39 xmlFree(mem);
40}
41
42
43THREADED_VAR(xmlMalloc, xmlMallocFunc)
44
45void *
46__call_xmlMalloc(size_t size)
47
48{
49 return xmlMalloc(size);
50}
51
52
53THREADED_VAR(xmlMallocAtomic, xmlMallocFunc)
54
55void *
56__call_xmlMallocAtomic(size_t size)
57
58{
59 return xmlMallocAtomic(size);
60}
61
62
63THREADED_VAR(xmlRealloc, xmlReallocFunc)
64
65void *
66__call_xmlRealloc(void * mem, size_t size)
67
68{
69 return xmlRealloc(mem, size);
70}
71
72
73THREADED_VAR(xmlMemStrdup, xmlStrdupFunc)
74
75char *
76__call_xmlMemStrdup(const char * str)
77
78{
79 return xmlMemStrdup(str);
80}
81
82
83#ifdef LIBXML_DOCB_ENABLED
84THREADED_VAR(docbDefaultSAXHandler, xmlSAXHandlerV1)
85#endif
86
87
88#ifdef LIBXML_HTML_ENABLED
89THREADED_VAR(htmlDefaultSAXHandler, xmlSAXHandlerV1)
90#endif
91
92
93THREADED_VAR(xmlLastError, xmlError)
94
95THREADED_VAR(oldXMLWDcompatibility, int)
96THREADED_VAR(xmlBufferAllocScheme, xmlBufferAllocationScheme)
97THREADED_VAR(xmlDefaultBufferSize, int)
98THREADED_VAR(xmlDefaultSAXHandler, xmlSAXHandlerV1)
99THREADED_VAR(xmlDefaultSAXLocator, xmlSAXLocator)
100THREADED_VAR(xmlDoValidityCheckingDefaultValue, int)
101
102/* No caller to xmlGenericError() because the argument list is unknown. */
103THREADED_VAR(xmlGenericError, xmlGenericErrorFunc)
104
105
106THREADED_VAR(xmlStructuredError, xmlStructuredErrorFunc)
107
108void
109__call_xmlStructuredError(void * userData, xmlErrorPtr error)
110
111{
112 xmlStructuredError(userData, error);
113}
114
115THREADED_VAR(xmlGenericErrorContext, void *)
116THREADED_VAR(xmlStructuredErrorContext, void *)
117THREADED_VAR(xmlGetWarningsDefaultValue, int)
118THREADED_VAR(xmlIndentTreeOutput, int)
119THREADED_VAR(xmlTreeIndentString, const char *)
120THREADED_VAR(xmlKeepBlanksDefaultValue, int)
121THREADED_VAR(xmlLineNumbersDefaultValue, int)
122THREADED_VAR(xmlLoadExtDtdDefaultValue, int)
123THREADED_VAR(xmlParserDebugEntities, int)
124THREADED_VAR(xmlParserVersion, const char *)
125THREADED_VAR(xmlPedanticParserDefaultValue, int)
126THREADED_VAR(xmlSaveNoEmptyTags, int)
127THREADED_VAR(xmlSubstituteEntitiesDefaultValue, int)
128
129
130THREADED_VAR(xmlRegisterNodeDefaultValue, xmlRegisterNodeFunc)
131
132void
133__call_xmlRegisterNodeDefaultValue(xmlNodePtr node)
134
135{
136 xmlRegisterNodeDefaultValue(node);
137}
138
139
140THREADED_VAR(xmlDeregisterNodeDefaultValue, xmlDeregisterNodeFunc)
141
142void
143__call_xmlDeregisterNodeDefaultValue(xmlNodePtr node)
144
145{
146 xmlDeregisterNodeDefaultValue(node);
147}
148
149
150THREADED_VAR(xmlParserInputBufferCreateFilenameValue, xmlParserInputBufferCreateFilenameFunc)
151
152xmlParserInputBufferPtr
153__call_xmlParserInputBufferCreateFilenameValue(const char *URI,
154 xmlCharEncoding enc)
155
156{
157 return xmlParserInputBufferCreateFilenameValue(URI, enc);
158}
159
160
161THREADED_VAR(xmlOutputBufferCreateFilenameValue, xmlOutputBufferCreateFilenameFunc)
162
163xmlOutputBufferPtr
164__call_xmlOutputBufferCreateFilenameValue(const char *URI,
165 xmlCharEncodingHandlerPtr encoder, int compression)
166
167{
168 return xmlOutputBufferCreateFilenameValue(URI, encoder, compression);
169}
170
171
172
173/**
174*** va_list support.
175**/
176
177void
178__xmlVaStart(char * * list, char * lastargaddr, size_t lastargsize)
179
180{
181 list[1] = lastargaddr + lastargsize;
182}
183
184
185void *
186__xmlVaArg(char * * list, void * dest, size_t argsize)
187
188{
189 size_t align;
190
191 if (!argsize)
192 return (void *) NULL;
193
194 for (align = 16; align > argsize; align >>= 1)
195 ;
196
197 align--;
198 list[0] = list[1] + (align - (((size_t) list[0] - 1) & align));
199 list[1] = list[0] + argsize;
200
201 if (dest)
202 memcpy(dest, list[0], argsize);
203
204 return (void *) list[0];
205}
206
207
208void
Patrick Monnerat02fd1292014-05-05 18:16:22 +0200209__xmlVaEnd(char * * list)
Patrick Monnerat7d888f02014-03-04 17:15:23 +0100210
211{
212 /* Nothing to do. */
213}
Patrick Monnerat02fd1292014-05-05 18:16:22 +0200214
215
216#ifdef LIBXML_XPATH_ENABLED
Patrick Monneratbce6a612014-05-06 11:31:16 +0200217
Patrick Monnerat02fd1292014-05-05 18:16:22 +0200218int
Patrick Monnerat5378ff92014-05-06 13:39:40 +0200219__xmlXPathNodeSetGetLength(const xmlNodeSet * ns)
Patrick Monnerat02fd1292014-05-05 18:16:22 +0200220
221{
Patrick Monneratcad16342015-04-17 17:26:46 +0200222 return xmlXPathNodeSetGetLength(ns);
Patrick Monnerat02fd1292014-05-05 18:16:22 +0200223}
224
225
226xmlNodePtr
Patrick Monnerat5378ff92014-05-06 13:39:40 +0200227__xmlXPathNodeSetItem(const xmlNodeSet * ns, int index)
Patrick Monnerat02fd1292014-05-05 18:16:22 +0200228
229{
Patrick Monneratcad16342015-04-17 17:26:46 +0200230 return xmlXPathNodeSetItem(ns, index);
Patrick Monnerat02fd1292014-05-05 18:16:22 +0200231}
232
233
234int
Patrick Monnerat5378ff92014-05-06 13:39:40 +0200235__xmlXPathNodeSetIsEmpty(const xmlNodeSet * ns)
Patrick Monnerat02fd1292014-05-05 18:16:22 +0200236
237{
Patrick Monneratcad16342015-04-17 17:26:46 +0200238 return xmlXPathNodeSetIsEmpty(ns);
Patrick Monnerat02fd1292014-05-05 18:16:22 +0200239}
Patrick Monneratbce6a612014-05-06 11:31:16 +0200240
Patrick Monnerat02fd1292014-05-05 18:16:22 +0200241#endif
Patrick Monnerat5378ff92014-05-06 13:39:40 +0200242
243
244#ifdef LIBXML_HTML_ENABLED
245
246const char *
247__htmlDefaultSubelement(const htmlElemDesc * elt)
248
249{
Patrick Monneratcad16342015-04-17 17:26:46 +0200250 return htmlDefaultSubelement(elt);
Patrick Monnerat5378ff92014-05-06 13:39:40 +0200251}
252
253
254int
255__htmlElementAllowedHereDesc(const htmlElemDesc * parent,
Patrick Monneratcad16342015-04-17 17:26:46 +0200256 const htmlElemDesc * elt)
Patrick Monnerat5378ff92014-05-06 13:39:40 +0200257
258{
Patrick Monneratcad16342015-04-17 17:26:46 +0200259 return htmlElementAllowedHereDesc(parent, elt);
Patrick Monnerat5378ff92014-05-06 13:39:40 +0200260}
261
262
263const char * *
264__htmlRequiredAttrs(const htmlElemDesc * elt)
265
266{
Patrick Monneratcad16342015-04-17 17:26:46 +0200267 return htmlRequiredAttrs(elt);
Patrick Monnerat5378ff92014-05-06 13:39:40 +0200268}
269
270#endif