/ libxml2 / include / libxml / list.h
list.h
  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@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__ */