/app/libxml2-2.4.28/include/libxml2/libxml/xmlIO.h


    1 /*
    2  * xmlIO.h : interface for the I/O interfaces used by the parser
    3  *
    4  * See Copyright for the status of this software.
    5  *
    6  * daniel@veillard.com
    7  *
    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 (*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 * (*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 (*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 (*xmlInputCloseCallback) (void * context);
   64 
   65 /*
   66  * Those are the functions and datatypes for the library output
   67  * I/O structures.
   68  */
   69 
   70 /**
   71  * xmlOutputMatchCallback:
   72  * @filename: the filename or URI
   73  *
   74  * Callback used in the I/O Output API to detect if the current handler 
   75  * can provide output fonctionnalities for this resource.
   76  *
   77  * Returns 1 if yes and 0 if another Output module should be used
   78  */
   79 typedef int (*xmlOutputMatchCallback) (char const *filename);
   80 /**
   81  * xmlOutputOpenCallback:
   82  * @filename: the filename or URI
   83  *
   84  * Callback used in the I/O Output API to open the resource
   85  *
   86  * Returns an Output context or NULL in case or error
   87  */
   88 typedef void * (*xmlOutputOpenCallback) (char const *filename);
   89 /**
   90  * xmlOutputWriteCallback:
   91  * @context:  an Output context
   92  * @buffer:  the buffer of data to write
   93  * @len:  the length of the buffer in bytes
   94  *
   95  * Callback used in the I/O Output API to write to the resource
   96  *
   97  * Returns the number of bytes written or -1 in case of error
   98  */
   99 typedef int (*xmlOutputWriteCallback) (void * context, const char * buffer,
  100                                        int len);
  101 /**
  102  * xmlOutputCloseCallback:
  103  * @context:  an Output context
  104  *
  105  * Callback used in the I/O Output API to close the resource
  106  *
  107  * Returns 0 or -1 in case of error
  108  */
  109 typedef int (*xmlOutputCloseCallback) (void * context);
  110 
  111 #ifdef __cplusplus
  112 }
  113 #endif
  114 
  115 #include <libxml/globals.h>
  116 #include <libxml/tree.h>
  117 #include <libxml/parser.h>
  118 #include <libxml/encoding.h>
  119 
  120 #ifdef __cplusplus
  121 extern "C" {
  122 #endif
  123 struct _xmlParserInputBuffer {
  124     void*                  context;
  125     xmlInputReadCallback   readcallback;
  126     xmlInputCloseCallback  closecallback;
  127     
  128     xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
  129     
  130     xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 */
  131     xmlBufferPtr raw;       /* if encoder != NULL buffer for raw input */
  132 };
  133 
  134 
  135 struct _xmlOutputBuffer {
  136     void*                   context;
  137     xmlOutputWriteCallback  writecallback;
  138     xmlOutputCloseCallback  closecallback;
  139     
  140     xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
  141     
  142     xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 or ISOLatin */
  143     xmlBufferPtr conv;      /* if encoder != NULL buffer for output */
  144     int written;            /* total number of byte written */
  145 };
  146 
  147 /*
  148  * Interfaces for input
  149  */
  150 void	xmlCleanupInputCallbacks		(void);
  151 void	xmlCleanupOutputCallbacks		(void);
  152 
  153 void	xmlRegisterDefaultInputCallbacks	(void);
  154 xmlParserInputBufferPtr
  155 	xmlAllocParserInputBuffer		(xmlCharEncoding enc);
  156 
  157 xmlParserInputBufferPtr
  158 	xmlParserInputBufferCreateFilename	(const char *URI,
  159                                                  xmlCharEncoding enc);
  160 xmlParserInputBufferPtr
  161 	xmlParserInputBufferCreateFile		(FILE *file,
  162                                                  xmlCharEncoding enc);
  163 xmlParserInputBufferPtr
  164 	xmlParserInputBufferCreateFd		(int fd,
  165 	                                         xmlCharEncoding enc);
  166 xmlParserInputBufferPtr
  167 	xmlParserInputBufferCreateMem		(const char *mem, int size,
  168 	                                         xmlCharEncoding enc);
  169 xmlParserInputBufferPtr
  170 	xmlParserInputBufferCreateIO		(xmlInputReadCallback   ioread,
  171 						 xmlInputCloseCallback  ioclose,
  172 						 void *ioctx,
  173 	                                         xmlCharEncoding enc);
  174 int	xmlParserInputBufferRead		(xmlParserInputBufferPtr in,
  175 						 int len);
  176 int	xmlParserInputBufferGrow		(xmlParserInputBufferPtr in,
  177 						 int len);
  178 int	xmlParserInputBufferPush		(xmlParserInputBufferPtr in,
  179 						 int len,
  180 						 const char *buf);
  181 void	xmlFreeParserInputBuffer		(xmlParserInputBufferPtr in);
  182 char *	xmlParserGetDirectory			(const char *filename);
  183 
  184 int     xmlRegisterInputCallbacks		(xmlInputMatchCallback matchFunc,
  185 						 xmlInputOpenCallback openFunc,
  186 						 xmlInputReadCallback readFunc,
  187 						 xmlInputCloseCallback closeFunc);
  188 /*
  189  * Interfaces for output
  190  */
  191 void	xmlRegisterDefaultOutputCallbacks(void);
  192 xmlOutputBufferPtr
  193 	xmlAllocOutputBuffer		(xmlCharEncodingHandlerPtr encoder);
  194 
  195 xmlOutputBufferPtr
  196 	xmlOutputBufferCreateFilename	(const char *URI,
  197 					 xmlCharEncodingHandlerPtr encoder,
  198 					 int compression);
  199 
  200 xmlOutputBufferPtr
  201 	xmlOutputBufferCreateFile	(FILE *file,
  202 					 xmlCharEncodingHandlerPtr encoder);
  203 
  204 xmlOutputBufferPtr
  205 	xmlOutputBufferCreateFd		(int fd,
  206 					 xmlCharEncodingHandlerPtr encoder);
  207 
  208 xmlOutputBufferPtr
  209 	xmlOutputBufferCreateIO		(xmlOutputWriteCallback   iowrite,
  210 					 xmlOutputCloseCallback  ioclose,
  211 					 void *ioctx,
  212 					 xmlCharEncodingHandlerPtr encoder);
  213 
  214 int	xmlOutputBufferWrite		(xmlOutputBufferPtr out,
  215 					 int len,
  216 					 const char *buf);
  217 int	xmlOutputBufferWriteString	(xmlOutputBufferPtr out,
  218 					 const char *str);
  219 
  220 int	xmlOutputBufferFlush		(xmlOutputBufferPtr out);
  221 int	xmlOutputBufferClose		(xmlOutputBufferPtr out);
  222 
  223 int     xmlRegisterOutputCallbacks	(xmlOutputMatchCallback matchFunc,
  224 					 xmlOutputOpenCallback openFunc,
  225 					 xmlOutputWriteCallback writeFunc,
  226 					 xmlOutputCloseCallback closeFunc);
  227 
  228 /*  This function only exists if HTTP support built into the library  */
  229 #ifdef LIBXML_HTTP_ENABLED
  230 void *	xmlIOHTTPOpenW			(const char * post_uri,
  231 					 int   compression );
  232 void	xmlRegisterHTTPPostCallbacks	(void );
  233 #endif
  234 
  235 /*
  236  * A predefined entity loader disabling network accesses
  237  */
  238 xmlParserInputPtr xmlNoNetExternalEntityLoader(const char *URL,
  239 					 const char *ID,
  240 					 xmlParserCtxtPtr ctxt);
  241 
  242 xmlChar *xmlNormalizeWindowsPath	(const xmlChar *path);
  243 
  244 int	xmlCheckFilename		(const char *path);
  245 /**
  246  * Default 'file://' protocol callbacks 
  247  */
  248 int	xmlFileMatch 			(const char *filename);
  249 void *	xmlFileOpen 			(const char *filename);
  250 int	xmlFileRead 			(void * context, 
  251 					 char * buffer, 
  252 					 int len);
  253 int	xmlFileClose 			(void * context);
  254 
  255 /**
  256  * Default 'http://' protocol callbacks 
  257  */
  258 #ifdef LIBXML_HTTP_ENABLED
  259 int	xmlIOHTTPMatch 			(const char *filename);
  260 void *	xmlIOHTTPOpen 			(const char *filename);
  261 int 	xmlIOHTTPRead			(void * context, 
  262 					 char * buffer, 
  263 					 int len);
  264 int	xmlIOHTTPClose 			(void * context);
  265 #endif /* LIBXML_HTTP_ENABLED */
  266 
  267 /**
  268  * Default 'ftp://' protocol callbacks 
  269  */
  270 #ifdef LIBXML_FTP_ENABLED 
  271 int	xmlIOFTPMatch 			(const char *filename);
  272 void *	xmlIOFTPOpen 			(const char *filename);
  273 int 	xmlIOFTPRead			(void * context, 
  274 					 char * buffer, 
  275 					 int len);
  276 int 	xmlIOFTPClose 			(void * context);
  277 #endif /* LIBXML_FTP_ENABLED */
  278 
  279 #ifdef __cplusplus
  280 }
  281 #endif
  282 
  283 #endif /* __XML_IO_H__ */