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