blob: 48bbcbb94ebceca1d36cf1f04da6a8bc9cc0a9c2 [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>
13#include "tree.h"
Daniel Veillardb96e6431999-08-29 21:02:19 +000014#include "parser.h"
Daniel Veillarde2d034d1999-07-27 19:52:06 +000015#include "encoding.h"
Daniel Veillard14fff061999-06-22 21:49:07 +000016
17#ifdef __cplusplus
18extern "C" {
19#endif
20
Daniel Veillard71b656e2000-01-05 14:46:17 +000021typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
22typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
23struct _xmlParserInputBuffer {
Daniel Veillard14fff061999-06-22 21:49:07 +000024 /* Inputs */
25 FILE *file; /* Input on file handler */
Daniel Veillarde2d034d1999-07-27 19:52:06 +000026 void* gzfile; /* Input on a compressed stream */
Daniel Veillard14fff061999-06-22 21:49:07 +000027 int fd; /* Input on a file descriptor */
Daniel Veillard7f7d1111999-09-22 09:46:25 +000028 void *netIO; /* Input from a network stream */
Daniel Veillard14fff061999-06-22 21:49:07 +000029
Daniel Veillarde2d034d1999-07-27 19:52:06 +000030 xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
Daniel Veillard14fff061999-06-22 21:49:07 +000031
32 xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 */
33
Daniel Veillard71b656e2000-01-05 14:46:17 +000034};
Daniel Veillard14fff061999-06-22 21:49:07 +000035
Daniel Veillard14fff061999-06-22 21:49:07 +000036
Daniel Veillarde2d034d1999-07-27 19:52:06 +000037/*
38 * Interfaces
39 */
40
Daniel Veillardb96e6431999-08-29 21:02:19 +000041xmlParserInputBufferPtr
Daniel Veillarddbfd6411999-12-28 16:35:14 +000042 xmlAllocParserInputBuffer (xmlCharEncoding enc);
43
44xmlParserInputBufferPtr
Daniel Veillardb96e6431999-08-29 21:02:19 +000045 xmlParserInputBufferCreateFilename (const char *filename,
46 xmlCharEncoding enc);
47xmlParserInputBufferPtr
48 xmlParserInputBufferCreateFile (FILE *file,
49 xmlCharEncoding enc);
50xmlParserInputBufferPtr
51 xmlParserInputBufferCreateFd (int fd,
52 xmlCharEncoding enc);
53int xmlParserInputBufferRead (xmlParserInputBufferPtr in,
54 int len);
55int xmlParserInputBufferGrow (xmlParserInputBufferPtr in,
56 int len);
Daniel Veillard7f858501999-11-17 17:32:38 +000057int xmlParserInputBufferPush (xmlParserInputBufferPtr in,
58 int len,
Daniel Veillarda819dac1999-11-24 18:04:22 +000059 const char *buf);
Daniel Veillardb96e6431999-08-29 21:02:19 +000060void xmlFreeParserInputBuffer (xmlParserInputBufferPtr in);
61char * xmlParserGetDirectory (const char *filename);
Daniel Veillarde2d034d1999-07-27 19:52:06 +000062
Daniel Veillard14fff061999-06-22 21:49:07 +000063#ifdef __cplusplus
64}
65#endif
66
67#endif /* __XML_IO_H__ */