2 * Summary: lists interfaces
3 * Description: this module implement the list support used in
4 * various place in the library.
6 * Copy: See Copyright for the status of this software.
8 * Author: Gary Pennington <Gary.Pennington@uk.sun.com>
11 #ifndef __XML_LINK_INCLUDE__
12 #define __XML_LINK_INCLUDE__
14 #include <libxml/xmlversion.h>
20 typedef struct _xmlLink xmlLink;
21 typedef xmlLink *xmlLinkPtr;
23 typedef struct _xmlList xmlList;
24 typedef xmlList *xmlListPtr;
28 * @lk: the data to deallocate
30 * Callback function used to free data from a list.
32 typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
35 * @data0: the first data
36 * @data1: the second data
38 * Callback function used to compare 2 data.
40 * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
42 typedef int (*xmlListDataCompare) (const void *data0, const void *data1);
45 * @data: the data found in the list
46 * @user: extra user provided data to the walker
48 * Callback function used when walking a list with xmlListWalk().
50 * Returns 0 to stop walking the list, 1 otherwise.
52 typedef int (*xmlListWalker) (const void *data, const void *user);
54 /* Creation/Deletion */
55 XMLPUBFUN xmlListPtr XMLCALL
56 xmlListCreate (xmlListDeallocator deallocator,
57 xmlListDataCompare compare);
58 XMLPUBFUN void XMLCALL
59 xmlListDelete (xmlListPtr l);
62 XMLPUBFUN void * XMLCALL
63 xmlListSearch (xmlListPtr l,
65 XMLPUBFUN void * XMLCALL
66 xmlListReverseSearch (xmlListPtr l,
69 xmlListInsert (xmlListPtr l,
72 xmlListAppend (xmlListPtr l,
75 xmlListRemoveFirst (xmlListPtr l,
78 xmlListRemoveLast (xmlListPtr l,
81 xmlListRemoveAll (xmlListPtr l,
83 XMLPUBFUN void XMLCALL
84 xmlListClear (xmlListPtr l);
86 xmlListEmpty (xmlListPtr l);
87 XMLPUBFUN xmlLinkPtr XMLCALL
88 xmlListFront (xmlListPtr l);
89 XMLPUBFUN xmlLinkPtr XMLCALL
90 xmlListEnd (xmlListPtr l);
92 xmlListSize (xmlListPtr l);
94 XMLPUBFUN void XMLCALL
95 xmlListPopFront (xmlListPtr l);
96 XMLPUBFUN void XMLCALL
97 xmlListPopBack (xmlListPtr l);
99 xmlListPushFront (xmlListPtr l,
101 XMLPUBFUN int XMLCALL
102 xmlListPushBack (xmlListPtr l,
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,
114 XMLPUBFUN void XMLCALL
115 xmlListReverseWalk (xmlListPtr l,
116 xmlListWalker walker,
118 XMLPUBFUN void XMLCALL
119 xmlListMerge (xmlListPtr l1,
121 XMLPUBFUN xmlListPtr XMLCALL
122 xmlListDup (const xmlListPtr old);
123 XMLPUBFUN int XMLCALL
124 xmlListCopy (xmlListPtr cur,
125 const xmlListPtr old);
127 XMLPUBFUN void * XMLCALL
128 xmlLinkGetData (xmlLinkPtr lk);
130 /* xmlListUnique() */
137 #endif /* __XML_LINK_INCLUDE__ */