|
1 /* |
|
2 * Summary: interface for the I/O interfaces used by the parser |
|
3 * Description: interface for the I/O interfaces used by the parser |
|
4 * |
|
5 * Copy: See Copyright for the status of this software. |
|
6 * |
|
7 * Author: Daniel Veillard |
|
8 */ |
|
9 |
|
10 #ifndef __XML_IO_H__ |
|
11 #define __XML_IO_H__ |
|
12 |
|
13 #include <stdio.h> |
|
14 #include <libxml/xmlversion.h> |
|
15 |
|
16 #ifdef __cplusplus |
|
17 extern "C" { |
|
18 #endif |
|
19 |
|
20 /* |
|
21 * Those are the functions and datatypes for the parser input |
|
22 * I/O structures. |
|
23 */ |
|
24 |
|
25 /** |
|
26 * xmlInputMatchCallback: |
|
27 * @filename: the filename or URI |
|
28 * |
|
29 * Callback used in the I/O Input API to detect if the current handler |
|
30 * can provide input fonctionnalities for this resource. |
|
31 * |
|
32 * Returns 1 if yes and 0 if another Input module should be used |
|
33 */ |
|
34 typedef int (XMLCALL *xmlInputMatchCallback) (char const *filename); |
|
35 /** |
|
36 * xmlInputOpenCallback: |
|
37 * @filename: the filename or URI |
|
38 * |
|
39 * Callback used in the I/O Input API to open the resource |
|
40 * |
|
41 * Returns an Input context or NULL in case or error |
|
42 */ |
|
43 typedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename); |
|
44 /** |
|
45 * xmlInputReadCallback: |
|
46 * @context: an Input context |
|
47 * @buffer: the buffer to store data read |
|
48 * @len: the length of the buffer in bytes |
|
49 * |
|
50 * Callback used in the I/O Input API to read the resource |
|
51 * |
|
52 * Returns the number of bytes read or -1 in case of error |
|
53 */ |
|
54 typedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len); |
|
55 /** |
|
56 * xmlInputCloseCallback: |
|
57 * @context: an Input context |
|
58 * |
|
59 * Callback used in the I/O Input API to close the resource |
|
60 * |
|
61 * Returns 0 or -1 in case of error |
|
62 */ |
|
63 typedef int (XMLCALL *xmlInputCloseCallback) (void * context); |
|
64 |
|
65 #ifdef LIBXML_OUTPUT_ENABLED |
|
66 /* |
|
67 * Those are the functions and datatypes for the library output |
|
68 * I/O structures. |
|
69 */ |
|
70 |
|
71 /** |
|
72 * xmlOutputMatchCallback: |
|
73 * @filename: the filename or URI |
|
74 * |
|
75 * Callback used in the I/O Output API to detect if the current handler |
|
76 * can provide output fonctionnalities for this resource. |
|
77 * |
|
78 * Returns 1 if yes and 0 if another Output module should be used |
|
79 */ |
|
80 typedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename); |
|
81 /** |
|
82 * xmlOutputOpenCallback: |
|
83 * @filename: the filename or URI |
|
84 * |
|
85 * Callback used in the I/O Output API to open the resource |
|
86 * |
|
87 * Returns an Output context or NULL in case or error |
|
88 */ |
|
89 typedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename); |
|
90 /** |
|
91 * xmlOutputWriteCallback: |
|
92 * @context: an Output context |
|
93 * @buffer: the buffer of data to write |
|
94 * @len: the length of the buffer in bytes |
|
95 * |
|
96 * Callback used in the I/O Output API to write to the resource |
|
97 * |
|
98 * Returns the number of bytes written or -1 in case of error |
|
99 */ |
|
100 typedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer, |
|
101 int len); |
|
102 /** |
|
103 * xmlOutputCloseCallback: |
|
104 * @context: an Output context |
|
105 * |
|
106 * Callback used in the I/O Output API to close the resource |
|
107 * |
|
108 * Returns 0 or -1 in case of error |
|
109 */ |
|
110 typedef int (XMLCALL *xmlOutputCloseCallback) (void * context); |
|
111 #endif /* LIBXML_OUTPUT_ENABLED */ |
|
112 |
|
113 #ifdef __cplusplus |
|
114 } |
|
115 #endif |
|
116 |
|
117 #include <libxml/globals.h> |
|
118 #include <libxml/tree.h> |
|
119 #include <libxml/parser.h> |
|
120 #include <libxml/encoding.h> |
|
121 |
|
122 #ifdef __cplusplus |
|
123 extern "C" { |
|
124 #endif |
|
125 struct _xmlParserInputBuffer { |
|
126 void* context; |
|
127 xmlInputReadCallback readcallback; |
|
128 xmlInputCloseCallback closecallback; |
|
129 |
|
130 xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ |
|
131 |
|
132 xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 */ |
|
133 xmlBufferPtr raw; /* if encoder != NULL buffer for raw input */ |
|
134 int compressed; /* -1=unknown, 0=not compressed, 1=compressed */ |
|
135 int error; |
|
136 unsigned long rawconsumed;/* amount consumed from raw */ |
|
137 }; |
|
138 |
|
139 |
|
140 #ifdef LIBXML_OUTPUT_ENABLED |
|
141 struct _xmlOutputBuffer { |
|
142 void* context; |
|
143 xmlOutputWriteCallback writecallback; |
|
144 xmlOutputCloseCallback closecallback; |
|
145 |
|
146 xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ |
|
147 |
|
148 xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ |
|
149 xmlBufferPtr conv; /* if encoder != NULL buffer for output */ |
|
150 int written; /* total number of byte written */ |
|
151 int error; |
|
152 }; |
|
153 #endif /* LIBXML_OUTPUT_ENABLED */ |
|
154 |
|
155 /* |
|
156 * Interfaces for input |
|
157 */ |
|
158 XMLPUBFUN void XMLCALL |
|
159 xmlCleanupInputCallbacks (void); |
|
160 |
|
161 XMLPUBFUN int XMLCALL |
|
162 xmlPopInputCallbacks (void); |
|
163 |
|
164 XMLPUBFUN void XMLCALL |
|
165 xmlRegisterDefaultInputCallbacks (void); |
|
166 XMLPUBFUN xmlParserInputBufferPtr XMLCALL |
|
167 xmlAllocParserInputBuffer (xmlCharEncoding enc); |
|
168 |
|
169 XMLPUBFUN xmlParserInputBufferPtr XMLCALL |
|
170 xmlParserInputBufferCreateFilename (const char *URI, |
|
171 xmlCharEncoding enc); |
|
172 XMLPUBFUN xmlParserInputBufferPtr XMLCALL |
|
173 xmlParserInputBufferCreateFile (FILE *file, |
|
174 xmlCharEncoding enc); |
|
175 XMLPUBFUN xmlParserInputBufferPtr XMLCALL |
|
176 xmlParserInputBufferCreateFd (int fd, |
|
177 xmlCharEncoding enc); |
|
178 XMLPUBFUN xmlParserInputBufferPtr XMLCALL |
|
179 xmlParserInputBufferCreateMem (const char *mem, int size, |
|
180 xmlCharEncoding enc); |
|
181 XMLPUBFUN xmlParserInputBufferPtr XMLCALL |
|
182 xmlParserInputBufferCreateStatic (const char *mem, int size, |
|
183 xmlCharEncoding enc); |
|
184 XMLPUBFUN xmlParserInputBufferPtr XMLCALL |
|
185 xmlParserInputBufferCreateIO (xmlInputReadCallback ioread, |
|
186 xmlInputCloseCallback ioclose, |
|
187 void *ioctx, |
|
188 xmlCharEncoding enc); |
|
189 XMLPUBFUN int XMLCALL |
|
190 xmlParserInputBufferRead (xmlParserInputBufferPtr in, |
|
191 int len); |
|
192 XMLPUBFUN int XMLCALL |
|
193 xmlParserInputBufferGrow (xmlParserInputBufferPtr in, |
|
194 int len); |
|
195 XMLPUBFUN int XMLCALL |
|
196 xmlParserInputBufferPush (xmlParserInputBufferPtr in, |
|
197 int len, |
|
198 const char *buf); |
|
199 XMLPUBFUN void XMLCALL |
|
200 xmlFreeParserInputBuffer (xmlParserInputBufferPtr in); |
|
201 XMLPUBFUN char * XMLCALL |
|
202 xmlParserGetDirectory (const char *filename); |
|
203 |
|
204 XMLPUBFUN int XMLCALL |
|
205 xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc, |
|
206 xmlInputOpenCallback openFunc, |
|
207 xmlInputReadCallback readFunc, |
|
208 xmlInputCloseCallback closeFunc); |
|
209 |
|
210 xmlParserInputBufferPtr |
|
211 __xmlParserInputBufferCreateFilename(const char *URI, |
|
212 xmlCharEncoding enc); |
|
213 |
|
214 #ifdef LIBXML_OUTPUT_ENABLED |
|
215 /* |
|
216 * Interfaces for output |
|
217 */ |
|
218 XMLPUBFUN void XMLCALL |
|
219 xmlCleanupOutputCallbacks (void); |
|
220 XMLPUBFUN void XMLCALL |
|
221 xmlRegisterDefaultOutputCallbacks(void); |
|
222 XMLPUBFUN xmlOutputBufferPtr XMLCALL |
|
223 xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder); |
|
224 |
|
225 XMLPUBFUN xmlOutputBufferPtr XMLCALL |
|
226 xmlOutputBufferCreateFilename (const char *URI, |
|
227 xmlCharEncodingHandlerPtr encoder, |
|
228 int compression); |
|
229 |
|
230 XMLPUBFUN xmlOutputBufferPtr XMLCALL |
|
231 xmlOutputBufferCreateFile (FILE *file, |
|
232 xmlCharEncodingHandlerPtr encoder); |
|
233 |
|
234 XMLPUBFUN xmlOutputBufferPtr XMLCALL |
|
235 xmlOutputBufferCreateBuffer (xmlBufferPtr buffer, |
|
236 xmlCharEncodingHandlerPtr encoder); |
|
237 |
|
238 XMLPUBFUN xmlOutputBufferPtr XMLCALL |
|
239 xmlOutputBufferCreateFd (int fd, |
|
240 xmlCharEncodingHandlerPtr encoder); |
|
241 |
|
242 XMLPUBFUN xmlOutputBufferPtr XMLCALL |
|
243 xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite, |
|
244 xmlOutputCloseCallback ioclose, |
|
245 void *ioctx, |
|
246 xmlCharEncodingHandlerPtr encoder); |
|
247 |
|
248 XMLPUBFUN int XMLCALL |
|
249 xmlOutputBufferWrite (xmlOutputBufferPtr out, |
|
250 int len, |
|
251 const char *buf); |
|
252 XMLPUBFUN int XMLCALL |
|
253 xmlOutputBufferWriteString (xmlOutputBufferPtr out, |
|
254 const char *str); |
|
255 XMLPUBFUN int XMLCALL |
|
256 xmlOutputBufferWriteEscape (xmlOutputBufferPtr out, |
|
257 const xmlChar *str, |
|
258 xmlCharEncodingOutputFunc escaping); |
|
259 |
|
260 XMLPUBFUN int XMLCALL |
|
261 xmlOutputBufferFlush (xmlOutputBufferPtr out); |
|
262 XMLPUBFUN int XMLCALL |
|
263 xmlOutputBufferClose (xmlOutputBufferPtr out); |
|
264 |
|
265 XMLPUBFUN int XMLCALL |
|
266 xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc, |
|
267 xmlOutputOpenCallback openFunc, |
|
268 xmlOutputWriteCallback writeFunc, |
|
269 xmlOutputCloseCallback closeFunc); |
|
270 |
|
271 xmlOutputBufferPtr |
|
272 __xmlOutputBufferCreateFilename(const char *URI, |
|
273 xmlCharEncodingHandlerPtr encoder, |
|
274 int compression); |
|
275 |
|
276 #ifdef LIBXML_HTTP_ENABLED |
|
277 /* This function only exists if HTTP support built into the library */ |
|
278 XMLPUBFUN void XMLCALL |
|
279 xmlRegisterHTTPPostCallbacks (void ); |
|
280 #endif /* LIBXML_HTTP_ENABLED */ |
|
281 |
|
282 #endif /* LIBXML_OUTPUT_ENABLED */ |
|
283 |
|
284 XMLPUBFUN xmlParserInputPtr XMLCALL |
|
285 xmlCheckHTTPInput (xmlParserCtxtPtr ctxt, |
|
286 xmlParserInputPtr ret); |
|
287 |
|
288 /* |
|
289 * A predefined entity loader disabling network accesses |
|
290 */ |
|
291 XMLPUBFUN xmlParserInputPtr XMLCALL |
|
292 xmlNoNetExternalEntityLoader (const char *URL, |
|
293 const char *ID, |
|
294 xmlParserCtxtPtr ctxt); |
|
295 |
|
296 /* |
|
297 * xmlNormalizeWindowsPath is obsolete, don't use it. |
|
298 * Check xmlCanonicPath in uri.h for a better alternative. |
|
299 */ |
|
300 XMLPUBFUN xmlChar * XMLCALL |
|
301 xmlNormalizeWindowsPath (const xmlChar *path); |
|
302 |
|
303 XMLPUBFUN int XMLCALL |
|
304 xmlCheckFilename (const char *path); |
|
305 /** |
|
306 * Default 'file://' protocol callbacks |
|
307 */ |
|
308 XMLPUBFUN int XMLCALL |
|
309 xmlFileMatch (const char *filename); |
|
310 XMLPUBFUN void * XMLCALL |
|
311 xmlFileOpen (const char *filename); |
|
312 XMLPUBFUN int XMLCALL |
|
313 xmlFileRead (void * context, |
|
314 char * buffer, |
|
315 int len); |
|
316 XMLPUBFUN int XMLCALL |
|
317 xmlFileClose (void * context); |
|
318 |
|
319 /** |
|
320 * Default 'http://' protocol callbacks |
|
321 */ |
|
322 #ifdef LIBXML_HTTP_ENABLED |
|
323 XMLPUBFUN int XMLCALL |
|
324 xmlIOHTTPMatch (const char *filename); |
|
325 XMLPUBFUN void * XMLCALL |
|
326 xmlIOHTTPOpen (const char *filename); |
|
327 #ifdef LIBXML_OUTPUT_ENABLED |
|
328 XMLPUBFUN void * XMLCALL |
|
329 xmlIOHTTPOpenW (const char * post_uri, |
|
330 int compression ); |
|
331 #endif /* LIBXML_OUTPUT_ENABLED */ |
|
332 XMLPUBFUN int XMLCALL |
|
333 xmlIOHTTPRead (void * context, |
|
334 char * buffer, |
|
335 int len); |
|
336 XMLPUBFUN int XMLCALL |
|
337 xmlIOHTTPClose (void * context); |
|
338 #endif /* LIBXML_HTTP_ENABLED */ |
|
339 |
|
340 /** |
|
341 * Default 'ftp://' protocol callbacks |
|
342 */ |
|
343 #ifdef LIBXML_FTP_ENABLED |
|
344 XMLPUBFUN int XMLCALL |
|
345 xmlIOFTPMatch (const char *filename); |
|
346 XMLPUBFUN void * XMLCALL |
|
347 xmlIOFTPOpen (const char *filename); |
|
348 XMLPUBFUN int XMLCALL |
|
349 xmlIOFTPRead (void * context, |
|
350 char * buffer, |
|
351 int len); |
|
352 XMLPUBFUN int XMLCALL |
|
353 xmlIOFTPClose (void * context); |
|
354 #endif /* LIBXML_FTP_ENABLED */ |
|
355 |
|
356 #ifdef __cplusplus |
|
357 } |
|
358 #endif |
|
359 |
|
360 #endif /* __XML_IO_H__ */ |