/* * 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 __cplusplusextern "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 __cplusplusextern "C" {#endifstruct _xmlParserInputBuffer { void* context; xmlInputReadCallback readcallback; xmlInputCloseCallback closecallback; xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 */ xmlBufferPtr 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_ENABLEDstruct _xmlOutputBuffer { void* context; xmlOutputWriteCallback writecallback; xmlOutputCloseCallback closecallback; xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ xmlBufferPtr 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);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_ENABLEDXMLPUBFUN int XMLCALL xmlIOHTTPMatch (const char *filename);XMLPUBFUN void * XMLCALL xmlIOHTTPOpen (const char *filename);#ifdef LIBXML_OUTPUT_ENABLEDXMLPUBFUN 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__ */