|
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__ */ |