xlink.h

00001 /*
00002 
00003  * Summary: unfinished XLink detection module
00004 
00005  * Description: unfinished XLink detection module
00006 
00007  *
00008 
00009  * Copy: See Copyright for the status of this software.
00010 
00011  *
00012 
00013  * Author: Daniel Veillard
00014 
00015  */
00016 
00017 
00018 
00019 #ifndef __XML_XLINK_H__
00020 
00021 #define __XML_XLINK_H__
00022 
00023 
00024 
00025 #include <libxml/xmlversion.h>
00026 
00027 #include <libxml/tree.h>
00028 
00029 
00030 
00031 #ifdef LIBXML_XPTR_ENABLED
00032 
00033 
00034 
00035 #ifdef __cplusplus
00036 
00037 extern "C" {
00038 
00039 #endif
00040 
00041 
00042 
00063 typedef xmlChar *xlinkHRef;
00064 
00065 typedef xmlChar *xlinkRole;
00066 
00067 typedef xmlChar *xlinkTitle;
00068 
00069 
00070 
00071 typedef enum {
00072 
00073     XLINK_TYPE_NONE = 0,
00074 
00075     XLINK_TYPE_SIMPLE,
00076 
00077     XLINK_TYPE_EXTENDED,
00078 
00079     XLINK_TYPE_EXTENDED_SET
00080 
00081 } xlinkType;
00082 
00083 
00084 
00085 typedef enum {
00086 
00087     XLINK_SHOW_NONE = 0,
00088 
00089     XLINK_SHOW_NEW,
00090 
00091     XLINK_SHOW_EMBED,
00092 
00093     XLINK_SHOW_REPLACE
00094 
00095 } xlinkShow;
00096 
00097 
00098 
00099 typedef enum {
00100 
00101     XLINK_ACTUATE_NONE = 0,
00102 
00103     XLINK_ACTUATE_AUTO,
00104 
00105     XLINK_ACTUATE_ONREQUEST
00106 
00107 } xlinkActuate;
00108 
00109 
00110 
00127 typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node);
00128 
00129 
00130 
00131 /*
00132 
00133  * The link detection module interact with the upper layers using
00134 
00135  * a set of callback registered at parsing time.
00136 
00137  */
00138 
00139 
00140 
00161 typedef void
00162 
00163 (*xlinkSimpleLinkFunk)  (void *ctx,
00164 
00165                          xmlNodePtr node,
00166 
00167                          const xlinkHRef href,
00168 
00169                          const xlinkRole role,
00170 
00171                          const xlinkTitle title);
00172 
00173 
00174 
00211 typedef void
00212 
00213 (*xlinkExtendedLinkFunk)(void *ctx,
00214 
00215                          xmlNodePtr node,
00216 
00217                          int nbLocators,
00218 
00219                          const xlinkHRef *hrefs,
00220 
00221                          const xlinkRole *roles,
00222 
00223                          int nbArcs,
00224 
00225                          const xlinkRole *from,
00226 
00227                          const xlinkRole *to,
00228 
00229                          xlinkShow *show,
00230 
00231                          xlinkActuate *actuate,
00232 
00233                          int nbTitles,
00234 
00235                          const xlinkTitle *titles,
00236 
00237                          const xmlChar **langs);
00238 
00239 
00240 
00267 typedef void
00268 
00269 (*xlinkExtendedLinkSetFunk)     (void *ctx,
00270 
00271                                  xmlNodePtr node,
00272 
00273                                  int nbLocators,
00274 
00275                                  const xlinkHRef *hrefs,
00276 
00277                                  const xlinkRole *roles,
00278 
00279                                  int nbTitles,
00280 
00281                                  const xlinkTitle *titles,
00282 
00283                                  const xmlChar **langs);
00284 
00285 
00286 
00299 typedef struct _xlinkHandler xlinkHandler;
00300 
00301 typedef xlinkHandler *xlinkHandlerPtr;
00302 
00303 struct _xlinkHandler {
00304 
00305     xlinkSimpleLinkFunk simple;
00306 
00307     xlinkExtendedLinkFunk extended;
00308 
00309     xlinkExtendedLinkSetFunk set;
00310 
00311 };
00312 
00313 
00314 
00315 /*
00316 
00317  * The default detection routine, can be overridden, they call the default
00318 
00319  * detection callbacks. 
00320 
00321  */
00322 
00323 
00324 
00325 XMLPUBFUN xlinkNodeDetectFunc XMLCALL   
00326 
00327                 xlinkGetDefaultDetect   (void);
00328 
00329 XMLPUBFUN void XMLCALL                  
00330 
00331                 xlinkSetDefaultDetect   (xlinkNodeDetectFunc func);
00332 
00333 
00334 
00335 /*
00336 
00337  * Routines to set/get the default handlers.
00338 
00339  */
00340 
00341 XMLPUBFUN xlinkHandlerPtr XMLCALL       
00342 
00343                 xlinkGetDefaultHandler  (void);
00344 
00345 XMLPUBFUN void XMLCALL          
00346 
00347                 xlinkSetDefaultHandler  (xlinkHandlerPtr handler);
00348 
00349 
00350 
00351 /*
00352 
00353  * Link detection module itself.
00354 
00355  */
00356 
00357 XMLPUBFUN xlinkType XMLCALL      
00358 
00359                 xlinkIsLink             (xmlDocPtr doc,
00360 
00361                                          xmlNodePtr node);
00362 
00363 
00364 
00365 #ifdef __cplusplus
00366 
00367 }
00368 
00369 #endif
00370 
00371 
00372 
00373 #endif /* LIBXML_XPTR_ENABLED */
00374 
00375 
00376 
00377 #endif /* __XML_XLINK_H__ */
00378 

Generated on Wed Jul 26 13:30:46 2006 for XSB by  doxygen 1.4.5