xref: /aosp_15_r20/external/libxml2/include/libxml/list.h (revision 7c5688314b92172186c154356a6374bf7684c3ca)
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 <[email protected]>
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, void *user);
53 
54 /* Creation/Deletion */
55 XMLPUBFUN xmlListPtr
56 		xmlListCreate		(xmlListDeallocator deallocator,
57 	                                 xmlListDataCompare compare);
58 XMLPUBFUN void
59 		xmlListDelete		(xmlListPtr l);
60 
61 /* Basic Operators */
62 XMLPUBFUN void *
63 		xmlListSearch		(xmlListPtr l,
64 					 void *data);
65 XMLPUBFUN void *
66 		xmlListReverseSearch	(xmlListPtr l,
67 					 void *data);
68 XMLPUBFUN int
69 		xmlListInsert		(xmlListPtr l,
70 					 void *data) ;
71 XMLPUBFUN int
72 		xmlListAppend		(xmlListPtr l,
73 					 void *data) ;
74 XMLPUBFUN int
75 		xmlListRemoveFirst	(xmlListPtr l,
76 					 void *data);
77 XMLPUBFUN int
78 		xmlListRemoveLast	(xmlListPtr l,
79 					 void *data);
80 XMLPUBFUN int
81 		xmlListRemoveAll	(xmlListPtr l,
82 					 void *data);
83 XMLPUBFUN void
84 		xmlListClear		(xmlListPtr l);
85 XMLPUBFUN int
86 		xmlListEmpty		(xmlListPtr l);
87 XMLPUBFUN xmlLinkPtr
88 		xmlListFront		(xmlListPtr l);
89 XMLPUBFUN xmlLinkPtr
90 		xmlListEnd		(xmlListPtr l);
91 XMLPUBFUN int
92 		xmlListSize		(xmlListPtr l);
93 
94 XMLPUBFUN void
95 		xmlListPopFront		(xmlListPtr l);
96 XMLPUBFUN void
97 		xmlListPopBack		(xmlListPtr l);
98 XMLPUBFUN int
99 		xmlListPushFront	(xmlListPtr l,
100 					 void *data);
101 XMLPUBFUN int
102 		xmlListPushBack		(xmlListPtr l,
103 					 void *data);
104 
105 /* Advanced Operators */
106 XMLPUBFUN void
107 		xmlListReverse		(xmlListPtr l);
108 XMLPUBFUN void
109 		xmlListSort		(xmlListPtr l);
110 XMLPUBFUN void
111 		xmlListWalk		(xmlListPtr l,
112 					 xmlListWalker walker,
113 					 void *user);
114 XMLPUBFUN void
115 		xmlListReverseWalk	(xmlListPtr l,
116 					 xmlListWalker walker,
117 					 void *user);
118 XMLPUBFUN void
119 		xmlListMerge		(xmlListPtr l1,
120 					 xmlListPtr l2);
121 XMLPUBFUN xmlListPtr
122 		xmlListDup		(xmlListPtr old);
123 XMLPUBFUN int
124 		xmlListCopy		(xmlListPtr cur,
125 					 xmlListPtr old);
126 /* Link operators */
127 XMLPUBFUN void *
128 		xmlLinkGetData          (xmlLinkPtr lk);
129 
130 /* xmlListUnique() */
131 /* xmlListSwap */
132 
133 #ifdef __cplusplus
134 }
135 #endif
136 
137 #endif /* __XML_LINK_INCLUDE__ */
138