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