File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / include / libxml / xmlIO.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 19:53:38 2014 UTC (10 years, 2 months ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, HEAD
libxml2 2.9.1

    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:     xmlBufPtr buffer;    /* Local buffer encoded in UTF-8 */
  133:     xmlBufPtr 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:     xmlBufPtr buffer;    /* Local buffer encoded in UTF-8 or ISOLatin */
  149:     xmlBufPtr 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: /* 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
  255: 	xmlOutputBufferWrite		(xmlOutputBufferPtr out,
  256: 					 int len,
  257: 					 const char *buf);
  258: XMLPUBFUN int XMLCALL
  259: 	xmlOutputBufferWriteString	(xmlOutputBufferPtr out,
  260: 					 const char *str);
  261: XMLPUBFUN int XMLCALL
  262: 	xmlOutputBufferWriteEscape	(xmlOutputBufferPtr out,
  263: 					 const xmlChar *str,
  264: 					 xmlCharEncodingOutputFunc escaping);
  265: 
  266: XMLPUBFUN int XMLCALL
  267: 	xmlOutputBufferFlush		(xmlOutputBufferPtr out);
  268: XMLPUBFUN int XMLCALL
  269: 	xmlOutputBufferClose		(xmlOutputBufferPtr out);
  270: 
  271: XMLPUBFUN int XMLCALL
  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  */
  284: XMLPUBFUN void XMLCALL
  285: 	xmlRegisterHTTPPostCallbacks	(void );
  286: #endif /* LIBXML_HTTP_ENABLED */
  287: 
  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:  */
  297: XMLPUBFUN xmlParserInputPtr XMLCALL
  298: 	xmlNoNetExternalEntityLoader	(const char *URL,
  299: 					 const char *ID,
  300: 					 xmlParserCtxtPtr ctxt);
  301: 
  302: /*
  303:  * xmlNormalizeWindowsPath is obsolete, don't use it.
  304:  * Check xmlCanonicPath in uri.h for a better alternative.
  305:  */
  306: XMLPUBFUN xmlChar * XMLCALL
  307: 	xmlNormalizeWindowsPath		(const xmlChar *path);
  308: 
  309: XMLPUBFUN int XMLCALL
  310: 	xmlCheckFilename		(const char *path);
  311: /**
  312:  * Default 'file://' protocol callbacks
  313:  */
  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,
  321: 					 int len);
  322: XMLPUBFUN int XMLCALL
  323: 	xmlFileClose			(void * context);
  324: 
  325: /**
  326:  * Default 'http://' protocol callbacks
  327:  */
  328: #ifdef LIBXML_HTTP_ENABLED
  329: XMLPUBFUN int XMLCALL
  330: 	xmlIOHTTPMatch			(const char *filename);
  331: XMLPUBFUN void * XMLCALL
  332: 	xmlIOHTTPOpen			(const char *filename);
  333: #ifdef LIBXML_OUTPUT_ENABLED
  334: XMLPUBFUN void * XMLCALL
  335: 	xmlIOHTTPOpenW			(const char * post_uri,
  336: 					 int   compression );
  337: #endif /* LIBXML_OUTPUT_ENABLED */
  338: XMLPUBFUN int XMLCALL
  339: 	xmlIOHTTPRead			(void * context,
  340: 					 char * buffer,
  341: 					 int len);
  342: XMLPUBFUN int XMLCALL
  343: 	xmlIOHTTPClose			(void * context);
  344: #endif /* LIBXML_HTTP_ENABLED */
  345: 
  346: /**
  347:  * Default 'ftp://' protocol callbacks
  348:  */
  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,
  357: 					 int len);
  358: XMLPUBFUN int XMLCALL
  359: 	xmlIOFTPClose			(void * context);
  360: #endif /* LIBXML_FTP_ENABLED */
  361: 
  362: #ifdef __cplusplus
  363: }
  364: #endif
  365: 
  366: #endif /* __XML_IO_H__ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>