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>
9 * Portion Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
20 #include <stdapis/libxml2/libxml2_xmlversion.h>
26 typedef struct _xmlLink xmlLink;
27 typedef xmlLink *xmlLinkPtr;
29 typedef struct _xmlList xmlList;
30 typedef xmlList *xmlListPtr;
34 * @param lk the data to deallocate
36 * Callback function used to free data from a list.
38 typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
41 * @param data0 the first data
42 * @param data1 the second data
44 * Callback function used to compare 2 data.
46 * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
48 typedef int (*xmlListDataCompare) (const void *data0, const void *data1);
51 * @param data the data found in the list
52 * @param user extra user provided data to the walker
54 * Callback function used when walking a list with xmlListWalk().
56 * Returns 0 to stop walking the list, 1 otherwise.
58 typedef int (*xmlListWalker) (const void *data, const void *user);
60 /* Creation/Deletion */
61 XMLPUBFUN xmlListPtr XMLCALL
62 xmlListCreate (xmlListDeallocator deallocator, xmlListDataCompare compare);
63 XMLPUBFUN void XMLCALL
64 xmlListDelete (xmlListPtr l);
68 xmlListInsert (xmlListPtr l, void *data) ;
70 xmlListAppend (xmlListPtr l, void *data) ;
72 xmlListRemoveFirst (xmlListPtr l, void *data);
73 XMLPUBFUN void XMLCALL
74 xmlListClear (xmlListPtr l);
76 xmlListEmpty (xmlListPtr l);
77 XMLPUBFUN xmlLinkPtr XMLCALL
78 xmlListFront (xmlListPtr l);
80 #ifndef XMLENGINE_EXCLUDE_UNUSED
81 XMLPUBFUN xmlLinkPtr XMLCALL xmlListEnd (xmlListPtr l);
82 XMLPUBFUN void XMLCALL xmlListReverse (xmlListPtr l);
83 XMLPUBFUN void XMLCALL xmlListPopBack (xmlListPtr l);
84 XMLPUBFUN void XMLCALL xmlListSort (xmlListPtr l);
85 #endif /* ifndef XMLENGINE_EXCLUDE_UNUSED */
87 XMLPUBFUN void* XMLCALL xmlListSearch (xmlListPtr l, void *data);
89 #ifndef XMLENGINE_EXCLUDE_UNUSED
90 XMLPUBFUN void* XMLCALL xmlListReverseSearch(xmlListPtr l, void *data);
91 XMLPUBFUN int XMLCALL xmlListRemoveLast (xmlListPtr l, void *data);
92 XMLPUBFUN int XMLCALL xmlListRemoveAll (xmlListPtr l, void *data);
93 XMLPUBFUN int XMLCALL xmlListPushBack (xmlListPtr l, void *data);
94 XMLPUBFUN void XMLCALL xmlListReverseWalk (xmlListPtr l,
97 #endif /* ifndef XMLENGINE_EXCLUDE_UNUSED */
99 XMLPUBFUN xmlListPtr XMLCALL xmlListDup (const xmlListPtr old);
100 XMLPUBFUN int XMLCALL xmlListSize (xmlListPtr l);
101 XMLPUBFUN void XMLCALL xmlListPopFront (xmlListPtr l);
102 XMLPUBFUN int XMLCALL xmlListPushFront(xmlListPtr l, void *data);
103 XMLPUBFUN void XMLCALL xmlListWalk (xmlListPtr l, xmlListWalker walker, const void *user);
104 XMLPUBFUN void XMLCALL xmlListMerge (xmlListPtr l1, xmlListPtr l2);
105 XMLPUBFUN int XMLCALL xmlListCopy (xmlListPtr cur, const xmlListPtr old);
107 XMLPUBFUN void* XMLCALL xmlLinkGetData (xmlLinkPtr lk);
109 /* xmlListUnique() */
116 #endif /* __XML_LIST_H */