Edit

kc3-lang/libxml2/xlink.h

Branch :

  • Show log

    Commit

  • Author : Daniel Veillard
    Date : 2000-01-05 14:46:17
    Hash : 71b656e0
    Message : - added xmlRemoveID() and xmlRemoveRef() - added check and handling when possibly removing an ID - fixed some entities problems - added xmlParseTryOrFinish() - changed the way struct aredeclared to allow gtk-doc to expose those - closed #4960 - fixes to libs detection from Albert Chin-A-Young - preparing 1.8.3 release Daniel

  • xlink.h
  • /*
     * xlink.h : interfaces to the hyperlinks detection module
     *
     * See Copyright for the status of this software.
     *
     * Related specification: http://www.w3.org/TR/xlink
     *                        http://www.w3.org/HTML/
     *     and XBase 
     *
     * Daniel.Veillard@w3.org
     */
    
    #ifndef __XML_XLINK_H__
    #define __XML_XLINK_H__
    
    #include "tree.h"
    
    #ifdef __cplusplus
    #define extern "C" {
    #endif
    /**
     * Various defines for the various Link properties.
     *
     * NOTE: the link detection layer will try to resolve QName expansion
     *       of namespaces, if "foo" is the prefix for "http://foo.com/"
     *       then the link detection layer will expand role="foo:myrole"
     *       to "http://foo.com/:myrole"
     * NOTE: the link detection layer will expand URI-Refences found on
     *       href attributes by using the base mechanism if found.
     */
    typedef xmlChar *xlinkHRef;
    typedef xmlChar *xlinkRole;
    typedef xmlChar *xlinkTitle;
    
    typedef enum {
        XLINK_TYPE_NONE = 0,
        XLINK_TYPE_SIMPLE,
        XLINK_TYPE_EXTENDED,
        XLINK_TYPE_EXTENDED_SET
    } xlinkType;
    
    typedef enum {
        XLINK_SHOW_NONE = 0,
        XLINK_SHOW_NEW,
        XLINK_SHOW_EMBED,
        XLINK_SHOW_REPLACE
    } xlinkShow;
    
    typedef enum {
        XLINK_ACTUATE_NONE = 0,
        XLINK_ACTUATE_AUTO,
        XLINK_ACTUATE_ONREQUEST
    } xlinkActuate;
    
    /**
     * xlinkNodeDetectFunc:
     * @ctx:  user data pointer
     * @node:  the node to check
     * 
     * This is the prototype for the link detection routine
     * It calls the default link detection callbacks upon link detection.
     */
    typedef void
    (*xlinkNodeDetectFunc)	(void *ctx,
    		 	 xmlNodePtr node);
    
    /**
     * The link detection module interract with the upper layers using
     * a set of callback registered at parsing time.
     */
    
    /**
     * xlinkSimpleLinkFunk:
     * @ctx:  user data pointer
     * @node:  the node carrying the link
     * @href:  the target of the link
     * @role:  the role string
     * @title:  the link title
     *
     * This is the prototype for a simple link detection callback.
     */
    typedef void
    (*xlinkSimpleLinkFunk)	(void *ctx,
    			 xmlNodePtr node,
    			 const xlinkHRef href,
    			 const xlinkRole role,
    			 const xlinkTitle title);
    
    /**
     * xlinkExtendedLinkFunk:
     * @ctx:  user data pointer
     * @node:  the node carrying the link
     * @nbLocators: the number of locators detected on the link
     * @hrefs:  pointer to the array of locator hrefs
     * @roles:  pointer to the array of locator roles
     * @nbArcs: the number of arcs detected on the link
     * @from:  pointer to the array of source roles found on the arcs
     * @to:  pointer to the array of target roles found on the arcs
     * @show:  array of values for the show attributes found on the arcs
     * @actuate:  array of values for the actuate attributes found on the arcs
     * @nbTitles: the number of titles detected on the link
     * @title:  array of titles detected on the link
     * @langs:  array of xml:lang values for the titles
     *
     * This is the prototype for a extended link detection callback.
     */
    typedef void
    (*xlinkExtendedLinkFunk)(void *ctx,
    			 xmlNodePtr node,
    			 int nbLocators,
    			 const xlinkHRef *hrefs,
    			 const xlinkRole *roles,
    			 int nbArcs,
    			 const xlinkRole *from,
    			 const xlinkRole *to,
    			 xlinkShow *show,
    			 xlinkActuate *actuate,
    			 int nbTitles,
    			 const xlinkTitle *titles,
    			 const xmlChar **langs);
    
    /**
     * xlinkExtendedLinkSetFunk:
     * @ctx:  user data pointer
     * @node:  the node carrying the link
     * @nbLocators: the number of locators detected on the link
     * @hrefs:  pointer to the array of locator hrefs
     * @roles:  pointer to the array of locator roles
     * @nbTitles: the number of titles detected on the link
     * @title:  array of titles detected on the link
     * @langs:  array of xml:lang values for the titles
     *
     * This is the prototype for a extended link set detection callback.
     */
    typedef void
    (*xlinkExtendedLinkSetFunk)	(void *ctx,
    				 xmlNodePtr node,
    				 int nbLocators,
    				 const xlinkHRef *hrefs,
    				 const xlinkRole *roles,
    				 int nbTitles,
    				 const xlinkTitle *titles,
    				 const xmlChar **langs);
    
    /**
     * This is the structure containing a set of Links detection callbacks
     *
     * There is no default xlink callbacks, if one want to get link
     * recognition activated, those call backs must be provided before parsing.
     */
    typedef struct _xlinkHandler xlinkHandler;
    typedef xlinkHandler *xlinkHandlerPtr;
    struct _xlinkHandler {
        xlinkSimpleLinkFunk simple;
        xlinkExtendedLinkFunk extended;
        xlinkExtendedLinkSetFunk set;
    };
    
    /**
     * the default detection routine, can be overriden, they call the default
     * detection callbacks. 
     */
    
    xlinkNodeDetectFunc	xlinkGetDefaultDetect	(void);
    void			xlinkSetDefaultDetect	(xlinkNodeDetectFunc func);
    
    /**
     * Routines to set/get the default handlers.
     */
    xlinkHandlerPtr	xlinkGetDefaultHandler	(void);
    void		xlinkSetDefaultHandler	(xlinkHandlerPtr handler);
    
    /*
     * Link detection module itself.
     */
    xlinkType	 xlinkIsLink		(xmlDocPtr doc,
    					 xmlNodePtr node);
    
    #ifdef __cplusplus
    }
    #endif
    #endif /* __XML_XLINK_H__ */