liyujie
2025-08-28 867b8b7b729282c7e14e200ca277435329ebe747
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 XMLCALL
       xmlListCreate        (xmlListDeallocator deallocator,
                                    xmlListDataCompare compare);
XMLPUBFUN void XMLCALL
       xmlListDelete        (xmlListPtr l);
 
/* Basic Operators */
XMLPUBFUN void * XMLCALL
       xmlListSearch        (xmlListPtr l,
                    void *data);
XMLPUBFUN void * XMLCALL
       xmlListReverseSearch    (xmlListPtr l,
                    void *data);
XMLPUBFUN int XMLCALL
       xmlListInsert        (xmlListPtr l,
                    void *data) ;
XMLPUBFUN int XMLCALL
       xmlListAppend        (xmlListPtr l,
                    void *data) ;
XMLPUBFUN int XMLCALL
       xmlListRemoveFirst    (xmlListPtr l,
                    void *data);
XMLPUBFUN int XMLCALL
       xmlListRemoveLast    (xmlListPtr l,
                    void *data);
XMLPUBFUN int XMLCALL
       xmlListRemoveAll    (xmlListPtr l,
                    void *data);
XMLPUBFUN void XMLCALL
       xmlListClear        (xmlListPtr l);
XMLPUBFUN int XMLCALL
       xmlListEmpty        (xmlListPtr l);
XMLPUBFUN xmlLinkPtr XMLCALL
       xmlListFront        (xmlListPtr l);
XMLPUBFUN xmlLinkPtr XMLCALL
       xmlListEnd        (xmlListPtr l);
XMLPUBFUN int XMLCALL
       xmlListSize        (xmlListPtr l);
 
XMLPUBFUN void XMLCALL
       xmlListPopFront        (xmlListPtr l);
XMLPUBFUN void XMLCALL
       xmlListPopBack        (xmlListPtr l);
XMLPUBFUN int XMLCALL
       xmlListPushFront    (xmlListPtr l,
                    void *data);
XMLPUBFUN int XMLCALL
       xmlListPushBack        (xmlListPtr l,
                    void *data);
 
/* Advanced Operators */
XMLPUBFUN void XMLCALL
       xmlListReverse        (xmlListPtr l);
XMLPUBFUN void XMLCALL
       xmlListSort        (xmlListPtr l);
XMLPUBFUN void XMLCALL
       xmlListWalk        (xmlListPtr l,
                    xmlListWalker walker,
                    void *user);
XMLPUBFUN void XMLCALL
       xmlListReverseWalk    (xmlListPtr l,
                    xmlListWalker walker,
                    void *user);
XMLPUBFUN void XMLCALL
       xmlListMerge        (xmlListPtr l1,
                    xmlListPtr l2);
XMLPUBFUN xmlListPtr XMLCALL
       xmlListDup        (const xmlListPtr old);
XMLPUBFUN int XMLCALL
       xmlListCopy        (xmlListPtr cur,
                    const xmlListPtr old);
/* Link operators */
XMLPUBFUN void * XMLCALL
       xmlLinkGetData          (xmlLinkPtr lk);
 
/* xmlListUnique() */
/* xmlListSwap */
 
#ifdef __cplusplus
}
#endif
 
#endif /* __XML_LINK_INCLUDE__ */