Eneboo - Documentación para desarrolladores
|
00001 /* 00002 * Summary: unfinished XLink detection module 00003 * Description: unfinished XLink detection module 00004 * 00005 * Copy: See Copyright for the status of this software. 00006 * 00007 * Author: Daniel Veillard 00008 */ 00009 00010 #ifndef __XML_XLINK_H__ 00011 #define __XML_XLINK_H__ 00012 00013 #include <libxml/xmlversion.h> 00014 #include <libxml/tree.h> 00015 00016 #ifdef LIBXML_XPTR_ENABLED 00017 00018 #ifdef __cplusplus 00019 extern "C" { 00020 #endif 00021 00032 typedef xmlChar *xlinkHRef; 00033 typedef xmlChar *xlinkRole; 00034 typedef xmlChar *xlinkTitle; 00035 00036 typedef enum { 00037 XLINK_TYPE_NONE = 0, 00038 XLINK_TYPE_SIMPLE, 00039 XLINK_TYPE_EXTENDED, 00040 XLINK_TYPE_EXTENDED_SET 00041 } xlinkType; 00042 00043 typedef enum { 00044 XLINK_SHOW_NONE = 0, 00045 XLINK_SHOW_NEW, 00046 XLINK_SHOW_EMBED, 00047 XLINK_SHOW_REPLACE 00048 } xlinkShow; 00049 00050 typedef enum { 00051 XLINK_ACTUATE_NONE = 0, 00052 XLINK_ACTUATE_AUTO, 00053 XLINK_ACTUATE_ONREQUEST 00054 } xlinkActuate; 00055 00064 typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node); 00065 00066 /* 00067 * The link detection module interact with the upper layers using 00068 * a set of callback registered at parsing time. 00069 */ 00070 00081 typedef void 00082 (*xlinkSimpleLinkFunk) (void *ctx, 00083 xmlNodePtr node, 00084 const xlinkHRef href, 00085 const xlinkRole role, 00086 const xlinkTitle title); 00087 00106 typedef void 00107 (*xlinkExtendedLinkFunk)(void *ctx, 00108 xmlNodePtr node, 00109 int nbLocators, 00110 const xlinkHRef *hrefs, 00111 const xlinkRole *roles, 00112 int nbArcs, 00113 const xlinkRole *from, 00114 const xlinkRole *to, 00115 xlinkShow *show, 00116 xlinkActuate *actuate, 00117 int nbTitles, 00118 const xlinkTitle *titles, 00119 const xmlChar **langs); 00120 00134 typedef void 00135 (*xlinkExtendedLinkSetFunk) (void *ctx, 00136 xmlNodePtr node, 00137 int nbLocators, 00138 const xlinkHRef *hrefs, 00139 const xlinkRole *roles, 00140 int nbTitles, 00141 const xlinkTitle *titles, 00142 const xmlChar **langs); 00143 00150 typedef struct _xlinkHandler xlinkHandler; 00151 typedef xlinkHandler *xlinkHandlerPtr; 00152 struct _xlinkHandler { 00153 xlinkSimpleLinkFunk simple; 00154 xlinkExtendedLinkFunk extended; 00155 xlinkExtendedLinkSetFunk set; 00156 }; 00157 00158 /* 00159 * The default detection routine, can be overridden, they call the default 00160 * detection callbacks. 00161 */ 00162 00163 XMLPUBFUN xlinkNodeDetectFunc XMLCALL 00164 xlinkGetDefaultDetect (void); 00165 XMLPUBFUN void XMLCALL 00166 xlinkSetDefaultDetect (xlinkNodeDetectFunc func); 00167 00168 /* 00169 * Routines to set/get the default handlers. 00170 */ 00171 XMLPUBFUN xlinkHandlerPtr XMLCALL 00172 xlinkGetDefaultHandler (void); 00173 XMLPUBFUN void XMLCALL 00174 xlinkSetDefaultHandler (xlinkHandlerPtr handler); 00175 00176 /* 00177 * Link detection module itself. 00178 */ 00179 XMLPUBFUN xlinkType XMLCALL 00180 xlinkIsLink (xmlDocPtr doc, 00181 xmlNodePtr node); 00182 00183 #ifdef __cplusplus 00184 } 00185 #endif 00186 00187 #endif /* LIBXML_XPTR_ENABLED */ 00188 00189 #endif /* __XML_XLINK_H__ */