| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401 |
- /**
- * @file
- *
- * @brief I/O interfaces used by the parser
- *
- * Functions and datatypes for parser input and output.
- *
- * @copyright 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 __cplusplus
- extern "C" {
- #endif
- /**
- * Callback used in the I/O Input API to detect if the current handler
- * can provide input functionality for this resource.
- *
- * @param filename the filename or URI
- * @returns 1 if yes and 0 if another Input module should be used
- */
- typedef int (*xmlInputMatchCallback) (const char *filename);
- /**
- * Callback used in the I/O Input API to open the resource
- *
- * @param filename the filename or URI
- * @returns an Input context or NULL in case or error
- */
- typedef void * (*xmlInputOpenCallback) (const char *filename);
- /**
- * Callback used in the I/O Input API to read the resource
- *
- * @param context an Input context
- * @param buffer the buffer to store data read
- * @param len the length of the buffer in bytes
- * @returns the number of bytes read or -1 in case of error
- */
- typedef int (*xmlInputReadCallback) (void * context, char * buffer, int len);
- /**
- * Callback used in the I/O Input API to close the resource
- *
- * @param context an Input context
- * @returns 0 or -1 in case of error
- */
- typedef int (*xmlInputCloseCallback) (void * context);
- #ifdef LIBXML_OUTPUT_ENABLED
- /**
- * Callback used in the I/O Output API to detect if the current handler
- * can provide output functionality for this resource.
- *
- * @param filename the filename or URI
- * @returns 1 if yes and 0 if another Output module should be used
- */
- typedef int (*xmlOutputMatchCallback) (const char *filename);
- /**
- * Callback used in the I/O Output API to open the resource
- *
- * @param filename the filename or URI
- * @returns an Output context or NULL in case or error
- */
- typedef void * (*xmlOutputOpenCallback) (const char *filename);
- /**
- * Callback used in the I/O Output API to write to the resource
- *
- * @param context an Output context
- * @param buffer the buffer of data to write
- * @param len the length of the buffer in bytes
- * @returns the number of bytes written or -1 in case of error
- */
- typedef int (*xmlOutputWriteCallback) (void * context, const char * buffer,
- int len);
- /**
- * Callback used in the I/O Output API to close the resource
- *
- * @param context an Output context
- * @returns 0 or -1 in case of error
- */
- typedef int (*xmlOutputCloseCallback) (void * context);
- #endif /* LIBXML_OUTPUT_ENABLED */
- /**
- * Signature for the function doing the lookup for a suitable input method
- * corresponding to an URI.
- *
- * @param URI the URI to read from
- * @param enc the requested source encoding
- * @returns the new xmlParserInputBuffer in case of success or NULL if no
- * method was found.
- */
- typedef xmlParserInputBuffer *
- (*xmlParserInputBufferCreateFilenameFunc)(const char *URI, xmlCharEncoding enc);
- /**
- * Signature for the function doing the lookup for a suitable output method
- * corresponding to an URI.
- *
- * @param URI the URI to write to
- * @param encoder the requested target encoding
- * @param compression compression level
- * @returns the new xmlOutputBuffer in case of success or NULL if no
- * method was found.
- */
- typedef xmlOutputBuffer *
- (*xmlOutputBufferCreateFilenameFunc)(const char *URI,
- xmlCharEncodingHandler *encoder, int compression);
- /**
- * Parser input buffer
- *
- * This struct and all related functions should ultimately
- * be removed from the public interface.
- */
- struct _xmlParserInputBuffer {
- void* context XML_DEPRECATED_MEMBER;
- xmlInputReadCallback readcallback XML_DEPRECATED_MEMBER;
- xmlInputCloseCallback closecallback XML_DEPRECATED_MEMBER;
- /* I18N conversions to UTF-8 */
- xmlCharEncodingHandler *encoder XML_DEPRECATED_MEMBER;
- /* Local buffer encoded in UTF-8 */
- xmlBuf *buffer XML_DEPRECATED_MEMBER;
- /* if encoder != NULL buffer for raw input */
- xmlBuf *raw XML_DEPRECATED_MEMBER;
- /* -1=unknown, 0=not compressed, 1=compressed */
- int compressed XML_DEPRECATED_MEMBER;
- int error XML_DEPRECATED_MEMBER;
- /* amount consumed from raw */
- unsigned long rawconsumed XML_DEPRECATED_MEMBER;
- };
- #ifdef LIBXML_OUTPUT_ENABLED
- /**
- * Output buffer
- */
- struct _xmlOutputBuffer {
- void* context;
- xmlOutputWriteCallback writecallback;
- xmlOutputCloseCallback closecallback;
- /* I18N conversions to UTF-8 */
- xmlCharEncodingHandler *encoder;
- /* Local buffer encoded in UTF-8 or ISOLatin */
- xmlBuf *buffer;
- /* if encoder != NULL buffer for output */
- xmlBuf *conv;
- /* total number of byte written */
- int written;
- int error;
- };
- #endif /* LIBXML_OUTPUT_ENABLED */
- /** @cond ignore */
- XML_DEPRECATED
- XMLPUBFUN xmlParserInputBufferCreateFilenameFunc *
- __xmlParserInputBufferCreateFilenameValue(void);
- XML_DEPRECATED
- XMLPUBFUN xmlOutputBufferCreateFilenameFunc *
- __xmlOutputBufferCreateFilenameValue(void);
- #ifndef XML_GLOBALS_NO_REDEFINITION
- #define xmlParserInputBufferCreateFilenameValue \
- (*__xmlParserInputBufferCreateFilenameValue())
- #define xmlOutputBufferCreateFilenameValue \
- (*__xmlOutputBufferCreateFilenameValue())
- #endif
- /** @endcond */
- /*
- * Interfaces for input
- */
- XMLPUBFUN void
- xmlCleanupInputCallbacks (void);
- XMLPUBFUN int
- xmlPopInputCallbacks (void);
- XMLPUBFUN void
- xmlRegisterDefaultInputCallbacks (void);
- XMLPUBFUN xmlParserInputBuffer *
- xmlAllocParserInputBuffer (xmlCharEncoding enc);
- XMLPUBFUN xmlParserInputBuffer *
- xmlParserInputBufferCreateFilename (const char *URI,
- xmlCharEncoding enc);
- XML_DEPRECATED
- XMLPUBFUN xmlParserInputBuffer *
- xmlParserInputBufferCreateFile (FILE *file,
- xmlCharEncoding enc);
- XMLPUBFUN xmlParserInputBuffer *
- xmlParserInputBufferCreateFd (int fd,
- xmlCharEncoding enc);
- XMLPUBFUN xmlParserInputBuffer *
- xmlParserInputBufferCreateMem (const char *mem, int size,
- xmlCharEncoding enc);
- XMLPUBFUN xmlParserInputBuffer *
- xmlParserInputBufferCreateStatic (const char *mem, int size,
- xmlCharEncoding enc);
- XMLPUBFUN xmlParserInputBuffer *
- xmlParserInputBufferCreateIO (xmlInputReadCallback ioread,
- xmlInputCloseCallback ioclose,
- void *ioctx,
- xmlCharEncoding enc);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlParserInputBufferRead (xmlParserInputBuffer *in,
- int len);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlParserInputBufferGrow (xmlParserInputBuffer *in,
- int len);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlParserInputBufferPush (xmlParserInputBuffer *in,
- int len,
- const char *buf);
- XMLPUBFUN void
- xmlFreeParserInputBuffer (xmlParserInputBuffer *in);
- XMLPUBFUN char *
- xmlParserGetDirectory (const char *filename);
- XMLPUBFUN int
- xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc,
- xmlInputOpenCallback openFunc,
- xmlInputReadCallback readFunc,
- xmlInputCloseCallback closeFunc);
- XMLPUBFUN xmlParserInputBuffer *
- __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 xmlOutputBuffer *
- xmlAllocOutputBuffer (xmlCharEncodingHandler *encoder);
- XMLPUBFUN xmlOutputBuffer *
- xmlOutputBufferCreateFilename (const char *URI,
- xmlCharEncodingHandler *encoder,
- int compression);
- XMLPUBFUN xmlOutputBuffer *
- xmlOutputBufferCreateFile (FILE *file,
- xmlCharEncodingHandler *encoder);
- XMLPUBFUN xmlOutputBuffer *
- xmlOutputBufferCreateBuffer (xmlBuffer *buffer,
- xmlCharEncodingHandler *encoder);
- XMLPUBFUN xmlOutputBuffer *
- xmlOutputBufferCreateFd (int fd,
- xmlCharEncodingHandler *encoder);
- XMLPUBFUN xmlOutputBuffer *
- xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite,
- xmlOutputCloseCallback ioclose,
- void *ioctx,
- xmlCharEncodingHandler *encoder);
- /* Couple of APIs to get the output without digging into the buffers */
- XMLPUBFUN const xmlChar *
- xmlOutputBufferGetContent (xmlOutputBuffer *out);
- XMLPUBFUN size_t
- xmlOutputBufferGetSize (xmlOutputBuffer *out);
- XMLPUBFUN int
- xmlOutputBufferWrite (xmlOutputBuffer *out,
- int len,
- const char *buf);
- XMLPUBFUN int
- xmlOutputBufferWriteString (xmlOutputBuffer *out,
- const char *str);
- XMLPUBFUN int
- xmlOutputBufferWriteEscape (xmlOutputBuffer *out,
- const xmlChar *str,
- xmlCharEncodingOutputFunc escaping);
- XMLPUBFUN int
- xmlOutputBufferFlush (xmlOutputBuffer *out);
- XMLPUBFUN int
- xmlOutputBufferClose (xmlOutputBuffer *out);
- XMLPUBFUN int
- xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc,
- xmlOutputOpenCallback openFunc,
- xmlOutputWriteCallback writeFunc,
- xmlOutputCloseCallback closeFunc);
- XMLPUBFUN xmlOutputBuffer *
- __xmlOutputBufferCreateFilename(const char *URI,
- xmlCharEncodingHandler *encoder,
- int compression);
- #endif /* LIBXML_OUTPUT_ENABLED */
- XML_DEPRECATED
- XMLPUBFUN xmlParserInput *
- xmlCheckHTTPInput (xmlParserCtxt *ctxt,
- xmlParserInput *ret);
- XML_DEPRECATED
- XMLPUBFUN xmlParserInput *
- xmlNoNetExternalEntityLoader (const char *URL,
- const char *ID,
- xmlParserCtxt *ctxt);
- XML_DEPRECATED
- XMLPUBFUN xmlChar *
- xmlNormalizeWindowsPath (const xmlChar *path);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlCheckFilename (const char *path);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlFileMatch (const char *filename);
- XML_DEPRECATED
- XMLPUBFUN void *
- xmlFileOpen (const char *filename);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlFileRead (void * context,
- char * buffer,
- int len);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlFileClose (void * context);
- #ifdef LIBXML_HTTP_STUBS_ENABLED
- /** @cond IGNORE */
- XML_DEPRECATED
- XMLPUBFUN int
- xmlIOHTTPMatch (const char *filename);
- XML_DEPRECATED
- XMLPUBFUN void *
- xmlIOHTTPOpen (const char *filename);
- #ifdef LIBXML_OUTPUT_ENABLED
- XML_DEPRECATED
- XMLPUBFUN void
- xmlRegisterHTTPPostCallbacks (void );
- XML_DEPRECATED
- XMLPUBFUN void *
- xmlIOHTTPOpenW (const char * post_uri,
- int compression );
- #endif /* LIBXML_OUTPUT_ENABLED */
- XML_DEPRECATED
- XMLPUBFUN int
- xmlIOHTTPRead (void * context,
- char * buffer,
- int len);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlIOHTTPClose (void * context);
- /** @endcond */
- #endif /* LIBXML_HTTP_STUBS_ENABLED */
- XMLPUBFUN xmlParserInputBufferCreateFilenameFunc
- xmlParserInputBufferCreateFilenameDefault(
- xmlParserInputBufferCreateFilenameFunc func);
- XMLPUBFUN xmlOutputBufferCreateFilenameFunc
- xmlOutputBufferCreateFilenameDefault(
- xmlOutputBufferCreateFilenameFunc func);
- XML_DEPRECATED
- XMLPUBFUN xmlOutputBufferCreateFilenameFunc
- xmlThrDefOutputBufferCreateFilenameDefault(
- xmlOutputBufferCreateFilenameFunc func);
- XML_DEPRECATED
- XMLPUBFUN xmlParserInputBufferCreateFilenameFunc
- xmlThrDefParserInputBufferCreateFilenameDefault(
- xmlParserInputBufferCreateFilenameFunc func);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __XML_IO_H__ */
|