xmlIO.h revision 5d1a4d81bf16fe341017f46bc1f102bdf72778fa
13473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
2be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Summary: interface for the I/O interfaces used by the parser
3be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Description: interface for the I/O interfaces used by the parser
43473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
5be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Copy: See Copyright for the status of this software.
63473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
7be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Author: Daniel Veillard
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;
1363671190b546760a9e10d2e683257c3a86c680816Daniel Veillard    unsigned long rawconsumed;/* amount consumed from raw */
137a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard};
138a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard
139a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard
140a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#ifdef LIBXML_OUTPUT_ENABLED
1413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlOutputBuffer {
1423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void*                   context;
1433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlOutputWriteCallback  writecallback;
1443473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlOutputCloseCallback  closecallback;
1453473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
1463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
1473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
1483473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 or ISOLatin */
1493473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlBufferPtr conv;      /* if encoder != NULL buffer for output */
1503473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    int written;            /* total number of byte written */
15197bf4d02e5bdd07720e104eead52baa5ddff71fdDaniel Veillard    int error;
1523473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
153a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#endif /* LIBXML_OUTPUT_ENABLED */
1543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
1553473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
1563473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Interfaces for input
1573473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
158aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
159aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlCleanupInputCallbacks		(void);
1603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
161aecc0dc1f58f66765d68997bb85b5c4534404c67Daniel VeillardXMLPUBFUN int XMLCALL
162aecc0dc1f58f66765d68997bb85b5c4534404c67Daniel Veillard	xmlPopInputCallbacks			(void);
163aecc0dc1f58f66765d68997bb85b5c4534404c67Daniel Veillard
164aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
165aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlRegisterDefaultInputCallbacks	(void);
16676874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlAllocParserInputBuffer		(xmlCharEncoding enc);
1683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
16976874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlParserInputBufferCreateFilename	(const char *URI,
1713473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor                                                 xmlCharEncoding enc);
17276874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1733473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlParserInputBufferCreateFile		(FILE *file,
1743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor                                                 xmlCharEncoding enc);
17576874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1763473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlParserInputBufferCreateFd		(int fd,
1773473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	                                         xmlCharEncoding enc);
17876874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1793473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlParserInputBufferCreateMem		(const char *mem, int size,
1803473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	                                         xmlCharEncoding enc);
18176874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1825335055ef698595d4a4b7e4613fd057a45166849Daniel Veillard	xmlParserInputBufferCreateStatic	(const char *mem, int size,
1835335055ef698595d4a4b7e4613fd057a45166849Daniel Veillard	                                         xmlCharEncoding enc);
1845335055ef698595d4a4b7e4613fd057a45166849Daniel VeillardXMLPUBFUN xmlParserInputBufferPtr XMLCALL
1853473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlParserInputBufferCreateIO		(xmlInputReadCallback   ioread,
1863473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 xmlInputCloseCallback  ioclose,
1873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 void *ioctx,
1883473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	                                         xmlCharEncoding enc);
189aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
190aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlParserInputBufferRead		(xmlParserInputBufferPtr in,
1913473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 int len);
192aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
193aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlParserInputBufferGrow		(xmlParserInputBufferPtr in,
1943473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 int len);
195aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
196aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlParserInputBufferPush		(xmlParserInputBufferPtr in,
1973473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 int len,
1983473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor						 const char *buf);
199aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
200aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlFreeParserInputBuffer		(xmlParserInputBufferPtr in);
201aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN char * XMLCALL
202aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlParserGetDirectory			(const char *filename);
2033473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
204aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
205aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlRegisterInputCallbacks		(xmlInputMatchCallback matchFunc,
20656a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard						 xmlInputOpenCallback openFunc,
20756a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard						 xmlInputReadCallback readFunc,
20856a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard						 xmlInputCloseCallback closeFunc);
209a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#ifdef LIBXML_OUTPUT_ENABLED
2103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
2113473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Interfaces for output
2123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
213aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
214a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard	xmlCleanupOutputCallbacks		(void);
215a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel VeillardXMLPUBFUN void XMLCALL
216aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlRegisterDefaultOutputCallbacks(void);
21776874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL
2183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlAllocOutputBuffer		(xmlCharEncodingHandlerPtr encoder);
2193473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
22076874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL
2213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlOutputBufferCreateFilename	(const char *URI,
2223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlCharEncodingHandlerPtr encoder,
2233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int compression);
2243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
22576874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL
2263473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlOutputBufferCreateFile	(FILE *file,
2273473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlCharEncodingHandlerPtr encoder);
2283473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
22976874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL
2303473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlOutputBufferCreateFd		(int fd,
2313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlCharEncodingHandlerPtr encoder);
2323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
23376874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL
2343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor	xmlOutputBufferCreateIO		(xmlOutputWriteCallback   iowrite,
2353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlOutputCloseCallback  ioclose,
2363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 void *ioctx,
2373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlCharEncodingHandlerPtr encoder);
2383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
239aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
240aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlOutputBufferWrite		(xmlOutputBufferPtr out,
2413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len,
2423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const char *buf);
243aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
244aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlOutputBufferWriteString	(xmlOutputBufferPtr out,
2453473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const char *str);
2465d1a4d81bf16fe341017f46bc1f102bdf72778faDaniel VeillardXMLPUBFUN int XMLCALL
2475d1a4d81bf16fe341017f46bc1f102bdf72778faDaniel Veillard	xmlOutputBufferWriteEscape	(xmlOutputBufferPtr out,
2485d1a4d81bf16fe341017f46bc1f102bdf72778faDaniel Veillard					 const xmlChar *str);
2493473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
250aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
251aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlOutputBufferFlush		(xmlOutputBufferPtr out);
252aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
253aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlOutputBufferClose		(xmlOutputBufferPtr out);
2543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
255aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
256aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlRegisterOutputCallbacks	(xmlOutputMatchCallback matchFunc,
25756a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard					 xmlOutputOpenCallback openFunc,
25856a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard					 xmlOutputWriteCallback writeFunc,
25956a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard					 xmlOutputCloseCallback closeFunc);
260a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#endif /* LIBXML_OUTPUT_ENABLED */
2613473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
262f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard/*  This function only exists if HTTP support built into the library  */
263f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard#ifdef LIBXML_HTTP_ENABLED
264aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void * XMLCALL
265aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOHTTPOpenW			(const char * post_uri,
266f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard					 int   compression );
267aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
268aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlRegisterHTTPPostCallbacks	(void );
269f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard#endif
270a840b69261c44760d45370bef989c77f84727406Daniel VeillardXMLPUBFUN xmlParserInputPtr XMLCALL
271a840b69261c44760d45370bef989c77f84727406Daniel Veillard	xmlCheckHTTPInput		(xmlParserCtxtPtr ctxt,
272a840b69261c44760d45370bef989c77f84727406Daniel Veillard					 xmlParserInputPtr ret);
273f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard
2743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
2758bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard * A predefined entity loader disabling network accesses
2768bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard */
277aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlParserInputPtr XMLCALL
278aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlNoNetExternalEntityLoader	(const char *URL,
2798bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard					 const char *ID,
2808bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard					 xmlParserCtxtPtr ctxt);
2818bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard
2825f9fada355da8d4120a526ecea513f85e69755eeIgor Zlatkovic/*
2835f9fada355da8d4120a526ecea513f85e69755eeIgor Zlatkovic * xmlNormalizeWindowsPath is obsolete, don't use it.
2845f9fada355da8d4120a526ecea513f85e69755eeIgor Zlatkovic * Check xmlCanonicPath in uri.h for a better alternative.
2855f9fada355da8d4120a526ecea513f85e69755eeIgor Zlatkovic */
286aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlChar * XMLCALL
287aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlNormalizeWindowsPath		(const xmlChar *path);
2885aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin
289aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
290aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlCheckFilename		(const char *path);
2915aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin/**
2925aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin * Default 'file://' protocol callbacks
2935aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin */
294aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
295aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlFileMatch 			(const char *filename);
296aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void * XMLCALL
297aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlFileOpen 			(const char *filename);
298aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
299aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlFileRead 			(void * context,
3005aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 char * buffer,
3015aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 int len);
302aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
303aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlFileClose 			(void * context);
3045aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin
3055aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin/**
3065aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin * Default 'http://' protocol callbacks
3075aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin */
3085aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#ifdef LIBXML_HTTP_ENABLED
309aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
310aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOHTTPMatch 			(const char *filename);
311aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void * XMLCALL
312aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOHTTPOpen 			(const char *filename);
313aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
314aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOHTTPRead			(void * context,
3155aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 char * buffer,
3165aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 int len);
317aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
318aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOHTTPClose 			(void * context);
3195aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#endif /* LIBXML_HTTP_ENABLED */
3205aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin
3215aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin/**
3225aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin * Default 'ftp://' protocol callbacks
3235aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin */
3245aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#ifdef LIBXML_FTP_ENABLED
325aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
326aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOFTPMatch 			(const char *filename);
327aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void * XMLCALL
328aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOFTPOpen 			(const char *filename);
329aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
330aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOFTPRead			(void * context,
3315aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 char * buffer,
3325aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin					 int len);
333aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
334aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic	xmlIOFTPClose 			(void * context);
3355aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#endif /* LIBXML_FTP_ENABLED */
3365aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin
3373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifdef __cplusplus
3383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor}
3393473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif
3403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
3413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif /* __XML_IO_H__ */
342