Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422/* * 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>#include <libxml/encoding.h>#define XML_TREE_INTERNALS#include <libxml/tree.h>#undef XML_TREE_INTERNALS
#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 functionality for this resource. * * Returns 1 if yes and 0 if another Input module should be used */typedef int (*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 * (*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 (*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 (*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 (*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 * (*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 (*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 (*xmlOutputCloseCallback) (void * context);#endif /* LIBXML_OUTPUT_ENABLED */
/** * xmlParserInputBufferCreateFilenameFunc: * @URI: the URI to read from * @enc: the requested source encoding * * Signature for the function doing the lookup for a suitable input method * corresponding to an URI. * * Returns the new xmlParserInputBufferPtr in case of success or NULL if no * method was found. */typedef xmlParserInputBufferPtr(*xmlParserInputBufferCreateFilenameFunc)(const char *URI, xmlCharEncoding enc);
/** * xmlOutputBufferCreateFilenameFunc: * @URI: the URI to write to * @enc: the requested target encoding * * Signature for the function doing the lookup for a suitable output method * corresponding to an URI. * * Returns the new xmlOutputBufferPtr in case of success or NULL if no * method was found. */typedef xmlOutputBufferPtr(*xmlOutputBufferCreateFilenameFunc)(const char *URI, xmlCharEncodingHandlerPtr encoder, int compression);
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_ENABLEDstruct _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 */
/** DOC_DISABLE */#define XML_GLOBALS_IO \ XML_OP(xmlParserInputBufferCreateFilenameValue, \ xmlParserInputBufferCreateFilenameFunc, XML_DEPRECATED) \ XML_OP(xmlOutputBufferCreateFilenameValue, \ xmlOutputBufferCreateFilenameFunc, XML_DEPRECATED)
#define XML_OP XML_DECLARE_GLOBALXML_GLOBALS_IO#undef XML_OP
#if defined(LIBXML_THREAD_ENABLED) && !defined(XML_GLOBALS_NO_REDEFINITION) #define xmlParserInputBufferCreateFilenameValue \ XML_GLOBAL_MACRO(xmlParserInputBufferCreateFilenameValue) #define xmlOutputBufferCreateFilenameValue \ XML_GLOBAL_MACRO(xmlOutputBufferCreateFilenameValue)#endif/** DOC_ENABLE */
/* * Interfaces for input */XMLPUBFUN void xmlCleanupInputCallbacks (void);
XMLPUBFUN int xmlPopInputCallbacks (void);
XMLPUBFUN void xmlRegisterDefaultInputCallbacks (void);XMLPUBFUN xmlParserInputBufferPtr xmlAllocParserInputBuffer (xmlCharEncoding enc);
XMLPUBFUN xmlParserInputBufferPtr xmlParserInputBufferCreateFilename (const char *URI, xmlCharEncoding enc);XMLPUBFUN xmlParserInputBufferPtr xmlParserInputBufferCreateFile (FILE *file, xmlCharEncoding enc);XMLPUBFUN xmlParserInputBufferPtr xmlParserInputBufferCreateFd (int fd, xmlCharEncoding enc);XMLPUBFUN xmlParserInputBufferPtr xmlParserInputBufferCreateMem (const char *mem, int size, xmlCharEncoding enc);XMLPUBFUN xmlParserInputBufferPtr xmlParserInputBufferCreateStatic (const char *mem, int size, xmlCharEncoding enc);XMLPUBFUN xmlParserInputBufferPtr xmlParserInputBufferCreateIO (xmlInputReadCallback ioread, xmlInputCloseCallback ioclose, void *ioctx, xmlCharEncoding enc);XMLPUBFUN int xmlParserInputBufferRead (xmlParserInputBufferPtr in, int len);XMLPUBFUN int xmlParserInputBufferGrow (xmlParserInputBufferPtr in, int len);XMLPUBFUN int xmlParserInputBufferPush (xmlParserInputBufferPtr in, int len, const char *buf);XMLPUBFUN void xmlFreeParserInputBuffer (xmlParserInputBufferPtr in);XMLPUBFUN char * xmlParserGetDirectory (const char *filename);
XMLPUBFUN int 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 xmlCleanupOutputCallbacks (void);XMLPUBFUN int xmlPopOutputCallbacks (void);XMLPUBFUN void xmlRegisterDefaultOutputCallbacks(void);XMLPUBFUN xmlOutputBufferPtr xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder);
XMLPUBFUN xmlOutputBufferPtr xmlOutputBufferCreateFilename (const char *URI, xmlCharEncodingHandlerPtr encoder, int compression);
XMLPUBFUN xmlOutputBufferPtr xmlOutputBufferCreateFile (FILE *file, xmlCharEncodingHandlerPtr encoder);
XMLPUBFUN xmlOutputBufferPtr xmlOutputBufferCreateBuffer (xmlBufferPtr buffer, xmlCharEncodingHandlerPtr encoder);
XMLPUBFUN xmlOutputBufferPtr xmlOutputBufferCreateFd (int fd, xmlCharEncodingHandlerPtr encoder);
XMLPUBFUN xmlOutputBufferPtr xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite, xmlOutputCloseCallback ioclose, void *ioctx, xmlCharEncodingHandlerPtr encoder);
/* Couple of APIs to get the output without digging into the buffers */XMLPUBFUN const xmlChar * xmlOutputBufferGetContent (xmlOutputBufferPtr out);XMLPUBFUN size_t xmlOutputBufferGetSize (xmlOutputBufferPtr out);
XMLPUBFUN int xmlOutputBufferWrite (xmlOutputBufferPtr out, int len, const char *buf);XMLPUBFUN int xmlOutputBufferWriteString (xmlOutputBufferPtr out, const char *str);XMLPUBFUN int xmlOutputBufferWriteEscape (xmlOutputBufferPtr out, const xmlChar *str, xmlCharEncodingOutputFunc escaping);
XMLPUBFUN int xmlOutputBufferFlush (xmlOutputBufferPtr out);XMLPUBFUN int xmlOutputBufferClose (xmlOutputBufferPtr out);
XMLPUBFUN int 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 xmlRegisterHTTPPostCallbacks (void );#endif /* LIBXML_HTTP_ENABLED */
#endif /* LIBXML_OUTPUT_ENABLED */
XMLPUBFUN xmlParserInputPtr xmlCheckHTTPInput (xmlParserCtxtPtr ctxt, xmlParserInputPtr ret);
/* * A predefined entity loader disabling network accesses */XMLPUBFUN xmlParserInputPtr 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 * xmlNormalizeWindowsPath (const xmlChar *path);
XMLPUBFUN int xmlCheckFilename (const char *path);/** * Default 'file://' protocol callbacks */XMLPUBFUN int xmlFileMatch (const char *filename);XMLPUBFUN void * xmlFileOpen (const char *filename);XMLPUBFUN int xmlFileRead (void * context, char * buffer, int len);XMLPUBFUN int xmlFileClose (void * context);
/** * Default 'http://' protocol callbacks */#ifdef LIBXML_HTTP_ENABLEDXMLPUBFUN int xmlIOHTTPMatch (const char *filename);XMLPUBFUN void * xmlIOHTTPOpen (const char *filename);#ifdef LIBXML_OUTPUT_ENABLEDXMLPUBFUN void * xmlIOHTTPOpenW (const char * post_uri, int compression );#endif /* LIBXML_OUTPUT_ENABLED */XMLPUBFUN int xmlIOHTTPRead (void * context, char * buffer, int len);XMLPUBFUN int xmlIOHTTPClose (void * context);#endif /* LIBXML_HTTP_ENABLED */
/** * Default 'ftp://' protocol callbacks */#if defined(LIBXML_FTP_ENABLED)XMLPUBFUN int xmlIOFTPMatch (const char *filename);XMLPUBFUN void * xmlIOFTPOpen (const char *filename);XMLPUBFUN int xmlIOFTPRead (void * context, char * buffer, int len);XMLPUBFUN int xmlIOFTPClose (void * context);#endif /* defined(LIBXML_FTP_ENABLED) */
XMLPUBFUN xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameDefault( xmlParserInputBufferCreateFilenameFunc func);XMLPUBFUN xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameDefault( xmlOutputBufferCreateFilenameFunc func);XMLPUBFUN xmlOutputBufferCreateFilenameFunc xmlThrDefOutputBufferCreateFilenameDefault( xmlOutputBufferCreateFilenameFunc func);XMLPUBFUN xmlParserInputBufferCreateFilenameFunc xmlThrDefParserInputBufferCreateFilenameDefault( xmlParserInputBufferCreateFilenameFunc func);
#ifdef __cplusplus}#endif
#endif /* __XML_IO_H__ */