blob: 2d14ebeb93f4c4cfe319894d45dced4f10819b45 [file] [log] [blame]
Daniel Veillard14fff061999-06-22 21:49:07 +00001/*
2 * xmlIO.h : interface for the I/O interfaces used by the parser
3 *
4 * See Copyright for the status of this software.
5 *
6 * Daniel.Veillard@w3.org
7 */
8
9#ifndef __XML_IO_H__
10#define __XML_IO_H__
11
12#include <stdio.h>
Daniel Veillard361d8452000-04-03 19:48:13 +000013#include <libxml/tree.h>
14#include <libxml/parser.h>
15#include <libxml/encoding.h>
Daniel Veillard14fff061999-06-22 21:49:07 +000016
17#ifdef __cplusplus
18extern "C" {
19#endif
20
Daniel Veillard5d211f42000-04-07 17:00:24 +000021typedef int (*xmlInputMatchCallback) (char const *filename);
22typedef void * (*xmlInputOpenCallback) (char const *filename);
23typedef int (*xmlInputReadCallback) (void * context, char * buffer, int len);
24typedef void (*xmlInputCloseCallback) (void * context);
25
Daniel Veillard71b656e2000-01-05 14:46:17 +000026typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
27typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
28struct _xmlParserInputBuffer {
Daniel Veillard5d211f42000-04-07 17:00:24 +000029 void* context;
30 xmlInputReadCallback readcallback;
31 xmlInputCloseCallback closecallback;
Daniel Veillard14fff061999-06-22 21:49:07 +000032
Daniel Veillarde2d034d1999-07-27 19:52:06 +000033 xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
Daniel Veillard14fff061999-06-22 21:49:07 +000034
35 xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 */
Daniel Veillard496a1cf2000-05-03 14:20:55 +000036 xmlBufferPtr raw; /* if encoder != NULL buffer for raw input */
Daniel Veillard71b656e2000-01-05 14:46:17 +000037};
Daniel Veillard14fff061999-06-22 21:49:07 +000038
Daniel Veillard14fff061999-06-22 21:49:07 +000039
Daniel Veillarde2d034d1999-07-27 19:52:06 +000040/*
41 * Interfaces
42 */
43
Daniel Veillardb96e6431999-08-29 21:02:19 +000044xmlParserInputBufferPtr
Daniel Veillarddbfd6411999-12-28 16:35:14 +000045 xmlAllocParserInputBuffer (xmlCharEncoding enc);
46
47xmlParserInputBufferPtr
Daniel Veillard06047432000-04-24 11:33:38 +000048 xmlParserInputBufferCreateFilename (const char *URI,
Daniel Veillardb96e6431999-08-29 21:02:19 +000049 xmlCharEncoding enc);
50xmlParserInputBufferPtr
51 xmlParserInputBufferCreateFile (FILE *file,
52 xmlCharEncoding enc);
53xmlParserInputBufferPtr
54 xmlParserInputBufferCreateFd (int fd,
55 xmlCharEncoding enc);
Daniel Veillard5e873c42000-04-12 13:27:38 +000056xmlParserInputBufferPtr
57 xmlParserInputBufferCreateIO (xmlInputReadCallback ioread,
58 xmlInputCloseCallback ioclose,
59 void *ioctx,
60 xmlCharEncoding enc);
Daniel Veillardb96e6431999-08-29 21:02:19 +000061int xmlParserInputBufferRead (xmlParserInputBufferPtr in,
62 int len);
63int xmlParserInputBufferGrow (xmlParserInputBufferPtr in,
64 int len);
Daniel Veillard7f858501999-11-17 17:32:38 +000065int xmlParserInputBufferPush (xmlParserInputBufferPtr in,
66 int len,
Daniel Veillarda819dac1999-11-24 18:04:22 +000067 const char *buf);
Daniel Veillardb96e6431999-08-29 21:02:19 +000068void xmlFreeParserInputBuffer (xmlParserInputBufferPtr in);
69char * xmlParserGetDirectory (const char *filename);
Daniel Veillarde2d034d1999-07-27 19:52:06 +000070
Daniel Veillard5d211f42000-04-07 17:00:24 +000071int xmlRegisterInputCallbacks (xmlInputMatchCallback match,
72 xmlInputOpenCallback open,
73 xmlInputReadCallback read,
74 xmlInputCloseCallback close);
Daniel Veillard14fff061999-06-22 21:49:07 +000075#ifdef __cplusplus
76}
77#endif
78
79#endif /* __XML_IO_H__ */