Home | History | Annotate | Download | only in libxml
      1 /*
      2  * Summary: lists interfaces
      3  * Description: this module implement the list support used in
      4  * various place in the library.
      5  *
      6  * Copy: See Copyright for the status of this software.
      7  *
      8  * Author: Gary Pennington <Gary.Pennington (at) uk.sun.com>
      9  */
     10 
     11 #ifndef __XML_LINK_INCLUDE__
     12 #define __XML_LINK_INCLUDE__
     13 
     14 #include <libxml/xmlversion.h>
     15 
     16 #ifdef __cplusplus
     17 extern "C" {
     18 #endif
     19 
     20 typedef struct _xmlLink xmlLink;
     21 typedef xmlLink *xmlLinkPtr;
     22 
     23 typedef struct _xmlList xmlList;
     24 typedef xmlList *xmlListPtr;
     25 
     26 /**
     27  * xmlListDeallocator:
     28  * @lk:  the data to deallocate
     29  *
     30  * Callback function used to free data from a list.
     31  */
     32 typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
     33 /**
     34  * xmlListDataCompare:
     35  * @data0: the first data
     36  * @data1: the second data
     37  *
     38  * Callback function used to compare 2 data.
     39  *
     40  * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
     41  */
     42 typedef int  (*xmlListDataCompare) (const void *data0, const void *data1);
     43 /**
     44  * xmlListWalker:
     45  * @data: the data found in the list
     46  * @user: extra user provided data to the walker
     47  *
     48  * Callback function used when walking a list with xmlListWalk().
     49  *
     50  * Returns 0 to stop walking the list, 1 otherwise.
     51  */
     52 typedef int (*xmlListWalker) (const void *data, const void *user);
     53 
     54 /* Creation/Deletion */
     55 XMLPUBFUN xmlListPtr XMLCALL
     56 		xmlListCreate		(xmlListDeallocator deallocator,
     57 	                                 xmlListDataCompare compare);
     58 XMLPUBFUN void XMLCALL
     59 		xmlListDelete		(xmlListPtr l);
     60 
     61 /* Basic Operators */
     62 XMLPUBFUN void * XMLCALL
     63 		xmlListSearch		(xmlListPtr l,
     64 					 void *data);
     65 XMLPUBFUN void * XMLCALL
     66 		xmlListReverseSearch	(xmlListPtr l,
     67 					 void *data);
     68 XMLPUBFUN int XMLCALL
     69 		xmlListInsert		(xmlListPtr l,
     70 					 void *data) ;
     71 XMLPUBFUN int XMLCALL
     72 		xmlListAppend		(xmlListPtr l,
     73 					 void *data) ;
     74 XMLPUBFUN int XMLCALL
     75 		xmlListRemoveFirst	(xmlListPtr l,
     76 					 void *data);
     77 XMLPUBFUN int XMLCALL
     78 		xmlListRemoveLast	(xmlListPtr l,
     79 					 void *data);
     80 XMLPUBFUN int XMLCALL
     81 		xmlListRemoveAll	(xmlListPtr l,
     82 					 void *data);
     83 XMLPUBFUN void XMLCALL
     84 		xmlListClear		(xmlListPtr l);
     85 XMLPUBFUN int XMLCALL
     86 		xmlListEmpty		(xmlListPtr l);
     87 XMLPUBFUN xmlLinkPtr XMLCALL
     88 		xmlListFront		(xmlListPtr l);
     89 XMLPUBFUN xmlLinkPtr XMLCALL
     90 		xmlListEnd		(xmlListPtr l);
     91 XMLPUBFUN int XMLCALL
     92 		xmlListSize		(xmlListPtr l);
     93 
     94 XMLPUBFUN void XMLCALL
     95 		xmlListPopFront		(xmlListPtr l);
     96 XMLPUBFUN void XMLCALL
     97 		xmlListPopBack		(xmlListPtr l);
     98 XMLPUBFUN int XMLCALL
     99 		xmlListPushFront	(xmlListPtr l,
    100 					 void *data);
    101 XMLPUBFUN int XMLCALL
    102 		xmlListPushBack		(xmlListPtr l,
    103 					 void *data);
    104 
    105 /* Advanced Operators */
    106 XMLPUBFUN void XMLCALL
    107 		xmlListReverse		(xmlListPtr l);
    108 XMLPUBFUN void XMLCALL
    109 		xmlListSort		(xmlListPtr l);
    110 XMLPUBFUN void XMLCALL
    111 		xmlListWalk		(xmlListPtr l,
    112 					 xmlListWalker walker,
    113 					 const void *user);
    114 XMLPUBFUN void XMLCALL
    115 		xmlListReverseWalk	(xmlListPtr l,
    116 					 xmlListWalker walker,
    117 					 const void *user);
    118 XMLPUBFUN void XMLCALL
    119 		xmlListMerge		(xmlListPtr l1,
    120 					 xmlListPtr l2);
    121 XMLPUBFUN xmlListPtr XMLCALL
    122 		xmlListDup		(const xmlListPtr old);
    123 XMLPUBFUN int XMLCALL
    124 		xmlListCopy		(xmlListPtr cur,
    125 					 const xmlListPtr old);
    126 /* Link operators */
    127 XMLPUBFUN void * XMLCALL
    128 		xmlLinkGetData          (xmlLinkPtr lk);
    129 
    130 /* xmlListUnique() */
    131 /* xmlListSwap */
    132 
    133 #ifdef __cplusplus
    134 }
    135 #endif
    136 
    137 #endif /* __XML_LINK_INCLUDE__ */
    138