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