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, 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 | void *user); |
114 | XMLPUBFUN void XMLCALL |
115 | xmlListReverseWalk (xmlListPtr l, |
116 | xmlListWalker walker, |
117 | 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 | |