1ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/*
2ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Summary: lists interfaces
394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * Description: this module implement the list support used in
4ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * various place in the library.
5ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
6ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Copy: See Copyright for the status of this software.
7ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
8ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Author: Gary Pennington <Gary.Pennington@uk.sun.com>
9ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
10ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
11ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifndef __XML_LINK_INCLUDE__
12ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define __XML_LINK_INCLUDE__
13ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
14ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlversion.h>
15ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
16ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef __cplusplus
17ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectextern "C" {
18ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif
19ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
20ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef struct _xmlLink xmlLink;
21ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef xmlLink *xmlLinkPtr;
22ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
23ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef struct _xmlList xmlList;
24ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef xmlList *xmlListPtr;
25ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
26ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/**
27ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlListDeallocator:
28ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @lk:  the data to deallocate
29ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
30ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Callback function used to free data from a list.
31ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
32ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef void (*xmlListDeallocator) (xmlLinkPtr lk);
33ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/**
34ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlListDataCompare:
35ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @data0: the first data
36ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @data1: the second data
37ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
38ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Callback function used to compare 2 data.
39ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
40ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
41ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
42ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef int  (*xmlListDataCompare) (const void *data0, const void *data1);
43ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/**
44ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlListWalker:
45ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @data: the data found in the list
46ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @user: extra user provided data to the walker
47ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
48ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Callback function used when walking a list with xmlListWalk().
49ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
50ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 to stop walking the list, 1 otherwise.
51ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
52ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef int (*xmlListWalker) (const void *data, const void *user);
53ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
54ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* Creation/Deletion */
55ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN xmlListPtr XMLCALL
56ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListCreate		(xmlListDeallocator deallocator,
57ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project	                                 xmlListDataCompare compare);
5894442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL
59ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListDelete		(xmlListPtr l);
60ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
61ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* Basic Operators */
6294442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void * XMLCALL
63ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListSearch		(xmlListPtr l,
64ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
6594442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void * XMLCALL
66ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListReverseSearch	(xmlListPtr l,
67ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
6894442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL
69ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListInsert		(xmlListPtr l,
70ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data) ;
7194442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL
72ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListAppend		(xmlListPtr l,
73ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data) ;
7494442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL
75ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListRemoveFirst	(xmlListPtr l,
76ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
7794442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL
78ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListRemoveLast	(xmlListPtr l,
79ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
8094442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL
81ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListRemoveAll	(xmlListPtr l,
82ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
8394442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL
84ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListClear		(xmlListPtr l);
8594442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL
86ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListEmpty		(xmlListPtr l);
8794442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN xmlLinkPtr XMLCALL
88ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListFront		(xmlListPtr l);
8994442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN xmlLinkPtr XMLCALL
90ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListEnd		(xmlListPtr l);
9194442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL
92ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListSize		(xmlListPtr l);
93ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
9494442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL
95ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListPopFront		(xmlListPtr l);
9694442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL
97ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListPopBack		(xmlListPtr l);
9894442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL
99ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListPushFront	(xmlListPtr l,
100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
10194442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL
102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListPushBack		(xmlListPtr l,
103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* Advanced Operators */
10694442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL
107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListReverse		(xmlListPtr l);
10894442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL
109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListSort		(xmlListPtr l);
11094442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL
111ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListWalk		(xmlListPtr l,
112ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlListWalker walker,
113ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const void *user);
11494442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL
115ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListReverseWalk	(xmlListPtr l,
116ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlListWalker walker,
117ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const void *user);
11894442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL
119ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListMerge		(xmlListPtr l1,
120ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlListPtr l2);
12194442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN xmlListPtr XMLCALL
122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListDup		(const xmlListPtr old);
12394442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL
124ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlListCopy		(xmlListPtr cur,
125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlListPtr old);
126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* Link operators */
12794442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void * XMLCALL
128ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		xmlLinkGetData          (xmlLinkPtr lk);
129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* xmlListUnique() */
131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* xmlListSwap */
132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
133ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef __cplusplus
134ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project}
135ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif
136ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
137ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* __XML_LINK_INCLUDE__ */
138