Return to xmlIO.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / include / libxml |
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: * ! 29: * Callback used in the I/O Input API to detect if the current handler ! 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: * ! 75: * Callback used in the I/O Output API to detect if the current handler ! 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; ! 129: ! 130: xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ ! 131: ! 132: xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 */ ! 133: xmlBufferPtr raw; /* if encoder != NULL buffer for raw input */ ! 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; ! 145: ! 146: xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ ! 147: ! 148: xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ ! 149: xmlBufferPtr conv; /* if encoder != NULL buffer for output */ ! 150: int written; /* total number of byte written */ ! 151: int error; ! 152: }; ! 153: #endif /* LIBXML_OUTPUT_ENABLED */ ! 154: ! 155: /* ! 156: * Interfaces for input ! 157: */ ! 158: XMLPUBFUN void XMLCALL ! 159: xmlCleanupInputCallbacks (void); ! 160: ! 161: XMLPUBFUN int XMLCALL ! 162: xmlPopInputCallbacks (void); ! 163: ! 164: XMLPUBFUN void XMLCALL ! 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); ! 189: XMLPUBFUN int XMLCALL ! 190: xmlParserInputBufferRead (xmlParserInputBufferPtr in, ! 191: int len); ! 192: XMLPUBFUN int XMLCALL ! 193: xmlParserInputBufferGrow (xmlParserInputBufferPtr in, ! 194: int len); ! 195: XMLPUBFUN int XMLCALL ! 196: xmlParserInputBufferPush (xmlParserInputBufferPtr in, ! 197: int len, ! 198: const char *buf); ! 199: XMLPUBFUN void XMLCALL ! 200: xmlFreeParserInputBuffer (xmlParserInputBufferPtr in); ! 201: XMLPUBFUN char * XMLCALL ! 202: xmlParserGetDirectory (const char *filename); ! 203: ! 204: XMLPUBFUN int XMLCALL ! 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: */ ! 218: XMLPUBFUN void XMLCALL ! 219: xmlCleanupOutputCallbacks (void); ! 220: XMLPUBFUN void XMLCALL ! 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: ! 248: XMLPUBFUN int XMLCALL ! 249: xmlOutputBufferWrite (xmlOutputBufferPtr out, ! 250: int len, ! 251: const char *buf); ! 252: XMLPUBFUN int XMLCALL ! 253: xmlOutputBufferWriteString (xmlOutputBufferPtr out, ! 254: const char *str); ! 255: XMLPUBFUN int XMLCALL ! 256: xmlOutputBufferWriteEscape (xmlOutputBufferPtr out, ! 257: const xmlChar *str, ! 258: xmlCharEncodingOutputFunc escaping); ! 259: ! 260: XMLPUBFUN int XMLCALL ! 261: xmlOutputBufferFlush (xmlOutputBufferPtr out); ! 262: XMLPUBFUN int XMLCALL ! 263: xmlOutputBufferClose (xmlOutputBufferPtr out); ! 264: ! 265: XMLPUBFUN int XMLCALL ! 266: xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc, ! 267: xmlOutputOpenCallback openFunc, ! 268: xmlOutputWriteCallback writeFunc, ! 269: xmlOutputCloseCallback closeFunc); ! 270: ! 271: xmlOutputBufferPtr ! 272: __xmlOutputBufferCreateFilename(const char *URI, ! 273: xmlCharEncodingHandlerPtr encoder, ! 274: int compression); ! 275: ! 276: #ifdef LIBXML_HTTP_ENABLED ! 277: /* This function only exists if HTTP support built into the library */ ! 278: XMLPUBFUN void XMLCALL ! 279: xmlRegisterHTTPPostCallbacks (void ); ! 280: #endif /* LIBXML_HTTP_ENABLED */ ! 281: ! 282: #endif /* LIBXML_OUTPUT_ENABLED */ ! 283: ! 284: XMLPUBFUN xmlParserInputPtr XMLCALL ! 285: xmlCheckHTTPInput (xmlParserCtxtPtr ctxt, ! 286: xmlParserInputPtr ret); ! 287: ! 288: /* ! 289: * A predefined entity loader disabling network accesses ! 290: */ ! 291: XMLPUBFUN xmlParserInputPtr XMLCALL ! 292: xmlNoNetExternalEntityLoader (const char *URL, ! 293: const char *ID, ! 294: xmlParserCtxtPtr ctxt); ! 295: ! 296: /* ! 297: * xmlNormalizeWindowsPath is obsolete, don't use it. ! 298: * Check xmlCanonicPath in uri.h for a better alternative. ! 299: */ ! 300: XMLPUBFUN xmlChar * XMLCALL ! 301: xmlNormalizeWindowsPath (const xmlChar *path); ! 302: ! 303: XMLPUBFUN int XMLCALL ! 304: xmlCheckFilename (const char *path); ! 305: /** ! 306: * Default 'file://' protocol callbacks ! 307: */ ! 308: XMLPUBFUN int XMLCALL ! 309: xmlFileMatch (const char *filename); ! 310: XMLPUBFUN void * XMLCALL ! 311: xmlFileOpen (const char *filename); ! 312: XMLPUBFUN int XMLCALL ! 313: xmlFileRead (void * context, ! 314: char * buffer, ! 315: int len); ! 316: XMLPUBFUN int XMLCALL ! 317: xmlFileClose (void * context); ! 318: ! 319: /** ! 320: * Default 'http://' protocol callbacks ! 321: */ ! 322: #ifdef LIBXML_HTTP_ENABLED ! 323: XMLPUBFUN int XMLCALL ! 324: xmlIOHTTPMatch (const char *filename); ! 325: XMLPUBFUN void * XMLCALL ! 326: xmlIOHTTPOpen (const char *filename); ! 327: #ifdef LIBXML_OUTPUT_ENABLED ! 328: XMLPUBFUN void * XMLCALL ! 329: xmlIOHTTPOpenW (const char * post_uri, ! 330: int compression ); ! 331: #endif /* LIBXML_OUTPUT_ENABLED */ ! 332: XMLPUBFUN int XMLCALL ! 333: xmlIOHTTPRead (void * context, ! 334: char * buffer, ! 335: int len); ! 336: XMLPUBFUN int XMLCALL ! 337: xmlIOHTTPClose (void * context); ! 338: #endif /* LIBXML_HTTP_ENABLED */ ! 339: ! 340: /** ! 341: * Default 'ftp://' protocol callbacks ! 342: */ ! 343: #ifdef LIBXML_FTP_ENABLED ! 344: XMLPUBFUN int XMLCALL ! 345: xmlIOFTPMatch (const char *filename); ! 346: XMLPUBFUN void * XMLCALL ! 347: xmlIOFTPOpen (const char *filename); ! 348: XMLPUBFUN int XMLCALL ! 349: xmlIOFTPRead (void * context, ! 350: char * buffer, ! 351: int len); ! 352: XMLPUBFUN int XMLCALL ! 353: xmlIOFTPClose (void * context); ! 354: #endif /* LIBXML_FTP_ENABLED */ ! 355: ! 356: #ifdef __cplusplus ! 357: } ! 358: #endif ! 359: ! 360: #endif /* __XML_IO_H__ */