• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* libxml2 - Library for parsing XML documents
2  * Copyright (C) 2006-2019 Free Software Foundation, Inc.
3  *
4  * This file is not part of the GNU gettext program, but is used with
5  * GNU gettext.
6  *
7  * The original copyright notice is as follows:
8  */
9 
10 /*
11  * Copyright (C) 1998-2012 Daniel Veillard.  All Rights Reserved.
12  *
13  * Permission is hereby granted, free of charge, to any person obtaining a copy
14  * of this software and associated documentation files (the "Software"), to deal
15  * in the Software without restriction, including without limitation the rights
16  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17  * copies of the Software, and to permit persons to whom the Software is fur-
18  * nished to do so, subject to the following conditions:
19  *
20  * The above copyright notice and this permission notice shall be included in
21  * all copies or substantial portions of the Software.
22  *
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
25  * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
26  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
29  * THE SOFTWARE.
30  *
31  * Author: Gary Pennington <Gary.Pennington@uk.sun.com>
32  */
33 
34 /*
35  * Summary: lists interfaces
36  * Description: this module implement the list support used in
37  * various place in the library.
38  */
39 
40 #ifndef __XML_LINK_INCLUDE__
41 #define __XML_LINK_INCLUDE__
42 
43 #include <libxml/xmlversion.h>
44 
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48 
49 typedef struct _xmlLink xmlLink;
50 typedef xmlLink *xmlLinkPtr;
51 
52 typedef struct _xmlList xmlList;
53 typedef xmlList *xmlListPtr;
54 
55 /**
56  * xmlListDeallocator:
57  * @lk:  the data to deallocate
58  *
59  * Callback function used to free data from a list.
60  */
61 typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
62 /**
63  * xmlListDataCompare:
64  * @data0: the first data
65  * @data1: the second data
66  *
67  * Callback function used to compare 2 data.
68  *
69  * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
70  */
71 typedef int  (*xmlListDataCompare) (const void *data0, const void *data1);
72 /**
73  * xmlListWalker:
74  * @data: the data found in the list
75  * @user: extra user provided data to the walker
76  *
77  * Callback function used when walking a list with xmlListWalk().
78  *
79  * Returns 0 to stop walking the list, 1 otherwise.
80  */
81 typedef int (*xmlListWalker) (const void *data, void *user);
82 
83 /* Creation/Deletion */
84 XMLPUBFUN xmlListPtr XMLCALL
85 		xmlListCreate		(xmlListDeallocator deallocator,
86 	                                 xmlListDataCompare compare);
87 XMLPUBFUN void XMLCALL
88 		xmlListDelete		(xmlListPtr l);
89 
90 /* Basic Operators */
91 XMLPUBFUN void * XMLCALL
92 		xmlListSearch		(xmlListPtr l,
93 					 void *data);
94 XMLPUBFUN void * XMLCALL
95 		xmlListReverseSearch	(xmlListPtr l,
96 					 void *data);
97 XMLPUBFUN int XMLCALL
98 		xmlListInsert		(xmlListPtr l,
99 					 void *data) ;
100 XMLPUBFUN int XMLCALL
101 		xmlListAppend		(xmlListPtr l,
102 					 void *data) ;
103 XMLPUBFUN int XMLCALL
104 		xmlListRemoveFirst	(xmlListPtr l,
105 					 void *data);
106 XMLPUBFUN int XMLCALL
107 		xmlListRemoveLast	(xmlListPtr l,
108 					 void *data);
109 XMLPUBFUN int XMLCALL
110 		xmlListRemoveAll	(xmlListPtr l,
111 					 void *data);
112 XMLPUBFUN void XMLCALL
113 		xmlListClear		(xmlListPtr l);
114 XMLPUBFUN int XMLCALL
115 		xmlListEmpty		(xmlListPtr l);
116 XMLPUBFUN xmlLinkPtr XMLCALL
117 		xmlListFront		(xmlListPtr l);
118 XMLPUBFUN xmlLinkPtr XMLCALL
119 		xmlListEnd		(xmlListPtr l);
120 XMLPUBFUN int XMLCALL
121 		xmlListSize		(xmlListPtr l);
122 
123 XMLPUBFUN void XMLCALL
124 		xmlListPopFront		(xmlListPtr l);
125 XMLPUBFUN void XMLCALL
126 		xmlListPopBack		(xmlListPtr l);
127 XMLPUBFUN int XMLCALL
128 		xmlListPushFront	(xmlListPtr l,
129 					 void *data);
130 XMLPUBFUN int XMLCALL
131 		xmlListPushBack		(xmlListPtr l,
132 					 void *data);
133 
134 /* Advanced Operators */
135 XMLPUBFUN void XMLCALL
136 		xmlListReverse		(xmlListPtr l);
137 XMLPUBFUN void XMLCALL
138 		xmlListSort		(xmlListPtr l);
139 XMLPUBFUN void XMLCALL
140 		xmlListWalk		(xmlListPtr l,
141 					 xmlListWalker walker,
142 					 void *user);
143 XMLPUBFUN void XMLCALL
144 		xmlListReverseWalk	(xmlListPtr l,
145 					 xmlListWalker walker,
146 					 void *user);
147 XMLPUBFUN void XMLCALL
148 		xmlListMerge		(xmlListPtr l1,
149 					 xmlListPtr l2);
150 XMLPUBFUN xmlListPtr XMLCALL
151 		xmlListDup		(const xmlListPtr old);
152 XMLPUBFUN int XMLCALL
153 		xmlListCopy		(xmlListPtr cur,
154 					 const xmlListPtr old);
155 /* Link operators */
156 XMLPUBFUN void * XMLCALL
157 		xmlLinkGetData          (xmlLinkPtr lk);
158 
159 /* xmlListUnique() */
160 /* xmlListSwap */
161 
162 #ifdef __cplusplus
163 }
164 #endif
165 
166 #endif /* __XML_LINK_INCLUDE__ */
167