xmlIO.h revision a840b69261c44760d45370bef989c77f84727406
13473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
23473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * xmlIO.h : interface for the I/O interfaces used by the parser
33473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
43473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * See Copyright for the status of this software.
53473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
6c5d64345cf19bfd72418eb0a837869b0462e9130Daniel Veillard * daniel@veillard.com
73473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
83473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
93473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifndef __XML_IO_H__
113473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define __XML_IO_H__
123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
133473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#include <stdio.h>
14f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard#include <libxml/xmlversion.h>
153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifdef __cplusplus
173473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorextern "C" {
183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif
193473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Those are the functions and datatypes for the parser input
223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * I/O structures.
233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
259d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/**
269d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlInputMatchCallback:
279d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @filename: the filename or URI
289d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
299d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Input API to detect if the current handler
309d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * can provide input fonctionnalities for this resource.
319d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
329d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns 1 if yes and 0 if another Input module should be used
339d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */
343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef int (*xmlInputMatchCallback) (char const *filename);
359d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/**
369d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlInputOpenCallback:
379d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @filename: the filename or URI
389d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
399d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Input API to open the resource
409d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
419d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns an Input context or NULL in case or error
429d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */
433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef void * (*xmlInputOpenCallback) (char const *filename);
449d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/**
459d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlInputReadCallback:
469d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @context:  an Input context
479d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @buffer:  the buffer to store data read
489d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @len:  the length of the buffer in bytes
499d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
509d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Input API to read the resource
519d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
529d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns the number of bytes read or -1 in case of error
539d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */
543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef int (*xmlInputReadCallback) (void * context, char * buffer, int len);
559d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/**
569d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlInputCloseCallback:
579d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @context:  an Input context
589d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
599d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Input API to close the resource
609d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
619d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns 0 or -1 in case of error
629d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */
63f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillardtypedef int (*xmlInputCloseCallback) (void * context);
643473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
65a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#ifdef LIBXML_OUTPUT_ENABLED
663473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Those are the functions and datatypes for the library output
683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * I/O structures.
693473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
719d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/**
729d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlOutputMatchCallback:
739d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @filename: the filename or URI
749d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
759d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Output API to detect if the current handler
769d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * can provide output fonctionnalities for this resource.
779d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
789d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns 1 if yes and 0 if another Output module should be used
799d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */
803473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef int (*xmlOutputMatchCallback) (char const *filename);
819d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/**
829d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlOutputOpenCallback:
839d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @filename: the filename or URI
849d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
859d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Output API to open the resource
869d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
879d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns an Output context or NULL in case or error
889d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */
893473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef void * (*xmlOutputOpenCallback) (char const *filename);
909d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/**
919d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlOutputWriteCallback:
929d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @context:  an Output context
939d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @buffer:  the buffer of data to write
949d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @len:  the length of the buffer in bytes
959d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
969d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Output API to write to the resource
979d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
989d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns the number of bytes written or -1 in case of error
999d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */
1003473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef int (*xmlOutputWriteCallback) (void * context, const char * buffer,
1013473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor                                       int len);
1029d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/**
1039d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlOutputCloseCallback:
1049d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @context:  an Output context
1059d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
1069d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Output API to close the resource
1079d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard *
1089d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns 0 or -1 in case of error
1099d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */
110f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillardtypedef int (*xmlOutputCloseCallback) (void * context);
111a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#endif /* LIBXML_OUTPUT_ENABLED */
1123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
113a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#ifdef __cplusplus
114a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard}
115a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#endif
116a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard
117a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#include <libxml/globals.h>
118a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#include <libxml/tree.h>
119a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#include <libxml/parser.h>
120a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#include <libxml/encoding.h>
121a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard
122a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#ifdef __cplusplus
123a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillardextern "C" {
124a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#endif
125a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillardstruct _xmlParserInputBuffer {
126a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard    void*                  context;
127a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard    xmlInputReadCallback   readcallback;
128a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard    xmlInputCloseCallback  closecallback;
129a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard
130a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard    xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
131a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard
132a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard    xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 */
133a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard    xmlBufferPtr raw;       /* if encoder != NULL buffer for raw input */
134c07329e2abfdaade767d0bd0268de324ba4058a2William M. Brack    int	compressed;	    /* -1=unknown, 0=not compressed, 1=compressed */
13597bf4d02e5bdd07720e104eead52baa5ddff71fdDaniel Veillard    int error;
136a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard};
137a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard
138a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard
139a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#ifdef LIBXML_OUTPUT_ENABLED
1403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlOutputBuffer {
1413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void*                   context;
1423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlOutputWriteCallback  writecallback;
1433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlOutputCloseCallback  closecallback;
1443473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
1453473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
1463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
1473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 or ISOLatin */
1483473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlBufferPtr conv;      /* if encoder != NULL buffer for output */
1493473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    int written;            /* total number of byte written */
15097bf4d02e5bdd07720e104eead52baa5ddff71fdDaniel Veillard    int error;
1513473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
152a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#endif /* LIBXML_OUTPUT_ENABLED */
1533473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
1543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
1553473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Interfaces for input
1563473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
157aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
158aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlCleanupInputCallbacks		(void);
1593473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
160aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
161aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlRegisterDefaultInputCallbacks	(void);
16276874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1633473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlAllocParserInputBuffer		(xmlCharEncoding enc);
1643473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
16576874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1663473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlParserInputBufferCreateFilename	(const char *URI,
1673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor                                                 xmlCharEncoding enc);
16876874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1693473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlParserInputBufferCreateFile		(FILE *file,
1703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor                                                 xmlCharEncoding enc);
17176874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1723473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlParserInputBufferCreateFd		(int fd,
1733473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	                                         xmlCharEncoding enc);
17476874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1753473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlParserInputBufferCreateMem		(const char *mem, int size,
1763473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	                                         xmlCharEncoding enc);
17776874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1785335055ef698595d4a4b7e4613fd057a45166849Daniel Veillard	xmlParserInputBufferCreateStatic	(const char *mem, int size,
1795335055ef698595d4a4b7e4613fd057a45166849Daniel Veillard	                                         xmlCharEncoding enc);
1805335055ef698595d4a4b7e4613fd057a45166849Daniel VeillardXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1813473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlParserInputBufferCreateIO		(xmlInputReadCallback   ioread,
1823473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 xmlInputCloseCallback  ioclose,
1833473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 void *ioctx,
1843473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	                                         xmlCharEncoding enc);
185aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
186aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlParserInputBufferRead		(xmlParserInputBufferPtr in,
1873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 int len);
188aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
189aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlParserInputBufferGrow		(xmlParserInputBufferPtr in,
1903473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 int len);
191aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
192aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlParserInputBufferPush		(xmlParserInputBufferPtr in,
1933473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 int len,
1943473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 const char *buf);
195aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
196aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlFreeParserInputBuffer		(xmlParserInputBufferPtr in);
197aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN char * XMLCALL
198aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlParserGetDirectory			(const char *filename);
1993473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
200aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
201aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlRegisterInputCallbacks		(xmlInputMatchCallback matchFunc,
20256a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard						 xmlInputOpenCallback openFunc,
20356a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard						 xmlInputReadCallback readFunc,
20456a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard						 xmlInputCloseCallback closeFunc);
205a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#ifdef LIBXML_OUTPUT_ENABLED
2063473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
2073473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Interfaces for output
2083473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
209aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
210a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard	xmlCleanupOutputCallbacks		(void);
211a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel VeillardXMLPUBFUN void XMLCALL
212aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlRegisterDefaultOutputCallbacks(void);
21376874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL
2143473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlAllocOutputBuffer		(xmlCharEncodingHandlerPtr encoder);
2153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
21676874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL
2173473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlOutputBufferCreateFilename	(const char *URI,
2183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlCharEncodingHandlerPtr encoder,
2193473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int compression);
2203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
22176874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL
2223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlOutputBufferCreateFile	(FILE *file,
2233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlCharEncodingHandlerPtr encoder);
2243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
22576874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL
2263473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlOutputBufferCreateFd		(int fd,
2273473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlCharEncodingHandlerPtr encoder);
2283473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
22976874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL
2303473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlOutputBufferCreateIO		(xmlOutputWriteCallback   iowrite,
2313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlOutputCloseCallback  ioclose,
2323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 void *ioctx,
2333473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlCharEncodingHandlerPtr encoder);
2343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
235aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
236aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlOutputBufferWrite		(xmlOutputBufferPtr out,
2373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len,
2383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const char *buf);
239aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
240aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlOutputBufferWriteString	(xmlOutputBufferPtr out,
2413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const char *str);
2423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
243aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
244aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlOutputBufferFlush		(xmlOutputBufferPtr out);
245aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
246aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlOutputBufferClose		(xmlOutputBufferPtr out);
2473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
248aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
249aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlRegisterOutputCallbacks	(xmlOutputMatchCallback matchFunc,
25056a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard					 xmlOutputOpenCallback openFunc,
25156a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard					 xmlOutputWriteCallback writeFunc,
25256a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard					 xmlOutputCloseCallback closeFunc);
253a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#endif /* LIBXML_OUTPUT_ENABLED */
2543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
255f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard/*  This function only exists if HTTP support built into the library  */
256f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard#ifdef LIBXML_HTTP_ENABLED
257aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void * XMLCALL
258aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOHTTPOpenW			(const char * post_uri,
259f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard					 int   compression );
260aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
261aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlRegisterHTTPPostCallbacks	(void );
262f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard#endif
263a840b69261c44760d45370bef989c77f84727406Daniel VeillardXMLPUBFUN xmlParserInputPtr XMLCALL
264a840b69261c44760d45370bef989c77f84727406Daniel Veillard	xmlCheckHTTPInput		(xmlParserCtxtPtr ctxt,
265a840b69261c44760d45370bef989c77f84727406Daniel Veillard					 xmlParserInputPtr ret);
266f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard
2673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
2688bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard * A predefined entity loader disabling network accesses
2698bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard */
270aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlParserInputPtr XMLCALL
271aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlNoNetExternalEntityLoader	(const char *URL,
2728bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard					 const char *ID,
2738bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard					 xmlParserCtxtPtr ctxt);
2748bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard
2755f9fada355da8d4120a526ecea513f85e69755eeIgor Zlatkovic/*
2765f9fada355da8d4120a526ecea513f85e69755eeIgor Zlatkovic * xmlNormalizeWindowsPath is obsolete, don't use it.
2775f9fada355da8d4120a526ecea513f85e69755eeIgor Zlatkovic * Check xmlCanonicPath in uri.h for a better alternative.
2785f9fada355da8d4120a526ecea513f85e69755eeIgor Zlatkovic */
279aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlChar * XMLCALL
280aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlNormalizeWindowsPath		(const xmlChar *path);
2815aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin
282aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
283aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlCheckFilename		(const char *path);
2845aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin/**
2855aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin * Default 'file://' protocol callbacks
2865aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin */
287aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
288aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlFileMatch 			(const char *filename);
289aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void * XMLCALL
290aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlFileOpen 			(const char *filename);
291aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
292aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlFileRead 			(void * context,
2935aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 char * buffer,
2945aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 int len);
295aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
296aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlFileClose 			(void * context);
2975aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin
2985aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin/**
2995aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin * Default 'http://' protocol callbacks
3005aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin */
3015aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#ifdef LIBXML_HTTP_ENABLED
302aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
303aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOHTTPMatch 			(const char *filename);
304aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void * XMLCALL
305aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOHTTPOpen 			(const char *filename);
306aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
307aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOHTTPRead			(void * context,
3085aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 char * buffer,
3095aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 int len);
310aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
311aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOHTTPClose 			(void * context);
3125aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#endif /* LIBXML_HTTP_ENABLED */
3135aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin
3145aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin/**
3155aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin * Default 'ftp://' protocol callbacks
3165aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin */
3175aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#ifdef LIBXML_FTP_ENABLED
318aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
319aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOFTPMatch 			(const char *filename);
320aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void * XMLCALL
321aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOFTPOpen 			(const char *filename);
322aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
323aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOFTPRead			(void * context,
3245aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 char * buffer,
3255aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 int len);
326aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
327aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOFTPClose 			(void * context);
3285aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#endif /* LIBXML_FTP_ENABLED */
3295aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin
3303473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifdef __cplusplus
3313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor}
3323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif
3333473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
3343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif /* __XML_IO_H__ */
335