doubango/thirdparties/common/include/libxml/xmlIO.h
c732d49e
 /*
  * Summary: interface for the I/O interfaces used by the parser
  * Description: interface for the I/O interfaces used by the parser
  *
  * Copy: See Copyright for the status of this software.
  *
  * Author: Daniel Veillard
  */
 
 #ifndef __XML_IO_H__
 #define __XML_IO_H__
 
 #include <stdio.h>
 #include <libxml/xmlversion.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /*
  * Those are the functions and datatypes for the parser input
  * I/O structures.
  */
 
 /**
  * xmlInputMatchCallback:
  * @filename: the filename or URI
  *
  * Callback used in the I/O Input API to detect if the current handler
  * can provide input fonctionnalities for this resource.
  *
  * Returns 1 if yes and 0 if another Input module should be used
  */
 typedef int (XMLCALL *xmlInputMatchCallback) (char const *filename);
 /**
  * xmlInputOpenCallback:
  * @filename: the filename or URI
  *
  * Callback used in the I/O Input API to open the resource
  *
  * Returns an Input context or NULL in case or error
  */
 typedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename);
 /**
  * xmlInputReadCallback:
  * @context:  an Input context
  * @buffer:  the buffer to store data read
  * @len:  the length of the buffer in bytes
  *
  * Callback used in the I/O Input API to read the resource
  *
  * Returns the number of bytes read or -1 in case of error
  */
 typedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len);
 /**
  * xmlInputCloseCallback:
  * @context:  an Input context
  *
  * Callback used in the I/O Input API to close the resource
  *
  * Returns 0 or -1 in case of error
  */
 typedef int (XMLCALL *xmlInputCloseCallback) (void * context);
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /*
  * Those are the functions and datatypes for the library output
  * I/O structures.
  */
 
 /**
  * xmlOutputMatchCallback:
  * @filename: the filename or URI
  *
  * Callback used in the I/O Output API to detect if the current handler
  * can provide output fonctionnalities for this resource.
  *
  * Returns 1 if yes and 0 if another Output module should be used
  */
 typedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename);
 /**
  * xmlOutputOpenCallback:
  * @filename: the filename or URI
  *
  * Callback used in the I/O Output API to open the resource
  *
  * Returns an Output context or NULL in case or error
  */
 typedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename);
 /**
  * xmlOutputWriteCallback:
  * @context:  an Output context
  * @buffer:  the buffer of data to write
  * @len:  the length of the buffer in bytes
  *
  * Callback used in the I/O Output API to write to the resource
  *
  * Returns the number of bytes written or -1 in case of error
  */
 typedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer,
                                        int len);
 /**
  * xmlOutputCloseCallback:
  * @context:  an Output context
  *
  * Callback used in the I/O Output API to close the resource
  *
  * Returns 0 or -1 in case of error
  */
 typedef int (XMLCALL *xmlOutputCloseCallback) (void * context);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 #ifdef __cplusplus
 }
 #endif
 
 #include <libxml/globals.h>
 #include <libxml/tree.h>
 #include <libxml/parser.h>
 #include <libxml/encoding.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 struct _xmlParserInputBuffer {
     void*                  context;
     xmlInputReadCallback   readcallback;
     xmlInputCloseCallback  closecallback;
 
     xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
 
     xmlBufPtr buffer;    /* Local buffer encoded in UTF-8 */
     xmlBufPtr raw;       /* if encoder != NULL buffer for raw input */
     int	compressed;	    /* -1=unknown, 0=not compressed, 1=compressed */
     int error;
     unsigned long rawconsumed;/* amount consumed from raw */
 };
 
 
 #ifdef LIBXML_OUTPUT_ENABLED
 struct _xmlOutputBuffer {
     void*                   context;
     xmlOutputWriteCallback  writecallback;
     xmlOutputCloseCallback  closecallback;
 
     xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
 
     xmlBufPtr buffer;    /* Local buffer encoded in UTF-8 or ISOLatin */
     xmlBufPtr conv;      /* if encoder != NULL buffer for output */
     int written;            /* total number of byte written */
     int error;
 };
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /*
  * Interfaces for input
  */
 XMLPUBFUN void XMLCALL
 	xmlCleanupInputCallbacks		(void);
 
 XMLPUBFUN int XMLCALL
 	xmlPopInputCallbacks			(void);
 
 XMLPUBFUN void XMLCALL
 	xmlRegisterDefaultInputCallbacks	(void);
 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 	xmlAllocParserInputBuffer		(xmlCharEncoding enc);
 
 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 	xmlParserInputBufferCreateFilename	(const char *URI,
                                                  xmlCharEncoding enc);
 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 	xmlParserInputBufferCreateFile		(FILE *file,
                                                  xmlCharEncoding enc);
 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 	xmlParserInputBufferCreateFd		(int fd,
 	                                         xmlCharEncoding enc);
 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 	xmlParserInputBufferCreateMem		(const char *mem, int size,
 	                                         xmlCharEncoding enc);
 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 	xmlParserInputBufferCreateStatic	(const char *mem, int size,
 	                                         xmlCharEncoding enc);
 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 	xmlParserInputBufferCreateIO		(xmlInputReadCallback   ioread,
 						 xmlInputCloseCallback  ioclose,
 						 void *ioctx,
 	                                         xmlCharEncoding enc);
 XMLPUBFUN int XMLCALL
 	xmlParserInputBufferRead		(xmlParserInputBufferPtr in,
 						 int len);
 XMLPUBFUN int XMLCALL
 	xmlParserInputBufferGrow		(xmlParserInputBufferPtr in,
 						 int len);
 XMLPUBFUN int XMLCALL
 	xmlParserInputBufferPush		(xmlParserInputBufferPtr in,
 						 int len,
 						 const char *buf);
 XMLPUBFUN void XMLCALL
 	xmlFreeParserInputBuffer		(xmlParserInputBufferPtr in);
 XMLPUBFUN char * XMLCALL
 	xmlParserGetDirectory			(const char *filename);
 
 XMLPUBFUN int XMLCALL
 	xmlRegisterInputCallbacks		(xmlInputMatchCallback matchFunc,
 						 xmlInputOpenCallback openFunc,
 						 xmlInputReadCallback readFunc,
 						 xmlInputCloseCallback closeFunc);
 
 xmlParserInputBufferPtr
 	__xmlParserInputBufferCreateFilename(const char *URI,
 										xmlCharEncoding enc);
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /*
  * Interfaces for output
  */
 XMLPUBFUN void XMLCALL
 	xmlCleanupOutputCallbacks		(void);
 XMLPUBFUN void XMLCALL
 	xmlRegisterDefaultOutputCallbacks(void);
 XMLPUBFUN xmlOutputBufferPtr XMLCALL
 	xmlAllocOutputBuffer		(xmlCharEncodingHandlerPtr encoder);
 
 XMLPUBFUN xmlOutputBufferPtr XMLCALL
 	xmlOutputBufferCreateFilename	(const char *URI,
 					 xmlCharEncodingHandlerPtr encoder,
 					 int compression);
 
 XMLPUBFUN xmlOutputBufferPtr XMLCALL
 	xmlOutputBufferCreateFile	(FILE *file,
 					 xmlCharEncodingHandlerPtr encoder);
 
 XMLPUBFUN xmlOutputBufferPtr XMLCALL
 	xmlOutputBufferCreateBuffer	(xmlBufferPtr buffer,
 					 xmlCharEncodingHandlerPtr encoder);
 
 XMLPUBFUN xmlOutputBufferPtr XMLCALL
 	xmlOutputBufferCreateFd		(int fd,
 					 xmlCharEncodingHandlerPtr encoder);
 
 XMLPUBFUN xmlOutputBufferPtr XMLCALL
 	xmlOutputBufferCreateIO		(xmlOutputWriteCallback   iowrite,
 					 xmlOutputCloseCallback  ioclose,
 					 void *ioctx,
 					 xmlCharEncodingHandlerPtr encoder);
 
 /* Couple of APIs to get the output without digging into the buffers */
 XMLPUBFUN const xmlChar * XMLCALL
         xmlOutputBufferGetContent       (xmlOutputBufferPtr out);
 XMLPUBFUN size_t XMLCALL
         xmlOutputBufferGetSize          (xmlOutputBufferPtr out);
 
 XMLPUBFUN int XMLCALL
 	xmlOutputBufferWrite		(xmlOutputBufferPtr out,
 					 int len,
 					 const char *buf);
 XMLPUBFUN int XMLCALL
 	xmlOutputBufferWriteString	(xmlOutputBufferPtr out,
 					 const char *str);
 XMLPUBFUN int XMLCALL
 	xmlOutputBufferWriteEscape	(xmlOutputBufferPtr out,
 					 const xmlChar *str,
 					 xmlCharEncodingOutputFunc escaping);
 
 XMLPUBFUN int XMLCALL
 	xmlOutputBufferFlush		(xmlOutputBufferPtr out);
 XMLPUBFUN int XMLCALL
 	xmlOutputBufferClose		(xmlOutputBufferPtr out);
 
 XMLPUBFUN int XMLCALL
 	xmlRegisterOutputCallbacks	(xmlOutputMatchCallback matchFunc,
 					 xmlOutputOpenCallback openFunc,
 					 xmlOutputWriteCallback writeFunc,
 					 xmlOutputCloseCallback closeFunc);
 
 xmlOutputBufferPtr
 	__xmlOutputBufferCreateFilename(const char *URI,
                               xmlCharEncodingHandlerPtr encoder,
                               int compression);
 
 #ifdef LIBXML_HTTP_ENABLED
 /*  This function only exists if HTTP support built into the library  */
 XMLPUBFUN void XMLCALL
 	xmlRegisterHTTPPostCallbacks	(void );
 #endif /* LIBXML_HTTP_ENABLED */
 
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 XMLPUBFUN xmlParserInputPtr XMLCALL
 	xmlCheckHTTPInput		(xmlParserCtxtPtr ctxt,
 					 xmlParserInputPtr ret);
 
 /*
  * A predefined entity loader disabling network accesses
  */
 XMLPUBFUN xmlParserInputPtr XMLCALL
 	xmlNoNetExternalEntityLoader	(const char *URL,
 					 const char *ID,
 					 xmlParserCtxtPtr ctxt);
 
 /*
  * xmlNormalizeWindowsPath is obsolete, don't use it.
  * Check xmlCanonicPath in uri.h for a better alternative.
  */
 XMLPUBFUN xmlChar * XMLCALL
 	xmlNormalizeWindowsPath		(const xmlChar *path);
 
 XMLPUBFUN int XMLCALL
 	xmlCheckFilename		(const char *path);
 /**
  * Default 'file://' protocol callbacks
  */
 XMLPUBFUN int XMLCALL
 	xmlFileMatch			(const char *filename);
 XMLPUBFUN void * XMLCALL
 	xmlFileOpen			(const char *filename);
 XMLPUBFUN int XMLCALL
 	xmlFileRead			(void * context,
 					 char * buffer,
 					 int len);
 XMLPUBFUN int XMLCALL
 	xmlFileClose			(void * context);
 
 /**
  * Default 'http://' protocol callbacks
  */
 #ifdef LIBXML_HTTP_ENABLED
 XMLPUBFUN int XMLCALL
 	xmlIOHTTPMatch			(const char *filename);
 XMLPUBFUN void * XMLCALL
 	xmlIOHTTPOpen			(const char *filename);
 #ifdef LIBXML_OUTPUT_ENABLED
 XMLPUBFUN void * XMLCALL
 	xmlIOHTTPOpenW			(const char * post_uri,
 					 int   compression );
 #endif /* LIBXML_OUTPUT_ENABLED */
 XMLPUBFUN int XMLCALL
 	xmlIOHTTPRead			(void * context,
 					 char * buffer,
 					 int len);
 XMLPUBFUN int XMLCALL
 	xmlIOHTTPClose			(void * context);
 #endif /* LIBXML_HTTP_ENABLED */
 
 /**
  * Default 'ftp://' protocol callbacks
  */
 #ifdef LIBXML_FTP_ENABLED
 XMLPUBFUN int XMLCALL
 	xmlIOFTPMatch			(const char *filename);
 XMLPUBFUN void * XMLCALL
 	xmlIOFTPOpen			(const char *filename);
 XMLPUBFUN int XMLCALL
 	xmlIOFTPRead			(void * context,
 					 char * buffer,
 					 int len);
 XMLPUBFUN int XMLCALL
 	xmlIOFTPClose			(void * context);
 #endif /* LIBXML_FTP_ENABLED */
 
 #ifdef __cplusplus
 }
 #endif
 
 #endif /* __XML_IO_H__ */