aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/lxml/includes/libxml/list.h
blob: 5eab8f59d83cdbbf8960af836bdc1849d3d450bc (about) (plain)
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
/*
 * Summary: lists interfaces
 * Description: this module implement the list support used in
 * various place in the library.
 *
 * Copy: See Copyright for the status of this software.
 *
 * Author: Gary Pennington <Gary.Pennington@uk.sun.com>
 */

#ifndef __XML_LINK_INCLUDE__
#define __XML_LINK_INCLUDE__

#include <libxml/xmlversion.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct _xmlLink xmlLink;
typedef xmlLink *xmlLinkPtr;

typedef struct _xmlList xmlList;
typedef xmlList *xmlListPtr;

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

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

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

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

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

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

#ifdef __cplusplus
}
#endif

#endif /* __XML_LINK_INCLUDE__ */