/ lib / lxml / includes / libxml / xmlIO.h
xmlIO.h
  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 functionality 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 functionality 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      xmlBufPtr buffer;    /* Local buffer encoded in UTF-8 */
133      xmlBufPtr 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      xmlBufPtr buffer;    /* Local buffer encoded in UTF-8 or ISOLatin */
149      xmlBufPtr 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 int XMLCALL
221  	xmlPopOutputCallbacks			(void);
222  XMLPUBFUN void XMLCALL
223  	xmlRegisterDefaultOutputCallbacks(void);
224  XMLPUBFUN xmlOutputBufferPtr XMLCALL
225  	xmlAllocOutputBuffer		(xmlCharEncodingHandlerPtr encoder);
226  
227  XMLPUBFUN xmlOutputBufferPtr XMLCALL
228  	xmlOutputBufferCreateFilename	(const char *URI,
229  					 xmlCharEncodingHandlerPtr encoder,
230  					 int compression);
231  
232  XMLPUBFUN xmlOutputBufferPtr XMLCALL
233  	xmlOutputBufferCreateFile	(FILE *file,
234  					 xmlCharEncodingHandlerPtr encoder);
235  
236  XMLPUBFUN xmlOutputBufferPtr XMLCALL
237  	xmlOutputBufferCreateBuffer	(xmlBufferPtr buffer,
238  					 xmlCharEncodingHandlerPtr encoder);
239  
240  XMLPUBFUN xmlOutputBufferPtr XMLCALL
241  	xmlOutputBufferCreateFd		(int fd,
242  					 xmlCharEncodingHandlerPtr encoder);
243  
244  XMLPUBFUN xmlOutputBufferPtr XMLCALL
245  	xmlOutputBufferCreateIO		(xmlOutputWriteCallback   iowrite,
246  					 xmlOutputCloseCallback  ioclose,
247  					 void *ioctx,
248  					 xmlCharEncodingHandlerPtr encoder);
249  
250  /* Couple of APIs to get the output without digging into the buffers */
251  XMLPUBFUN const xmlChar * XMLCALL
252          xmlOutputBufferGetContent       (xmlOutputBufferPtr out);
253  XMLPUBFUN size_t XMLCALL
254          xmlOutputBufferGetSize          (xmlOutputBufferPtr out);
255  
256  XMLPUBFUN int XMLCALL
257  	xmlOutputBufferWrite		(xmlOutputBufferPtr out,
258  					 int len,
259  					 const char *buf);
260  XMLPUBFUN int XMLCALL
261  	xmlOutputBufferWriteString	(xmlOutputBufferPtr out,
262  					 const char *str);
263  XMLPUBFUN int XMLCALL
264  	xmlOutputBufferWriteEscape	(xmlOutputBufferPtr out,
265  					 const xmlChar *str,
266  					 xmlCharEncodingOutputFunc escaping);
267  
268  XMLPUBFUN int XMLCALL
269  	xmlOutputBufferFlush		(xmlOutputBufferPtr out);
270  XMLPUBFUN int XMLCALL
271  	xmlOutputBufferClose		(xmlOutputBufferPtr out);
272  
273  XMLPUBFUN int XMLCALL
274  	xmlRegisterOutputCallbacks	(xmlOutputMatchCallback matchFunc,
275  					 xmlOutputOpenCallback openFunc,
276  					 xmlOutputWriteCallback writeFunc,
277  					 xmlOutputCloseCallback closeFunc);
278  
279  xmlOutputBufferPtr
280  	__xmlOutputBufferCreateFilename(const char *URI,
281                                xmlCharEncodingHandlerPtr encoder,
282                                int compression);
283  
284  #ifdef LIBXML_HTTP_ENABLED
285  /*  This function only exists if HTTP support built into the library  */
286  XMLPUBFUN void XMLCALL
287  	xmlRegisterHTTPPostCallbacks	(void );
288  #endif /* LIBXML_HTTP_ENABLED */
289  
290  #endif /* LIBXML_OUTPUT_ENABLED */
291  
292  XMLPUBFUN xmlParserInputPtr XMLCALL
293  	xmlCheckHTTPInput		(xmlParserCtxtPtr ctxt,
294  					 xmlParserInputPtr ret);
295  
296  /*
297   * A predefined entity loader disabling network accesses
298   */
299  XMLPUBFUN xmlParserInputPtr XMLCALL
300  	xmlNoNetExternalEntityLoader	(const char *URL,
301  					 const char *ID,
302  					 xmlParserCtxtPtr ctxt);
303  
304  /*
305   * xmlNormalizeWindowsPath is obsolete, don't use it.
306   * Check xmlCanonicPath in uri.h for a better alternative.
307   */
308  XMLPUBFUN xmlChar * XMLCALL
309  	xmlNormalizeWindowsPath		(const xmlChar *path);
310  
311  XMLPUBFUN int XMLCALL
312  	xmlCheckFilename		(const char *path);
313  /**
314   * Default 'file://' protocol callbacks
315   */
316  XMLPUBFUN int XMLCALL
317  	xmlFileMatch			(const char *filename);
318  XMLPUBFUN void * XMLCALL
319  	xmlFileOpen			(const char *filename);
320  XMLPUBFUN int XMLCALL
321  	xmlFileRead			(void * context,
322  					 char * buffer,
323  					 int len);
324  XMLPUBFUN int XMLCALL
325  	xmlFileClose			(void * context);
326  
327  /**
328   * Default 'http://' protocol callbacks
329   */
330  #ifdef LIBXML_HTTP_ENABLED
331  XMLPUBFUN int XMLCALL
332  	xmlIOHTTPMatch			(const char *filename);
333  XMLPUBFUN void * XMLCALL
334  	xmlIOHTTPOpen			(const char *filename);
335  #ifdef LIBXML_OUTPUT_ENABLED
336  XMLPUBFUN void * XMLCALL
337  	xmlIOHTTPOpenW			(const char * post_uri,
338  					 int   compression );
339  #endif /* LIBXML_OUTPUT_ENABLED */
340  XMLPUBFUN int XMLCALL
341  	xmlIOHTTPRead			(void * context,
342  					 char * buffer,
343  					 int len);
344  XMLPUBFUN int XMLCALL
345  	xmlIOHTTPClose			(void * context);
346  #endif /* LIBXML_HTTP_ENABLED */
347  
348  /**
349   * Default 'ftp://' protocol callbacks
350   */
351  #ifdef LIBXML_FTP_ENABLED
352  XMLPUBFUN int XMLCALL
353  	xmlIOFTPMatch			(const char *filename);
354  XMLPUBFUN void * XMLCALL
355  	xmlIOFTPOpen			(const char *filename);
356  XMLPUBFUN int XMLCALL
357  	xmlIOFTPRead			(void * context,
358  					 char * buffer,
359  					 int len);
360  XMLPUBFUN int XMLCALL
361  	xmlIOFTPClose			(void * context);
362  #endif /* LIBXML_FTP_ENABLED */
363  
364  #ifdef __cplusplus
365  }
366  #endif
367  
368  #endif /* __XML_IO_H__ */