1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-10-20 03:52:25 +03:00
Files
libxml2/include/libxml/xmlIO.h
2025-07-31 15:20:20 +02:00

398 lines
11 KiB
C

/**
* @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;
xmlCharEncodingHandler *encoder; /* I18N conversions to UTF-8 */
xmlBuf *buffer; /* Local buffer encoded in UTF-8 or ISOLatin */
xmlBuf *conv; /* if encoder != NULL buffer for output */
int written; /* total number of byte 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__ */