123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- /*
- * 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 functionality 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 functionality 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 int XMLCALL
- xmlPopOutputCallbacks (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__ */
|