You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
366 lines
10 KiB
366 lines
10 KiB
/* |
|
* 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 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 __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 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__ */
|
|
|