Edit

kc3-lang/libxml2/include/libxml/list.h

Branch :

  • include/libxml/list.h
  • /*
     * Summary: lists interfaces
     * Description: this module implement the list support used in 
     * various place in the library.
     *
     * Copy: See Copyright for the status of this software.
     *
     * Author: Gary Pennington <Gary.Pennington@uk.sun.com>
     */
    
    #ifndef __XML_LINK_INCLUDE__
    #define __XML_LINK_INCLUDE__
    
    #include <libxml/xmlversion.h>
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    typedef struct _xmlLink xmlLink;
    typedef xmlLink *xmlLinkPtr;
    
    typedef struct _xmlList xmlList;
    typedef xmlList *xmlListPtr;
    
    /**
     * xmlListDeallocator:
     * @lk:  the data to deallocate
     *
     * Callback function used to free data from a list.
     */
    typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
    /**
     * xmlListDataCompare:
     * @data0: the first data
     * @data1: the second data
     *
     * Callback function used to compare 2 data.
     *
     * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
     */
    typedef int  (*xmlListDataCompare) (const void *data0, const void *data1);
    /**
     * xmlListWalker:
     * @data: the data found in the list
     * @user: extra user provided data to the walker
     *
     * Callback function used when walking a list with xmlListWalk().
     *
     * Returns 0 to stop walking the list, 1 otherwise.
     */
    typedef int (*xmlListWalker) (const void *data, const void *user);
    
    /* Creation/Deletion */
    XMLPUBFUN xmlListPtr XMLCALL
    		xmlListCreate		(xmlListDeallocator deallocator,
    	                                 xmlListDataCompare compare);
    XMLPUBFUN void XMLCALL		
    		xmlListDelete		(xmlListPtr l);
    
    /* Basic Operators */
    XMLPUBFUN void * XMLCALL		
    		xmlListSearch		(xmlListPtr l,
    					 void *data);
    XMLPUBFUN void * XMLCALL		
    		xmlListReverseSearch	(xmlListPtr l,
    					 void *data);
    XMLPUBFUN int XMLCALL		
    		xmlListInsert		(xmlListPtr l,
    					 void *data) ;
    XMLPUBFUN int XMLCALL		
    		xmlListAppend		(xmlListPtr l,
    					 void *data) ;
    XMLPUBFUN int XMLCALL		
    		xmlListRemoveFirst	(xmlListPtr l,
    					 void *data);
    XMLPUBFUN int XMLCALL		
    		xmlListRemoveLast	(xmlListPtr l,
    					 void *data);
    XMLPUBFUN int XMLCALL		
    		xmlListRemoveAll	(xmlListPtr l,
    					 void *data);
    XMLPUBFUN void XMLCALL		
    		xmlListClear		(xmlListPtr l);
    XMLPUBFUN int XMLCALL		
    		xmlListEmpty		(xmlListPtr l);
    XMLPUBFUN xmlLinkPtr XMLCALL	
    		xmlListFront		(xmlListPtr l);
    XMLPUBFUN xmlLinkPtr XMLCALL	
    		xmlListEnd		(xmlListPtr l);
    XMLPUBFUN int XMLCALL		
    		xmlListSize		(xmlListPtr l);
    
    XMLPUBFUN void XMLCALL		
    		xmlListPopFront		(xmlListPtr l);
    XMLPUBFUN void XMLCALL		
    		xmlListPopBack		(xmlListPtr l);
    XMLPUBFUN int XMLCALL		
    		xmlListPushFront	(xmlListPtr l,
    					 void *data);
    XMLPUBFUN int XMLCALL		
    		xmlListPushBack		(xmlListPtr l,
    					 void *data);
    
    /* Advanced Operators */
    XMLPUBFUN void XMLCALL		
    		xmlListReverse		(xmlListPtr l);
    XMLPUBFUN void XMLCALL		
    		xmlListSort		(xmlListPtr l);
    XMLPUBFUN void XMLCALL		
    		xmlListWalk		(xmlListPtr l,
    					 xmlListWalker walker,
    					 const void *user);
    XMLPUBFUN void XMLCALL		
    		xmlListReverseWalk	(xmlListPtr l,
    					 xmlListWalker walker,
    					 const void *user);
    XMLPUBFUN void XMLCALL		
    		xmlListMerge		(xmlListPtr l1,
    					 xmlListPtr l2);
    XMLPUBFUN xmlListPtr XMLCALL	
    		xmlListDup		(const xmlListPtr old);
    XMLPUBFUN int XMLCALL		
    		xmlListCopy		(xmlListPtr cur,
    					 const xmlListPtr old);
    /* Link operators */
    XMLPUBFUN void * XMLCALL          
    		xmlLinkGetData          (xmlLinkPtr lk);
    
    /* xmlListUnique() */
    /* xmlListSwap */
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif /* __XML_LINK_INCLUDE__ */