File: list.h

package info (click to toggle)
libxml2 2.15.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,964 kB
  • sloc: ansic: 138,103; python: 6,692; sh: 4,736; xml: 1,476; makefile: 715
file content (145 lines) | stat: -rw-r--r-- 3,140 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/**
 * @file
 * 
 * @brief lists interfaces
 * 
 * this module implement the list support used in
 * various place in the library.
 *
 * @copyright See Copyright for the status of this software.
 *
 * @author Gary Pennington
 */

#ifndef __XML_LINK_INCLUDE__
#define __XML_LINK_INCLUDE__

#include <libxml/xmlversion.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * Linked list item
 *
 * @deprecated Don't use in new code.
 */
typedef struct _xmlLink xmlLink;
typedef xmlLink *xmlLinkPtr;

/**
 * Linked list
 *
 * @deprecated Don't use in new code.
 */
typedef struct _xmlList xmlList;
typedef xmlList *xmlListPtr;

/**
 * Callback function used to free data from a list.
 *
 * @param lk  the data to deallocate
 */
typedef void (*xmlListDeallocator) (xmlLink *lk);
/**
 * Callback function used to compare 2 data.
 *
 * @param data0  the first data
 * @param data1  the second data
 * @returns 0 is equality, -1 or 1 otherwise depending on the ordering.
 */
typedef int  (*xmlListDataCompare) (const void *data0, const void *data1);
/**
 * Callback function used when walking a list with #xmlListWalk.
 *
 * @param data  the data found in the list
 * @param user  extra user provided data to the walker
 * @returns 0 to stop walking the list, 1 otherwise.
 */
typedef int (*xmlListWalker) (const void *data, void *user);

/* Creation/Deletion */
XMLPUBFUN xmlList *
		xmlListCreate		(xmlListDeallocator deallocator,
	                                 xmlListDataCompare compare);
XMLPUBFUN void
		xmlListDelete		(xmlList *l);

/* Basic Operators */
XMLPUBFUN void *
		xmlListSearch		(xmlList *l,
					 void *data);
XMLPUBFUN void *
		xmlListReverseSearch	(xmlList *l,
					 void *data);
XMLPUBFUN int
		xmlListInsert		(xmlList *l,
					 void *data) ;
XMLPUBFUN int
		xmlListAppend		(xmlList *l,
					 void *data) ;
XMLPUBFUN int
		xmlListRemoveFirst	(xmlList *l,
					 void *data);
XMLPUBFUN int
		xmlListRemoveLast	(xmlList *l,
					 void *data);
XMLPUBFUN int
		xmlListRemoveAll	(xmlList *l,
					 void *data);
XMLPUBFUN void
		xmlListClear		(xmlList *l);
XMLPUBFUN int
		xmlListEmpty		(xmlList *l);
XMLPUBFUN xmlLink *
		xmlListFront		(xmlList *l);
XMLPUBFUN xmlLink *
		xmlListEnd		(xmlList *l);
XMLPUBFUN int
		xmlListSize		(xmlList *l);

XMLPUBFUN void
		xmlListPopFront		(xmlList *l);
XMLPUBFUN void
		xmlListPopBack		(xmlList *l);
XMLPUBFUN int
		xmlListPushFront	(xmlList *l,
					 void *data);
XMLPUBFUN int
		xmlListPushBack		(xmlList *l,
					 void *data);

/* Advanced Operators */
XMLPUBFUN void
		xmlListReverse		(xmlList *l);
XMLPUBFUN void
		xmlListSort		(xmlList *l);
XMLPUBFUN void
		xmlListWalk		(xmlList *l,
					 xmlListWalker walker,
					 void *user);
XMLPUBFUN void
		xmlListReverseWalk	(xmlList *l,
					 xmlListWalker walker,
					 void *user);
XMLPUBFUN void
		xmlListMerge		(xmlList *l1,
					 xmlList *l2);
XMLPUBFUN xmlList *
		xmlListDup		(xmlList *old);
XMLPUBFUN int
		xmlListCopy		(xmlList *cur,
					 xmlList *old);
/* Link operators */
XMLPUBFUN void *
		xmlLinkGetData          (xmlLink *lk);

/* xmlListUnique() */
/* xmlListSwap */

#ifdef __cplusplus
}
#endif

#endif /* __XML_LINK_INCLUDE__ */