Annotation of embedaddon/libxml2/include/libxml/xmlIO.h, revision 1.1.1.2
1.1 misho 1: /*
2: * Summary: interface for the I/O interfaces used by the parser
3: * Description: interface for the I/O interfaces used by the parser
4: *
5: * Copy: See Copyright for the status of this software.
6: *
7: * Author: Daniel Veillard
8: */
9:
10: #ifndef __XML_IO_H__
11: #define __XML_IO_H__
12:
13: #include <stdio.h>
14: #include <libxml/xmlversion.h>
15:
16: #ifdef __cplusplus
17: extern "C" {
18: #endif
19:
20: /*
21: * Those are the functions and datatypes for the parser input
22: * I/O structures.
23: */
24:
25: /**
26: * xmlInputMatchCallback:
27: * @filename: the filename or URI
28: *
1.1.1.2 ! misho 29: * Callback used in the I/O Input API to detect if the current handler
1.1 misho 30: * can provide input fonctionnalities for this resource.
31: *
32: * Returns 1 if yes and 0 if another Input module should be used
33: */
34: typedef int (XMLCALL *xmlInputMatchCallback) (char const *filename);
35: /**
36: * xmlInputOpenCallback:
37: * @filename: the filename or URI
38: *
39: * Callback used in the I/O Input API to open the resource
40: *
41: * Returns an Input context or NULL in case or error
42: */
43: typedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename);
44: /**
45: * xmlInputReadCallback:
46: * @context: an Input context
47: * @buffer: the buffer to store data read
48: * @len: the length of the buffer in bytes
49: *
50: * Callback used in the I/O Input API to read the resource
51: *
52: * Returns the number of bytes read or -1 in case of error
53: */
54: typedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len);
55: /**
56: * xmlInputCloseCallback:
57: * @context: an Input context
58: *
59: * Callback used in the I/O Input API to close the resource
60: *
61: * Returns 0 or -1 in case of error
62: */
63: typedef int (XMLCALL *xmlInputCloseCallback) (void * context);
64:
65: #ifdef LIBXML_OUTPUT_ENABLED
66: /*
67: * Those are the functions and datatypes for the library output
68: * I/O structures.
69: */
70:
71: /**
72: * xmlOutputMatchCallback:
73: * @filename: the filename or URI
74: *
1.1.1.2 ! misho 75: * Callback used in the I/O Output API to detect if the current handler
1.1 misho 76: * can provide output fonctionnalities for this resource.
77: *
78: * Returns 1 if yes and 0 if another Output module should be used
79: */
80: typedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename);
81: /**
82: * xmlOutputOpenCallback:
83: * @filename: the filename or URI
84: *
85: * Callback used in the I/O Output API to open the resource
86: *
87: * Returns an Output context or NULL in case or error
88: */
89: typedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename);
90: /**
91: * xmlOutputWriteCallback:
92: * @context: an Output context
93: * @buffer: the buffer of data to write
94: * @len: the length of the buffer in bytes
95: *
96: * Callback used in the I/O Output API to write to the resource
97: *
98: * Returns the number of bytes written or -1 in case of error
99: */
100: typedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer,
101: int len);
102: /**
103: * xmlOutputCloseCallback:
104: * @context: an Output context
105: *
106: * Callback used in the I/O Output API to close the resource
107: *
108: * Returns 0 or -1 in case of error
109: */
110: typedef int (XMLCALL *xmlOutputCloseCallback) (void * context);
111: #endif /* LIBXML_OUTPUT_ENABLED */
112:
113: #ifdef __cplusplus
114: }
115: #endif
116:
117: #include <libxml/globals.h>
118: #include <libxml/tree.h>
119: #include <libxml/parser.h>
120: #include <libxml/encoding.h>
121:
122: #ifdef __cplusplus
123: extern "C" {
124: #endif
125: struct _xmlParserInputBuffer {
126: void* context;
127: xmlInputReadCallback readcallback;
128: xmlInputCloseCallback closecallback;
1.1.1.2 ! misho 129:
1.1 misho 130: xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
1.1.1.2 ! misho 131:
! 132: xmlBufPtr buffer; /* Local buffer encoded in UTF-8 */
! 133: xmlBufPtr raw; /* if encoder != NULL buffer for raw input */
1.1 misho 134: int compressed; /* -1=unknown, 0=not compressed, 1=compressed */
135: int error;
136: unsigned long rawconsumed;/* amount consumed from raw */
137: };
138:
139:
140: #ifdef LIBXML_OUTPUT_ENABLED
141: struct _xmlOutputBuffer {
142: void* context;
143: xmlOutputWriteCallback writecallback;
144: xmlOutputCloseCallback closecallback;
1.1.1.2 ! misho 145:
1.1 misho 146: xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
1.1.1.2 ! misho 147:
! 148: xmlBufPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */
! 149: xmlBufPtr conv; /* if encoder != NULL buffer for output */
1.1 misho 150: int written; /* total number of byte written */
151: int error;
152: };
153: #endif /* LIBXML_OUTPUT_ENABLED */
154:
155: /*
156: * Interfaces for input
157: */
1.1.1.2 ! misho 158: XMLPUBFUN void XMLCALL
1.1 misho 159: xmlCleanupInputCallbacks (void);
160:
161: XMLPUBFUN int XMLCALL
162: xmlPopInputCallbacks (void);
163:
1.1.1.2 ! misho 164: XMLPUBFUN void XMLCALL
1.1 misho 165: xmlRegisterDefaultInputCallbacks (void);
166: XMLPUBFUN xmlParserInputBufferPtr XMLCALL
167: xmlAllocParserInputBuffer (xmlCharEncoding enc);
168:
169: XMLPUBFUN xmlParserInputBufferPtr XMLCALL
170: xmlParserInputBufferCreateFilename (const char *URI,
171: xmlCharEncoding enc);
172: XMLPUBFUN xmlParserInputBufferPtr XMLCALL
173: xmlParserInputBufferCreateFile (FILE *file,
174: xmlCharEncoding enc);
175: XMLPUBFUN xmlParserInputBufferPtr XMLCALL
176: xmlParserInputBufferCreateFd (int fd,
177: xmlCharEncoding enc);
178: XMLPUBFUN xmlParserInputBufferPtr XMLCALL
179: xmlParserInputBufferCreateMem (const char *mem, int size,
180: xmlCharEncoding enc);
181: XMLPUBFUN xmlParserInputBufferPtr XMLCALL
182: xmlParserInputBufferCreateStatic (const char *mem, int size,
183: xmlCharEncoding enc);
184: XMLPUBFUN xmlParserInputBufferPtr XMLCALL
185: xmlParserInputBufferCreateIO (xmlInputReadCallback ioread,
186: xmlInputCloseCallback ioclose,
187: void *ioctx,
188: xmlCharEncoding enc);
1.1.1.2 ! misho 189: XMLPUBFUN int XMLCALL
1.1 misho 190: xmlParserInputBufferRead (xmlParserInputBufferPtr in,
191: int len);
1.1.1.2 ! misho 192: XMLPUBFUN int XMLCALL
1.1 misho 193: xmlParserInputBufferGrow (xmlParserInputBufferPtr in,
194: int len);
1.1.1.2 ! misho 195: XMLPUBFUN int XMLCALL
1.1 misho 196: xmlParserInputBufferPush (xmlParserInputBufferPtr in,
197: int len,
198: const char *buf);
1.1.1.2 ! misho 199: XMLPUBFUN void XMLCALL
1.1 misho 200: xmlFreeParserInputBuffer (xmlParserInputBufferPtr in);
1.1.1.2 ! misho 201: XMLPUBFUN char * XMLCALL
1.1 misho 202: xmlParserGetDirectory (const char *filename);
203:
1.1.1.2 ! misho 204: XMLPUBFUN int XMLCALL
1.1 misho 205: xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc,
206: xmlInputOpenCallback openFunc,
207: xmlInputReadCallback readFunc,
208: xmlInputCloseCallback closeFunc);
209:
210: xmlParserInputBufferPtr
211: __xmlParserInputBufferCreateFilename(const char *URI,
212: xmlCharEncoding enc);
213:
214: #ifdef LIBXML_OUTPUT_ENABLED
215: /*
216: * Interfaces for output
217: */
1.1.1.2 ! misho 218: XMLPUBFUN void XMLCALL
1.1 misho 219: xmlCleanupOutputCallbacks (void);
1.1.1.2 ! misho 220: XMLPUBFUN void XMLCALL
1.1 misho 221: xmlRegisterDefaultOutputCallbacks(void);
222: XMLPUBFUN xmlOutputBufferPtr XMLCALL
223: xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder);
224:
225: XMLPUBFUN xmlOutputBufferPtr XMLCALL
226: xmlOutputBufferCreateFilename (const char *URI,
227: xmlCharEncodingHandlerPtr encoder,
228: int compression);
229:
230: XMLPUBFUN xmlOutputBufferPtr XMLCALL
231: xmlOutputBufferCreateFile (FILE *file,
232: xmlCharEncodingHandlerPtr encoder);
233:
234: XMLPUBFUN xmlOutputBufferPtr XMLCALL
235: xmlOutputBufferCreateBuffer (xmlBufferPtr buffer,
236: xmlCharEncodingHandlerPtr encoder);
237:
238: XMLPUBFUN xmlOutputBufferPtr XMLCALL
239: xmlOutputBufferCreateFd (int fd,
240: xmlCharEncodingHandlerPtr encoder);
241:
242: XMLPUBFUN xmlOutputBufferPtr XMLCALL
243: xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite,
244: xmlOutputCloseCallback ioclose,
245: void *ioctx,
246: xmlCharEncodingHandlerPtr encoder);
247:
1.1.1.2 ! misho 248: /* Couple of APIs to get the output without digging into the buffers */
! 249: XMLPUBFUN const xmlChar * XMLCALL
! 250: xmlOutputBufferGetContent (xmlOutputBufferPtr out);
! 251: XMLPUBFUN size_t XMLCALL
! 252: xmlOutputBufferGetSize (xmlOutputBufferPtr out);
! 253:
! 254: XMLPUBFUN int XMLCALL
1.1 misho 255: xmlOutputBufferWrite (xmlOutputBufferPtr out,
256: int len,
257: const char *buf);
1.1.1.2 ! misho 258: XMLPUBFUN int XMLCALL
1.1 misho 259: xmlOutputBufferWriteString (xmlOutputBufferPtr out,
260: const char *str);
1.1.1.2 ! misho 261: XMLPUBFUN int XMLCALL
1.1 misho 262: xmlOutputBufferWriteEscape (xmlOutputBufferPtr out,
263: const xmlChar *str,
264: xmlCharEncodingOutputFunc escaping);
265:
1.1.1.2 ! misho 266: XMLPUBFUN int XMLCALL
1.1 misho 267: xmlOutputBufferFlush (xmlOutputBufferPtr out);
1.1.1.2 ! misho 268: XMLPUBFUN int XMLCALL
1.1 misho 269: xmlOutputBufferClose (xmlOutputBufferPtr out);
270:
1.1.1.2 ! misho 271: XMLPUBFUN int XMLCALL
1.1 misho 272: xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc,
273: xmlOutputOpenCallback openFunc,
274: xmlOutputWriteCallback writeFunc,
275: xmlOutputCloseCallback closeFunc);
276:
277: xmlOutputBufferPtr
278: __xmlOutputBufferCreateFilename(const char *URI,
279: xmlCharEncodingHandlerPtr encoder,
280: int compression);
281:
282: #ifdef LIBXML_HTTP_ENABLED
283: /* This function only exists if HTTP support built into the library */
1.1.1.2 ! misho 284: XMLPUBFUN void XMLCALL
1.1 misho 285: xmlRegisterHTTPPostCallbacks (void );
286: #endif /* LIBXML_HTTP_ENABLED */
1.1.1.2 ! misho 287:
1.1 misho 288: #endif /* LIBXML_OUTPUT_ENABLED */
289:
290: XMLPUBFUN xmlParserInputPtr XMLCALL
291: xmlCheckHTTPInput (xmlParserCtxtPtr ctxt,
292: xmlParserInputPtr ret);
293:
294: /*
295: * A predefined entity loader disabling network accesses
296: */
1.1.1.2 ! misho 297: XMLPUBFUN xmlParserInputPtr XMLCALL
1.1 misho 298: xmlNoNetExternalEntityLoader (const char *URL,
299: const char *ID,
300: xmlParserCtxtPtr ctxt);
301:
1.1.1.2 ! misho 302: /*
! 303: * xmlNormalizeWindowsPath is obsolete, don't use it.
1.1 misho 304: * Check xmlCanonicPath in uri.h for a better alternative.
305: */
1.1.1.2 ! misho 306: XMLPUBFUN xmlChar * XMLCALL
1.1 misho 307: xmlNormalizeWindowsPath (const xmlChar *path);
308:
1.1.1.2 ! misho 309: XMLPUBFUN int XMLCALL
1.1 misho 310: xmlCheckFilename (const char *path);
311: /**
1.1.1.2 ! misho 312: * Default 'file://' protocol callbacks
1.1 misho 313: */
1.1.1.2 ! misho 314: XMLPUBFUN int XMLCALL
! 315: xmlFileMatch (const char *filename);
! 316: XMLPUBFUN void * XMLCALL
! 317: xmlFileOpen (const char *filename);
! 318: XMLPUBFUN int XMLCALL
! 319: xmlFileRead (void * context,
! 320: char * buffer,
1.1 misho 321: int len);
1.1.1.2 ! misho 322: XMLPUBFUN int XMLCALL
! 323: xmlFileClose (void * context);
1.1 misho 324:
325: /**
1.1.1.2 ! misho 326: * Default 'http://' protocol callbacks
1.1 misho 327: */
328: #ifdef LIBXML_HTTP_ENABLED
1.1.1.2 ! misho 329: XMLPUBFUN int XMLCALL
! 330: xmlIOHTTPMatch (const char *filename);
! 331: XMLPUBFUN void * XMLCALL
! 332: xmlIOHTTPOpen (const char *filename);
1.1 misho 333: #ifdef LIBXML_OUTPUT_ENABLED
1.1.1.2 ! misho 334: XMLPUBFUN void * XMLCALL
1.1 misho 335: xmlIOHTTPOpenW (const char * post_uri,
336: int compression );
337: #endif /* LIBXML_OUTPUT_ENABLED */
1.1.1.2 ! misho 338: XMLPUBFUN int XMLCALL
! 339: xmlIOHTTPRead (void * context,
! 340: char * buffer,
1.1 misho 341: int len);
1.1.1.2 ! misho 342: XMLPUBFUN int XMLCALL
! 343: xmlIOHTTPClose (void * context);
1.1 misho 344: #endif /* LIBXML_HTTP_ENABLED */
345:
346: /**
1.1.1.2 ! misho 347: * Default 'ftp://' protocol callbacks
1.1 misho 348: */
1.1.1.2 ! misho 349: #ifdef LIBXML_FTP_ENABLED
! 350: XMLPUBFUN int XMLCALL
! 351: xmlIOFTPMatch (const char *filename);
! 352: XMLPUBFUN void * XMLCALL
! 353: xmlIOFTPOpen (const char *filename);
! 354: XMLPUBFUN int XMLCALL
! 355: xmlIOFTPRead (void * context,
! 356: char * buffer,
1.1 misho 357: int len);
1.1.1.2 ! misho 358: XMLPUBFUN int XMLCALL
! 359: xmlIOFTPClose (void * context);
1.1 misho 360: #endif /* LIBXML_FTP_ENABLED */
361:
362: #ifdef __cplusplus
363: }
364: #endif
365:
366: #endif /* __XML_IO_H__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>