6998afe5f544a481e4d5e8174debe4587802d977
[ircu2.10.12-pk.git] / libs / dbprim / doc / html / group__dbprim__link.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>Linked lists</title>
4 <link href="doxygen.css" rel="stylesheet" type="text/css">
5 </head><body bgcolor="#ffffff">
6 <!-- Generated by Doxygen 1.2.8.1 -->
7 <center>
8 <a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; </center>
9 <hr><h1>Linked lists</h1>Operations for linked lists. 
10 <a href="#_details">More...</a><table border=0 cellpadding=0 cellspacing=0>
11 <tr><td colspan=2><br><h2>Defines</h2></td></tr>
12 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a13">LINK_HEAD_INIT</a>(extra)</td></tr>
13 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list head static initializer.</em> <a href="#a13">More...</a><em></em></font><br><br></td></tr>
14 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a14">ll_verify</a>(list)</td></tr>
15 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list head verification macro.</em> <a href="#a14">More...</a><em></em></font><br><br></td></tr>
16 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a15">ll_count</a>(list)</td></tr>
17 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list count.</em> <a href="#a15">More...</a><em></em></font><br><br></td></tr>
18 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a16">ll_first</a>(list)</td></tr>
19 <tr><td>&nbsp;</td><td><font size=-1><em>First element in linked list.</em> <a href="#a16">More...</a><em></em></font><br><br></td></tr>
20 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a17">ll_last</a>(list)</td></tr>
21 <tr><td>&nbsp;</td><td><font size=-1><em>Last element in a linked list.</em> <a href="#a17">More...</a><em></em></font><br><br></td></tr>
22 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a18">ll_extra</a>(list)</td></tr>
23 <tr><td>&nbsp;</td><td><font size=-1><em>Extra pointer data in a linked list.</em> <a href="#a18">More...</a><em></em></font><br><br></td></tr>
24 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a19">LINK_ELEM_INIT</a>(obj)</td></tr>
25 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list element static initializer.</em> <a href="#a19">More...</a><em></em></font><br><br></td></tr>
26 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a20">le_verify</a>(element)</td></tr>
27 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list element verification macro.</em> <a href="#a20">More...</a><em></em></font><br><br></td></tr>
28 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a21">le_next</a>(elem)</td></tr>
29 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list element next pointer.</em> <a href="#a21">More...</a><em></em></font><br><br></td></tr>
30 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a22">le_prev</a>(elem)</td></tr>
31 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list element previous pointer.</em> <a href="#a22">More...</a><em></em></font><br><br></td></tr>
32 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a23">le_object</a>(elem)</td></tr>
33 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list element object pointer.</em> <a href="#a23">More...</a><em></em></font><br><br></td></tr>
34 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a24">le_head</a>(elem)</td></tr>
35 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list element head pointer.</em> <a href="#a24">More...</a><em></em></font><br><br></td></tr>
36 <tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a25">le_flags</a>(elem)</td></tr>
37 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list element flags.</em> <a href="#a25">More...</a><em></em></font><br><br></td></tr>
38 <tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
39 <tr><td nowrap align=right valign=top>typedef struct _link_head_s&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a0">link_head_t</a></td></tr>
40 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list head.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
41 <tr><td nowrap align=right valign=top>typedef struct _link_elem_s&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a1">link_elem_t</a></td></tr>
42 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list element.</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
43 <tr><td nowrap align=right valign=top>typedef unsigned long (*&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a2">link_iter_t</a> )(<a class="el" href="group__dbprim__link.html#a0">link_head_t</a> *, <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> *, void *)</td></tr>
44 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list iteration callback.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
45 <tr><td nowrap align=right valign=top>typedef unsigned long (*&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a3">link_comp_t</a> )(<a class="el" href="group__dbprim__key.html#a0">db_key_t</a> *, void *)</td></tr>
46 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list comparison callback.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
47 <tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group__dbprim__link.html#a26">_link_loc_e</a>&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a4">link_loc_t</a></td></tr>
48 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list location.</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr>
49 <tr><td colspan=2><br><h2>Enumerations</h2></td></tr>
50 <tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a26">_link_loc_e</a> { <a class="el" href="group__dbprim__link.html#a26a98">LINK_LOC_HEAD</a>, 
51 <a class="el" href="group__dbprim__link.html#a26a99">LINK_LOC_TAIL</a>, 
52 <a class="el" href="group__dbprim__link.html#a26a100">LINK_LOC_BEFORE</a>, 
53 <a class="el" href="group__dbprim__link.html#a26a101">LINK_LOC_AFTER</a>
54  }</td></tr>
55 <tr><td>&nbsp;</td><td><font size=-1><em>Linked list location.</em> <a href="#a26">More...</a><em></em></font><br><br></td></tr>
56 <tr><td colspan=2><br><h2>Functions</h2></td></tr>
57 <tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a5">ll_init</a> (<a class="el" href="group__dbprim__link.html#a0">link_head_t</a> *list, void *extra)</td></tr>
58 <tr><td>&nbsp;</td><td><font size=-1><em>Dynamically initialize a linked list head.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
59 <tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a6">ll_add</a> (<a class="el" href="group__dbprim__link.html#a0">link_head_t</a> *list, <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> *new, <a class="el" href="group__dbprim__link.html#a4">link_loc_t</a> loc, <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> *elem)</td></tr>
60 <tr><td>&nbsp;</td><td><font size=-1><em>Add an element to a linked list.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr>
61 <tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a7">ll_move</a> (<a class="el" href="group__dbprim__link.html#a0">link_head_t</a> *list, <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> *new, <a class="el" href="group__dbprim__link.html#a4">link_loc_t</a> loc, <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> *elem)</td></tr>
62 <tr><td>&nbsp;</td><td><font size=-1><em>Move an element within a linked list.</em> <a href="#a7">More...</a><em></em></font><br><br></td></tr>
63 <tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a8">ll_remove</a> (<a class="el" href="group__dbprim__link.html#a0">link_head_t</a> *list, <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> *elem)</td></tr>
64 <tr><td>&nbsp;</td><td><font size=-1><em>Remove an element from a linked list.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr>
65 <tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a9">ll_find</a> (<a class="el" href="group__dbprim__link.html#a0">link_head_t</a> *list, <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> **elem_p, <a class="el" href="group__dbprim__link.html#a3">link_comp_t</a> comp_func, <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> *start, <a class="el" href="group__dbprim__key.html#a0">db_key_t</a> *key)</td></tr>
66 <tr><td>&nbsp;</td><td><font size=-1><em>Find an element in a linked list.</em> <a href="#a9">More...</a><em></em></font><br><br></td></tr>
67 <tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a10">ll_iter</a> (<a class="el" href="group__dbprim__link.html#a0">link_head_t</a> *list, <a class="el" href="group__dbprim__link.html#a2">link_iter_t</a> iter_func, void *extra)</td></tr>
68 <tr><td>&nbsp;</td><td><font size=-1><em>Iterate over each entry in a linked list.</em> <a href="#a10">More...</a><em></em></font><br><br></td></tr>
69 <tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a11">ll_flush</a> (<a class="el" href="group__dbprim__link.html#a0">link_head_t</a> *list, <a class="el" href="group__dbprim__link.html#a2">link_iter_t</a> flush_func, void *extra)</td></tr>
70 <tr><td>&nbsp;</td><td><font size=-1><em>Flush a linked list.</em> <a href="#a11">More...</a><em></em></font><br><br></td></tr>
71 <tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="group__dbprim__link.html#a12">le_init</a> (<a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> *elem, void *object)</td></tr>
72 <tr><td>&nbsp;</td><td><font size=-1><em>Dynamically initialize a linked list element.</em> <a href="#a12">More...</a><em></em></font><br><br></td></tr>
73 </table>
74 <hr><a name="_details"></a><h2>Detailed Description</h2>
75 Linked lists are a very basic data structure used in building databases. This library provides a simple yet powerful implementation of generic linked lists, based on two caller-allocated structures. The <a class="el" href="group__dbprim__link.html#a0">link_head_t</a> structure describes the head of a linked list and contains information regarding the number of elements in the linked list as well as pointers referencing the first and last elements in the list. The <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> structure describes a specific element in the linked list and contains pointers referencing the next and previous elements in the list, as well as a pointer to the object, a pointer to the head of the linked list, and a set of user-specified flags.
76 <p>
77 Elements may be added at any arbitrary location in the linked list with <a class="el" href="group__dbprim__link.html#a6">ll_add</a>(); moved to any other arbitrary location in the linked list with <a class="el" href="group__dbprim__link.html#a7">ll_move</a>(), or removed from the list with <a class="el" href="group__dbprim__link.html#a8">ll_remove</a>(). In addition, the user may search the list using a user-defined comparison function with <a class="el" href="group__dbprim__link.html#a9">ll_find</a>(); iterate over every element in the list with <a class="el" href="group__dbprim__link.html#a10">ll_iter</a>(); or remove all items from the list with <a class="el" href="group__dbprim__link.html#a11">ll_flush</a>(), optionally executing a user-specified clean-up function. <hr><h2>Define Documentation</h2>
78 <a name="a19" doxytag="dbprim.h.top::LINK_ELEM_INIT"></a><p>
79 <table width="100%" cellpadding="2" cellspacing="0" border="0">
80   <tr>
81     <td class="md">
82       <table cellpadding="0" cellspacing="0" border="0">
83         <tr>
84           <td nowrap valign="top"><b> 
85 #define LINK_ELEM_INIT(
86           </b></td>
87           <td valign="bottom"><b>
88 obj&nbsp;)
89       </table>
90     </td>
91   </tr>
92 </table>
93 <table cellspacing=5 cellpadding=0 border=0>
94   <tr>
95     <td>
96       &nbsp;
97     </td>
98     <td>
99
100 <p>
101
102 <p>
103  This macro statically initializes a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a>.<dl compact><dt>
104 <b>Parameters: </b><dd>
105 <table border=0 cellspacing=2 cellpadding=0>
106 <tr><td valign=top><em>obj</em>
107 &nbsp;</td><td>
108 A pointer to <code>void</code> representing the object associated with the element. </td></tr>
109 </table>
110 </dl>    </td>
111   </tr>
112 </table>
113 <a name="a13" doxytag="dbprim.h.top::LINK_HEAD_INIT"></a><p>
114 <table width="100%" cellpadding="2" cellspacing="0" border="0">
115   <tr>
116     <td class="md">
117       <table cellpadding="0" cellspacing="0" border="0">
118         <tr>
119           <td nowrap valign="top"><b> 
120 #define LINK_HEAD_INIT(
121           </b></td>
122           <td valign="bottom"><b>
123 extra&nbsp;)
124       </table>
125     </td>
126   </tr>
127 </table>
128 <table cellspacing=5 cellpadding=0 border=0>
129   <tr>
130     <td>
131       &nbsp;
132     </td>
133     <td>
134
135 <p>
136
137 <p>
138  This macro statically initializes a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>.<dl compact><dt>
139 <b>Parameters: </b><dd>
140 <table border=0 cellspacing=2 cellpadding=0>
141 <tr><td valign=top><em>extra</em>
142 &nbsp;</td><td>
143 Extra pointer data that should be associated with the list head. </td></tr>
144 </table>
145 </dl>    </td>
146   </tr>
147 </table>
148 <a name="a25" doxytag="dbprim.h.top::le_flags"></a><p>
149 <table width="100%" cellpadding="2" cellspacing="0" border="0">
150   <tr>
151     <td class="md">
152       <table cellpadding="0" cellspacing="0" border="0">
153         <tr>
154           <td nowrap valign="top"><b> 
155 #define le_flags(
156           </b></td>
157           <td valign="bottom"><b>
158 elem&nbsp;)
159       </table>
160     </td>
161   </tr>
162 </table>
163 <table cellspacing=5 cellpadding=0 border=0>
164   <tr>
165     <td>
166       &nbsp;
167     </td>
168     <td>
169
170 <p>
171
172 <p>
173  This macro retrieves a set of user-defined flags associated with the element. It may be used as an lvalue to set those flags.<dl compact><dt>
174 <b>Parameters: </b><dd>
175 <table border=0 cellspacing=2 cellpadding=0>
176 <tr><td valign=top><em>elem</em>
177 &nbsp;</td><td>
178 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a>.
179 <p>
180 </td></tr>
181 </table>
182 </dl><dl compact><dt>
183 <b>Returns: </b><dd>
184 An <code>unsigned long</code> containing the flags associated with the element. </dl>    </td>
185   </tr>
186 </table>
187 <a name="a24" doxytag="dbprim.h.top::le_head"></a><p>
188 <table width="100%" cellpadding="2" cellspacing="0" border="0">
189   <tr>
190     <td class="md">
191       <table cellpadding="0" cellspacing="0" border="0">
192         <tr>
193           <td nowrap valign="top"><b> 
194 #define le_head(
195           </b></td>
196           <td valign="bottom"><b>
197 elem&nbsp;)
198       </table>
199     </td>
200   </tr>
201 </table>
202 <table cellspacing=5 cellpadding=0 border=0>
203   <tr>
204     <td>
205       &nbsp;
206     </td>
207     <td>
208
209 <p>
210
211 <p>
212  This macro retrieves a pointer to the head of the linked list that the element is in.<dl compact><dt>
213 <b>Parameters: </b><dd>
214 <table border=0 cellspacing=2 cellpadding=0>
215 <tr><td valign=top><em>elem</em>
216 &nbsp;</td><td>
217 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a>.
218 <p>
219 </td></tr>
220 </table>
221 </dl><dl compact><dt>
222 <b>Returns: </b><dd>
223 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a> representing the head of the linked list the element is in. </dl>    </td>
224   </tr>
225 </table>
226 <a name="a21" doxytag="dbprim.h.top::le_next"></a><p>
227 <table width="100%" cellpadding="2" cellspacing="0" border="0">
228   <tr>
229     <td class="md">
230       <table cellpadding="0" cellspacing="0" border="0">
231         <tr>
232           <td nowrap valign="top"><b> 
233 #define le_next(
234           </b></td>
235           <td valign="bottom"><b>
236 elem&nbsp;)
237       </table>
238     </td>
239   </tr>
240 </table>
241 <table cellspacing=5 cellpadding=0 border=0>
242   <tr>
243     <td>
244       &nbsp;
245     </td>
246     <td>
247
248 <p>
249
250 <p>
251  This macro retrieves a pointer to the next element in the linked list.<dl compact><dt>
252 <b>Parameters: </b><dd>
253 <table border=0 cellspacing=2 cellpadding=0>
254 <tr><td valign=top><em>elem</em>
255 &nbsp;</td><td>
256 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a>.
257 <p>
258 </td></tr>
259 </table>
260 </dl><dl compact><dt>
261 <b>Returns: </b><dd>
262 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> representing the next element in the linked list. </dl>    </td>
263   </tr>
264 </table>
265 <a name="a23" doxytag="dbprim.h.top::le_object"></a><p>
266 <table width="100%" cellpadding="2" cellspacing="0" border="0">
267   <tr>
268     <td class="md">
269       <table cellpadding="0" cellspacing="0" border="0">
270         <tr>
271           <td nowrap valign="top"><b> 
272 #define le_object(
273           </b></td>
274           <td valign="bottom"><b>
275 elem&nbsp;)
276       </table>
277     </td>
278   </tr>
279 </table>
280 <table cellspacing=5 cellpadding=0 border=0>
281   <tr>
282     <td>
283       &nbsp;
284     </td>
285     <td>
286
287 <p>
288
289 <p>
290  This macro retrieves a pointer to the object represented by the element. It may be used as an lvalue to change the object pointed to. Care should be taken when using this feature.<dl compact><dt>
291 <b>Parameters: </b><dd>
292 <table border=0 cellspacing=2 cellpadding=0>
293 <tr><td valign=top><em>elem</em>
294 &nbsp;</td><td>
295 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a>.
296 <p>
297 </td></tr>
298 </table>
299 </dl><dl compact><dt>
300 <b>Returns: </b><dd>
301 A pointer to <code>void</code> representing the object associated with the linked list element. </dl>    </td>
302   </tr>
303 </table>
304 <a name="a22" doxytag="dbprim.h.top::le_prev"></a><p>
305 <table width="100%" cellpadding="2" cellspacing="0" border="0">
306   <tr>
307     <td class="md">
308       <table cellpadding="0" cellspacing="0" border="0">
309         <tr>
310           <td nowrap valign="top"><b> 
311 #define le_prev(
312           </b></td>
313           <td valign="bottom"><b>
314 elem&nbsp;)
315       </table>
316     </td>
317   </tr>
318 </table>
319 <table cellspacing=5 cellpadding=0 border=0>
320   <tr>
321     <td>
322       &nbsp;
323     </td>
324     <td>
325
326 <p>
327
328 <p>
329  This macro retrieves a pointer to the previous element in the linked list.<dl compact><dt>
330 <b>Parameters: </b><dd>
331 <table border=0 cellspacing=2 cellpadding=0>
332 <tr><td valign=top><em>elem</em>
333 &nbsp;</td><td>
334 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a>.
335 <p>
336 </td></tr>
337 </table>
338 </dl><dl compact><dt>
339 <b>Returns: </b><dd>
340 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> representing the previous element in the linked list. </dl>    </td>
341   </tr>
342 </table>
343 <a name="a20" doxytag="dbprim.h.top::le_verify"></a><p>
344 <table width="100%" cellpadding="2" cellspacing="0" border="0">
345   <tr>
346     <td class="md">
347       <table cellpadding="0" cellspacing="0" border="0">
348         <tr>
349           <td nowrap valign="top"><b> 
350 #define le_verify(
351           </b></td>
352           <td valign="bottom"><b>
353 element&nbsp;)
354       </table>
355     </td>
356   </tr>
357 </table>
358 <table cellspacing=5 cellpadding=0 border=0>
359   <tr>
360     <td>
361       &nbsp;
362     </td>
363     <td>
364
365 <p>
366
367 <p>
368  This macro verifies that a given pointer actually does point to a linked list element.<dl compact><dt>
369 <b>Parameters: </b><dd>
370 <table border=0 cellspacing=2 cellpadding=0>
371 <tr><td valign=top><em>element</em>
372 &nbsp;</td><td>
373 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a>.
374 <p>
375 </td></tr>
376 </table>
377 </dl><dl compact><dt>
378 <b>Returns: </b><dd>
379 Boolean true if <code>element</code> is a valid linked list element or false otherwise. </dl>    </td>
380   </tr>
381 </table>
382 <a name="a15" doxytag="dbprim.h.top::ll_count"></a><p>
383 <table width="100%" cellpadding="2" cellspacing="0" border="0">
384   <tr>
385     <td class="md">
386       <table cellpadding="0" cellspacing="0" border="0">
387         <tr>
388           <td nowrap valign="top"><b> 
389 #define ll_count(
390           </b></td>
391           <td valign="bottom"><b>
392 list&nbsp;)
393       </table>
394     </td>
395   </tr>
396 </table>
397 <table cellspacing=5 cellpadding=0 border=0>
398   <tr>
399     <td>
400       &nbsp;
401     </td>
402     <td>
403
404 <p>
405
406 <p>
407  This macro retrieves the number of elements in a linked list.<dl compact><dt>
408 <b>Parameters: </b><dd>
409 <table border=0 cellspacing=2 cellpadding=0>
410 <tr><td valign=top><em>list</em>
411 &nbsp;</td><td>
412 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>.
413 <p>
414 </td></tr>
415 </table>
416 </dl><dl compact><dt>
417 <b>Returns: </b><dd>
418 An <code>unsigned long</code> containing a count of the number of elements in the linked list. </dl>    </td>
419   </tr>
420 </table>
421 <a name="a18" doxytag="dbprim.h.top::ll_extra"></a><p>
422 <table width="100%" cellpadding="2" cellspacing="0" border="0">
423   <tr>
424     <td class="md">
425       <table cellpadding="0" cellspacing="0" border="0">
426         <tr>
427           <td nowrap valign="top"><b> 
428 #define ll_extra(
429           </b></td>
430           <td valign="bottom"><b>
431 list&nbsp;)
432       </table>
433     </td>
434   </tr>
435 </table>
436 <table cellspacing=5 cellpadding=0 border=0>
437   <tr>
438     <td>
439       &nbsp;
440     </td>
441     <td>
442
443 <p>
444
445 <p>
446  This macro retrieves the extra pointer data associated with a particular linked list.<dl compact><dt>
447 <b>Parameters: </b><dd>
448 <table border=0 cellspacing=2 cellpadding=0>
449 <tr><td valign=top><em>list</em>
450 &nbsp;</td><td>
451 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>.
452 <p>
453 </td></tr>
454 </table>
455 </dl><dl compact><dt>
456 <b>Returns: </b><dd>
457 A pointer to <code>void</code>. </dl>    </td>
458   </tr>
459 </table>
460 <a name="a16" doxytag="dbprim.h.top::ll_first"></a><p>
461 <table width="100%" cellpadding="2" cellspacing="0" border="0">
462   <tr>
463     <td class="md">
464       <table cellpadding="0" cellspacing="0" border="0">
465         <tr>
466           <td nowrap valign="top"><b> 
467 #define ll_first(
468           </b></td>
469           <td valign="bottom"><b>
470 list&nbsp;)
471       </table>
472     </td>
473   </tr>
474 </table>
475 <table cellspacing=5 cellpadding=0 border=0>
476   <tr>
477     <td>
478       &nbsp;
479     </td>
480     <td>
481
482 <p>
483
484 <p>
485  This macro retrieves the first element in a linked list.<dl compact><dt>
486 <b>Parameters: </b><dd>
487 <table border=0 cellspacing=2 cellpadding=0>
488 <tr><td valign=top><em>list</em>
489 &nbsp;</td><td>
490 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>.
491 <p>
492 </td></tr>
493 </table>
494 </dl><dl compact><dt>
495 <b>Returns: </b><dd>
496 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a>. </dl>    </td>
497   </tr>
498 </table>
499 <a name="a17" doxytag="dbprim.h.top::ll_last"></a><p>
500 <table width="100%" cellpadding="2" cellspacing="0" border="0">
501   <tr>
502     <td class="md">
503       <table cellpadding="0" cellspacing="0" border="0">
504         <tr>
505           <td nowrap valign="top"><b> 
506 #define ll_last(
507           </b></td>
508           <td valign="bottom"><b>
509 list&nbsp;)
510       </table>
511     </td>
512   </tr>
513 </table>
514 <table cellspacing=5 cellpadding=0 border=0>
515   <tr>
516     <td>
517       &nbsp;
518     </td>
519     <td>
520
521 <p>
522
523 <p>
524  This macro retrieves the last element in a linked list.<dl compact><dt>
525 <b>Parameters: </b><dd>
526 <table border=0 cellspacing=2 cellpadding=0>
527 <tr><td valign=top><em>list</em>
528 &nbsp;</td><td>
529 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>.
530 <p>
531 </td></tr>
532 </table>
533 </dl><dl compact><dt>
534 <b>Returns: </b><dd>
535 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a>. </dl>    </td>
536   </tr>
537 </table>
538 <a name="a14" doxytag="dbprim.h.top::ll_verify"></a><p>
539 <table width="100%" cellpadding="2" cellspacing="0" border="0">
540   <tr>
541     <td class="md">
542       <table cellpadding="0" cellspacing="0" border="0">
543         <tr>
544           <td nowrap valign="top"><b> 
545 #define ll_verify(
546           </b></td>
547           <td valign="bottom"><b>
548 list&nbsp;)
549       </table>
550     </td>
551   </tr>
552 </table>
553 <table cellspacing=5 cellpadding=0 border=0>
554   <tr>
555     <td>
556       &nbsp;
557     </td>
558     <td>
559
560 <p>
561
562 <p>
563  This macro verifies that a given pointer actually does point to a linked list head.<dl compact><dt>
564 <b>Parameters: </b><dd>
565 <table border=0 cellspacing=2 cellpadding=0>
566 <tr><td valign=top><em>list</em>
567 &nbsp;</td><td>
568 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>.
569 <p>
570 </td></tr>
571 </table>
572 </dl><dl compact><dt>
573 <b>Returns: </b><dd>
574 Boolean true if <code>list</code> is a valid linked list head or false otherwise. </dl>    </td>
575   </tr>
576 </table>
577 <hr><h2>Typedef Documentation</h2>
578 <a name="a3" doxytag="dbprim.h.top::link_comp_t"></a><p>
579 <table width="100%" cellpadding="2" cellspacing="0" border="0">
580   <tr>
581     <td class="md">
582       <table cellpadding="0" cellspacing="0" border="0">
583         <tr>
584           <td nowrap valign="top"><b> 
585 typedef unsigned long(* link_comp_t)(<a class="el" href="group__dbprim__key.html#a0">db_key_t</a> *, void *)
586           </b></td>
587         </tr>
588
589       </table>
590     </td>
591   </tr>
592 </table>
593 <table cellspacing=5 cellpadding=0 border=0>
594   <tr>
595     <td>
596       &nbsp;
597     </td>
598     <td>
599
600 <p>
601
602 <p>
603  This function pointer references a callback used by <a class="el" href="group__dbprim__link.html#a9">ll_find</a>(). It should return 0 if the entry passed as the second argument matches the key passed as the first argument.     </td>
604   </tr>
605 </table>
606 <a name="a1" doxytag="dbprim.h.top::link_elem_t"></a><p>
607 <table width="100%" cellpadding="2" cellspacing="0" border="0">
608   <tr>
609     <td class="md">
610       <table cellpadding="0" cellspacing="0" border="0">
611         <tr>
612           <td nowrap valign="top"><b> 
613 typedef struct _link_elem_s link_elem_t
614           </b></td>
615         </tr>
616
617       </table>
618     </td>
619   </tr>
620 </table>
621 <table cellspacing=5 cellpadding=0 border=0>
622   <tr>
623     <td>
624       &nbsp;
625     </td>
626     <td>
627
628 <p>
629
630 <p>
631  This structure represents a single element of a linked list.     </td>
632   </tr>
633 </table>
634 <a name="a0" doxytag="dbprim.h.top::link_head_t"></a><p>
635 <table width="100%" cellpadding="2" cellspacing="0" border="0">
636   <tr>
637     <td class="md">
638       <table cellpadding="0" cellspacing="0" border="0">
639         <tr>
640           <td nowrap valign="top"><b> 
641 typedef struct _link_head_s link_head_t
642           </b></td>
643         </tr>
644
645       </table>
646     </td>
647   </tr>
648 </table>
649 <table cellspacing=5 cellpadding=0 border=0>
650   <tr>
651     <td>
652       &nbsp;
653     </td>
654     <td>
655
656 <p>
657
658 <p>
659  This structure is the head of all linked lists maintained by this library.     </td>
660   </tr>
661 </table>
662 <a name="a2" doxytag="dbprim.h.top::link_iter_t"></a><p>
663 <table width="100%" cellpadding="2" cellspacing="0" border="0">
664   <tr>
665     <td class="md">
666       <table cellpadding="0" cellspacing="0" border="0">
667         <tr>
668           <td nowrap valign="top"><b> 
669 typedef unsigned long(* link_iter_t)(<a class="el" href="group__dbprim__link.html#a0">link_head_t</a> *, <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> *, void *)
670           </b></td>
671         </tr>
672
673       </table>
674     </td>
675   </tr>
676 </table>
677 <table cellspacing=5 cellpadding=0 border=0>
678   <tr>
679     <td>
680       &nbsp;
681     </td>
682     <td>
683
684 <p>
685
686 <p>
687  This function pointer references a callback used by <a class="el" href="group__dbprim__link.html#a10">ll_iter</a>() and <a class="el" href="group__dbprim__link.html#a11">ll_flush</a>(). It should return 0 for success. A non-zero return value will terminate the operation and will become the return value of the <a class="el" href="group__dbprim__link.html#a10">ll_iter</a>() or <a class="el" href="group__dbprim__link.html#a11">ll_flush</a>() call.     </td>
688   </tr>
689 </table>
690 <a name="a4" doxytag="dbprim.h.top::link_loc_t"></a><p>
691 <table width="100%" cellpadding="2" cellspacing="0" border="0">
692   <tr>
693     <td class="md">
694       <table cellpadding="0" cellspacing="0" border="0">
695         <tr>
696           <td nowrap valign="top"><b> 
697 typedef enum <a class="el" href="group__dbprim__link.html#a26">_link_loc_e</a> link_loc_t
698           </b></td>
699         </tr>
700
701       </table>
702     </td>
703   </tr>
704 </table>
705 <table cellspacing=5 cellpadding=0 border=0>
706   <tr>
707     <td>
708       &nbsp;
709     </td>
710     <td>
711
712 <p>
713
714 <p>
715  See the documentation for the enumeration <a class="el" href="group__dbprim__link.html#a26">_link_loc_e</a>.     </td>
716   </tr>
717 </table>
718 <hr><h2>Enumeration Type Documentation</h2>
719 <a name="a26" doxytag="dbprim.h.top::_link_loc_e"></a><p>
720 <table width="100%" cellpadding="2" cellspacing="0" border="0">
721   <tr>
722     <td class="md">
723       <table cellpadding="0" cellspacing="0" border="0">
724         <tr>
725           <td nowrap valign="top"><b> 
726 enum _link_loc_e
727           </b></td>
728         </tr>
729
730       </table>
731     </td>
732   </tr>
733 </table>
734 <table cellspacing=5 cellpadding=0 border=0>
735   <tr>
736     <td>
737       &nbsp;
738     </td>
739     <td>
740
741 <p>
742
743 <p>
744  This enumeration is used to specify where an element in a linked list should be placed. It should be referenced by the typedef <a class="el" href="group__dbprim__link.html#a4">link_loc_t</a>. <dl compact><dt>
745 <b>Enumeration values:</b><dd>
746 <table border=0 cellspacing=2 cellpadding=0>
747 <tr><td valign=top><a name="a26a98" doxytag="LINK_LOC_HEAD"></a><em>LINK_LOC_HEAD</em>
748 &nbsp;</td><td>
749 Element should be inserted at head of list. </td></tr>
750 <tr><td valign=top><a name="a26a99" doxytag="LINK_LOC_TAIL"></a><em>LINK_LOC_TAIL</em>
751 &nbsp;</td><td>
752 Element should be inserted at tail of list. </td></tr>
753 <tr><td valign=top><a name="a26a100" doxytag="LINK_LOC_BEFORE"></a><em>LINK_LOC_BEFORE</em>
754 &nbsp;</td><td>
755 Element should be inserted before specified element. </td></tr>
756 <tr><td valign=top><a name="a26a101" doxytag="LINK_LOC_AFTER"></a><em>LINK_LOC_AFTER</em>
757 &nbsp;</td><td>
758 Element should be inserted after specified element. </td></tr>
759 </table>
760 </dl>
761     </td>
762   </tr>
763 </table>
764 <hr><h2>Function Documentation</h2>
765 <a name="a12" doxytag="le_init.c::le_init"></a><p>
766 <table width="100%" cellpadding="2" cellspacing="0" border="0">
767   <tr>
768     <td class="md">
769       <table cellpadding="0" cellspacing="0" border="0">
770         <tr>
771           <td nowrap valign="top"><b> 
772 unsigned long le_init (
773           </b></td>
774           <td valign="bottom"><b>
775 <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> * <em>elem</em>, 
776           </b></td>
777         </tr>
778         <tr>
779           <td></td>
780           <td><b>
781 void * <em>object</em>&nbsp;)
782           </b></td>
783         </tr>
784
785       </table>
786     </td>
787   </tr>
788 </table>
789 <table cellspacing=5 cellpadding=0 border=0>
790   <tr>
791     <td>
792       &nbsp;
793     </td>
794     <td>
795
796 <p>
797
798 <p>
799  This function dynamically initializes a linked list element.<dl compact><dt>
800 <b>Parameters: </b><dd>
801 <table border=0 cellspacing=2 cellpadding=0>
802 <tr><td valign=top><em>elem</em>
803 &nbsp;</td><td>
804 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> to be initialized. </td></tr>
805 <tr><td valign=top><em>object</em>
806 &nbsp;</td><td>
807 A pointer to <code>void</code> used to represent the object associated with the element. May not be <code>NULL</code>.</td></tr>
808 </table>
809 </dl><dl compact><dt>
810 <b>Return values: </b><dd>
811 <table border=0 cellspacing=2 cellpadding=0>
812 <tr><td valign=top><em>DB_ERR_BADARGS</em>
813 &nbsp;</td><td>
814 A <code>NULL</code> pointer was passed for <code>elem</code> or <code>object</code>. </td></tr>
815 </table>
816 </dl>    </td>
817   </tr>
818 </table>
819 <a name="a6" doxytag="ll_add.c::ll_add"></a><p>
820 <table width="100%" cellpadding="2" cellspacing="0" border="0">
821   <tr>
822     <td class="md">
823       <table cellpadding="0" cellspacing="0" border="0">
824         <tr>
825           <td nowrap valign="top"><b> 
826 unsigned long ll_add (
827           </b></td>
828           <td valign="bottom"><b>
829 <a class="el" href="group__dbprim__link.html#a0">link_head_t</a> * <em>list</em>, 
830           </b></td>
831         </tr>
832         <tr>
833           <td></td>
834           <td><b>
835 <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> * <em>new</em>, 
836           </b></td>
837         </tr>
838         <tr>
839           <td></td>
840           <td><b>
841 <a class="el" href="group__dbprim__link.html#a4">link_loc_t</a> <em>loc</em>, 
842           </b></td>
843         </tr>
844         <tr>
845           <td></td>
846           <td><b>
847 <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> * <em>elem</em>&nbsp;)
848           </b></td>
849         </tr>
850
851       </table>
852     </td>
853   </tr>
854 </table>
855 <table cellspacing=5 cellpadding=0 border=0>
856   <tr>
857     <td>
858       &nbsp;
859     </td>
860     <td>
861
862 <p>
863
864 <p>
865  This function adds a given element to a specified linked list in the specified location.<dl compact><dt>
866 <b>Parameters: </b><dd>
867 <table border=0 cellspacing=2 cellpadding=0>
868 <tr><td valign=top><em>list</em>
869 &nbsp;</td><td>
870 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>. </td></tr>
871 <tr><td valign=top><em>new</em>
872 &nbsp;</td><td>
873 A pointer to the <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> to be added to the linked list. </td></tr>
874 <tr><td valign=top><em>loc</em>
875 &nbsp;</td><td>
876 A <a class="el" href="group__dbprim__link.html#a4">link_loc_t</a> indicating where the entry should be added. </td></tr>
877 <tr><td valign=top><em>elem</em>
878 &nbsp;</td><td>
879 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> describing another element in the list if <code>loc</code> is <a class="el" href="group__dbprim__link.html#a26a100">LINK_LOC_BEFORE</a> or <a class="el" href="group__dbprim__link.html#a26a101">LINK_LOC_AFTER</a>.</td></tr>
880 </table>
881 </dl><dl compact><dt>
882 <b>Return values: </b><dd>
883 <table border=0 cellspacing=2 cellpadding=0>
884 <tr><td valign=top><em>DB_ERR_BADARGS</em>
885 &nbsp;</td><td>
886 An argument was invalid. </td></tr>
887 <tr><td valign=top><em>DB_ERR_BUSY</em>
888 &nbsp;</td><td>
889 The element is already in a list. </td></tr>
890 <tr><td valign=top><em>DB_ERR_WRONGTABLE</em>
891 &nbsp;</td><td>
892 <code>elem</code> is in a different list. </td></tr>
893 <tr><td valign=top><em>DB_ERR_UNUSED</em>
894 &nbsp;</td><td>
895 <code>elem</code> is not in any list. </td></tr>
896 </table>
897 </dl>    </td>
898   </tr>
899 </table>
900 <a name="a9" doxytag="ll_find.c::ll_find"></a><p>
901 <table width="100%" cellpadding="2" cellspacing="0" border="0">
902   <tr>
903     <td class="md">
904       <table cellpadding="0" cellspacing="0" border="0">
905         <tr>
906           <td nowrap valign="top"><b> 
907 unsigned long ll_find (
908           </b></td>
909           <td valign="bottom"><b>
910 <a class="el" href="group__dbprim__link.html#a0">link_head_t</a> * <em>list</em>, 
911           </b></td>
912         </tr>
913         <tr>
914           <td></td>
915           <td><b>
916 <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> ** <em>elem_p</em>, 
917           </b></td>
918         </tr>
919         <tr>
920           <td></td>
921           <td><b>
922 <a class="el" href="group__dbprim__link.html#a3">link_comp_t</a> <em>comp_func</em>, 
923           </b></td>
924         </tr>
925         <tr>
926           <td></td>
927           <td><b>
928 <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> * <em>start</em>, 
929           </b></td>
930         </tr>
931         <tr>
932           <td></td>
933           <td><b>
934 <a class="el" href="group__dbprim__key.html#a0">db_key_t</a> * <em>key</em>&nbsp;)
935           </b></td>
936         </tr>
937
938       </table>
939     </td>
940   </tr>
941 </table>
942 <table cellspacing=5 cellpadding=0 border=0>
943   <tr>
944     <td>
945       &nbsp;
946     </td>
947     <td>
948
949 <p>
950
951 <p>
952  This function iterates through a linked list looking for an element that matches the given <code>key</code>.<dl compact><dt>
953 <b>Parameters: </b><dd>
954 <table border=0 cellspacing=2 cellpadding=0>
955 <tr><td valign=top><em>list</em>
956 &nbsp;</td><td>
957 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>. </td></tr>
958 <tr><td valign=top><em>elem_p</em>
959 &nbsp;</td><td>
960 A pointer to a pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a>. This is a result parameter. <code>NULL</code> is an invalid value. </td></tr>
961 <tr><td valign=top><em>comp_func</em>
962 &nbsp;</td><td>
963 A pointer to a comparison function used to compare the key to a particular element. See the documentation for <a class="el" href="group__dbprim__link.html#a3">link_comp_t</a> for more information. </td></tr>
964 <tr><td valign=top><em>start</em>
965 &nbsp;</td><td>
966 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> describing where in the linked list to start. If <code>NULL</code> is passed, the beginning of the list will be assumed. </td></tr>
967 <tr><td valign=top><em>key</em>
968 &nbsp;</td><td>
969 A key to search for.</td></tr>
970 </table>
971 </dl><dl compact><dt>
972 <b>Return values: </b><dd>
973 <table border=0 cellspacing=2 cellpadding=0>
974 <tr><td valign=top><em>DB_ERR_BADARGS</em>
975 &nbsp;</td><td>
976 An argument was invalid. </td></tr>
977 <tr><td valign=top><em>DB_ERR_WRONGTABLE</em>
978 &nbsp;</td><td>
979 <code>start</code> is not in this linked list. </td></tr>
980 <tr><td valign=top><em>DB_ERR_NOENTRY</em>
981 &nbsp;</td><td>
982 No matching entry was found. </td></tr>
983 </table>
984 </dl>    </td>
985   </tr>
986 </table>
987 <a name="a11" doxytag="ll_flush.c::ll_flush"></a><p>
988 <table width="100%" cellpadding="2" cellspacing="0" border="0">
989   <tr>
990     <td class="md">
991       <table cellpadding="0" cellspacing="0" border="0">
992         <tr>
993           <td nowrap valign="top"><b> 
994 unsigned long ll_flush (
995           </b></td>
996           <td valign="bottom"><b>
997 <a class="el" href="group__dbprim__link.html#a0">link_head_t</a> * <em>list</em>, 
998           </b></td>
999         </tr>
1000         <tr>
1001           <td></td>
1002           <td><b>
1003 <a class="el" href="group__dbprim__link.html#a2">link_iter_t</a> <em>flush_func</em>, 
1004           </b></td>
1005         </tr>
1006         <tr>
1007           <td></td>
1008           <td><b>
1009 void * <em>extra</em>&nbsp;)
1010           </b></td>
1011         </tr>
1012
1013       </table>
1014     </td>
1015   </tr>
1016 </table>
1017 <table cellspacing=5 cellpadding=0 border=0>
1018   <tr>
1019     <td>
1020       &nbsp;
1021     </td>
1022     <td>
1023
1024 <p>
1025
1026 <p>
1027  This function flushes a linked list--that is, it removes each element from the list. If a <code>flush_func</code> is specified, it will be called on the entry after it has been removed from the list, and may safely call <code>free()</code>.<dl compact><dt>
1028 <b>Parameters: </b><dd>
1029 <table border=0 cellspacing=2 cellpadding=0>
1030 <tr><td valign=top><em>list</em>
1031 &nbsp;</td><td>
1032 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>. </td></tr>
1033 <tr><td valign=top><em>flush_func</em>
1034 &nbsp;</td><td>
1035 A pointer to a callback function used to perform user-specified actions on an element after removing it from the list. May be <code>NULL</code>. See the documentation for <a class="el" href="group__dbprim__link.html#a2">link_iter_t</a> for more information. </td></tr>
1036 <tr><td valign=top><em>extra</em>
1037 &nbsp;</td><td>
1038 A <code>void</code> pointer that will be passed to <code>flush_func</code>.</td></tr>
1039 </table>
1040 </dl><dl compact><dt>
1041 <b>Return values: </b><dd>
1042 <table border=0 cellspacing=2 cellpadding=0>
1043 <tr><td valign=top><em>DB_ERR_BADARGS</em>
1044 &nbsp;</td><td>
1045 An argument was invalid. </td></tr>
1046 </table>
1047 </dl>    </td>
1048   </tr>
1049 </table>
1050 <a name="a5" doxytag="ll_init.c::ll_init"></a><p>
1051 <table width="100%" cellpadding="2" cellspacing="0" border="0">
1052   <tr>
1053     <td class="md">
1054       <table cellpadding="0" cellspacing="0" border="0">
1055         <tr>
1056           <td nowrap valign="top"><b> 
1057 unsigned long ll_init (
1058           </b></td>
1059           <td valign="bottom"><b>
1060 <a class="el" href="group__dbprim__link.html#a0">link_head_t</a> * <em>list</em>, 
1061           </b></td>
1062         </tr>
1063         <tr>
1064           <td></td>
1065           <td><b>
1066 void * <em>extra</em>&nbsp;)
1067           </b></td>
1068         </tr>
1069
1070       </table>
1071     </td>
1072   </tr>
1073 </table>
1074 <table cellspacing=5 cellpadding=0 border=0>
1075   <tr>
1076     <td>
1077       &nbsp;
1078     </td>
1079     <td>
1080
1081 <p>
1082
1083 <p>
1084  This function dynamically initializes a linked list head.<dl compact><dt>
1085 <b>Parameters: </b><dd>
1086 <table border=0 cellspacing=2 cellpadding=0>
1087 <tr><td valign=top><em>list</em>
1088 &nbsp;</td><td>
1089 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a> to be initialized. </td></tr>
1090 <tr><td valign=top><em>extra</em>
1091 &nbsp;</td><td>
1092 A pointer to <code>void</code> containing extra pointer data associated with the linked list.</td></tr>
1093 </table>
1094 </dl><dl compact><dt>
1095 <b>Return values: </b><dd>
1096 <table border=0 cellspacing=2 cellpadding=0>
1097 <tr><td valign=top><em>DB_ERR_BADARGS</em>
1098 &nbsp;</td><td>
1099 A <code>NULL</code> pointer was passed for <code>list</code>. </td></tr>
1100 </table>
1101 </dl>    </td>
1102   </tr>
1103 </table>
1104 <a name="a10" doxytag="ll_iter.c::ll_iter"></a><p>
1105 <table width="100%" cellpadding="2" cellspacing="0" border="0">
1106   <tr>
1107     <td class="md">
1108       <table cellpadding="0" cellspacing="0" border="0">
1109         <tr>
1110           <td nowrap valign="top"><b> 
1111 unsigned long ll_iter (
1112           </b></td>
1113           <td valign="bottom"><b>
1114 <a class="el" href="group__dbprim__link.html#a0">link_head_t</a> * <em>list</em>, 
1115           </b></td>
1116         </tr>
1117         <tr>
1118           <td></td>
1119           <td><b>
1120 <a class="el" href="group__dbprim__link.html#a2">link_iter_t</a> <em>iter_func</em>, 
1121           </b></td>
1122         </tr>
1123         <tr>
1124           <td></td>
1125           <td><b>
1126 void * <em>extra</em>&nbsp;)
1127           </b></td>
1128         </tr>
1129
1130       </table>
1131     </td>
1132   </tr>
1133 </table>
1134 <table cellspacing=5 cellpadding=0 border=0>
1135   <tr>
1136     <td>
1137       &nbsp;
1138     </td>
1139     <td>
1140
1141 <p>
1142
1143 <p>
1144  This function iterates over a linked list, executing the given <code>iter_func</code> for each entry.<dl compact><dt>
1145 <b>Parameters: </b><dd>
1146 <table border=0 cellspacing=2 cellpadding=0>
1147 <tr><td valign=top><em>list</em>
1148 &nbsp;</td><td>
1149 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>. </td></tr>
1150 <tr><td valign=top><em>iter_func</em>
1151 &nbsp;</td><td>
1152 A pointer to a callback function used to perform user-specified actions on an element in a linked list. <code>NULL</code> is an invalid value. See the documentation for <a class="el" href="group__dbprim__link.html#a2">link_iter_t</a> for more information. </td></tr>
1153 <tr><td valign=top><em>extra</em>
1154 &nbsp;</td><td>
1155 A <code>void</code> pointer that will be passed to <code>iter_func</code>.</td></tr>
1156 </table>
1157 </dl><dl compact><dt>
1158 <b>Return values: </b><dd>
1159 <table border=0 cellspacing=2 cellpadding=0>
1160 <tr><td valign=top><em>DB_ERR_BADARGS</em>
1161 &nbsp;</td><td>
1162 An argument was invalid. </td></tr>
1163 </table>
1164 </dl>    </td>
1165   </tr>
1166 </table>
1167 <a name="a7" doxytag="ll_move.c::ll_move"></a><p>
1168 <table width="100%" cellpadding="2" cellspacing="0" border="0">
1169   <tr>
1170     <td class="md">
1171       <table cellpadding="0" cellspacing="0" border="0">
1172         <tr>
1173           <td nowrap valign="top"><b> 
1174 unsigned long ll_move (
1175           </b></td>
1176           <td valign="bottom"><b>
1177 <a class="el" href="group__dbprim__link.html#a0">link_head_t</a> * <em>list</em>, 
1178           </b></td>
1179         </tr>
1180         <tr>
1181           <td></td>
1182           <td><b>
1183 <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> * <em>elem</em>, 
1184           </b></td>
1185         </tr>
1186         <tr>
1187           <td></td>
1188           <td><b>
1189 <a class="el" href="group__dbprim__link.html#a4">link_loc_t</a> <em>loc</em>, 
1190           </b></td>
1191         </tr>
1192         <tr>
1193           <td></td>
1194           <td><b>
1195 <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> * <em>elem2</em>&nbsp;)
1196           </b></td>
1197         </tr>
1198
1199       </table>
1200     </td>
1201   </tr>
1202 </table>
1203 <table cellspacing=5 cellpadding=0 border=0>
1204   <tr>
1205     <td>
1206       &nbsp;
1207     </td>
1208     <td>
1209
1210 <p>
1211
1212 <p>
1213  This function moves a specified element within the linked list.<dl compact><dt>
1214 <b>Parameters: </b><dd>
1215 <table border=0 cellspacing=2 cellpadding=0>
1216 <tr><td valign=top><em>list</em>
1217 &nbsp;</td><td>
1218 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>. </td></tr>
1219 <tr><td valign=top><em>elem</em>
1220 &nbsp;</td><td>
1221 A pointer to the <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> describing the element to be moved. </td></tr>
1222 <tr><td valign=top><em>loc</em>
1223 &nbsp;</td><td>
1224 A <a class="el" href="group__dbprim__link.html#a4">link_loc_t</a> indicating where the entry should be moved to. </td></tr>
1225 <tr><td valign=top><em>elem2</em>
1226 &nbsp;</td><td>
1227 A pointer to a <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> describing another element in the list if <code>loc</code> is <a class="el" href="group__dbprim__link.html#a26a100">LINK_LOC_BEFORE</a> or <a class="el" href="group__dbprim__link.html#a26a101">LINK_LOC_AFTER</a>.</td></tr>
1228 </table>
1229 </dl><dl compact><dt>
1230 <b>Return values: </b><dd>
1231 <table border=0 cellspacing=2 cellpadding=0>
1232 <tr><td valign=top><em>DB_ERR_BADARGS</em>
1233 &nbsp;</td><td>
1234 An argument was invalid. </td></tr>
1235 <tr><td valign=top><em>DB_ERR_BUSY</em>
1236 &nbsp;</td><td>
1237 <code>elem</code> and <code>elem2</code> are the same element. </td></tr>
1238 <tr><td valign=top><em>DB_ERR_WRONGTABLE</em>
1239 &nbsp;</td><td>
1240 <code>elem</code> or <code>elem2</code> are in a different list. </td></tr>
1241 <tr><td valign=top><em>DB_ERR_UNUSED</em>
1242 &nbsp;</td><td>
1243 <code>elem</code> or <code>elem2</code> are not in any list. </td></tr>
1244 </table>
1245 </dl>    </td>
1246   </tr>
1247 </table>
1248 <a name="a8" doxytag="ll_remove.c::ll_remove"></a><p>
1249 <table width="100%" cellpadding="2" cellspacing="0" border="0">
1250   <tr>
1251     <td class="md">
1252       <table cellpadding="0" cellspacing="0" border="0">
1253         <tr>
1254           <td nowrap valign="top"><b> 
1255 unsigned long ll_remove (
1256           </b></td>
1257           <td valign="bottom"><b>
1258 <a class="el" href="group__dbprim__link.html#a0">link_head_t</a> * <em>list</em>, 
1259           </b></td>
1260         </tr>
1261         <tr>
1262           <td></td>
1263           <td><b>
1264 <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> * <em>elem</em>&nbsp;)
1265           </b></td>
1266         </tr>
1267
1268       </table>
1269     </td>
1270   </tr>
1271 </table>
1272 <table cellspacing=5 cellpadding=0 border=0>
1273   <tr>
1274     <td>
1275       &nbsp;
1276     </td>
1277     <td>
1278
1279 <p>
1280
1281 <p>
1282  This function removes a specified element from a linked list.<dl compact><dt>
1283 <b>Parameters: </b><dd>
1284 <table border=0 cellspacing=2 cellpadding=0>
1285 <tr><td valign=top><em>list</em>
1286 &nbsp;</td><td>
1287 A pointer to a <a class="el" href="group__dbprim__link.html#a0">link_head_t</a>. </td></tr>
1288 <tr><td valign=top><em>elem</em>
1289 &nbsp;</td><td>
1290 A pointer to the <a class="el" href="group__dbprim__link.html#a1">link_elem_t</a> describing the element to be removed.</td></tr>
1291 </table>
1292 </dl><dl compact><dt>
1293 <b>Return values: </b><dd>
1294 <table border=0 cellspacing=2 cellpadding=0>
1295 <tr><td valign=top><em>DB_ERR_BADARGS</em>
1296 &nbsp;</td><td>
1297 An argument was invalid. </td></tr>
1298 <tr><td valign=top><em>DB_ERR_UNUSED</em>
1299 &nbsp;</td><td>
1300 <code>elem</code> is not in a linked list. </td></tr>
1301 <tr><td valign=top><em>DB_ERR_WRONGTABLE</em>
1302 &nbsp;</td><td>
1303 <code>elem</code> is not in this linked list. </td></tr>
1304 </table>
1305 </dl>    </td>
1306   </tr>
1307 </table>
1308 <hr><address><small>Generated at Thu Mar 6 21:23:10 2003 for dbprim by
1309 <a href="http://www.doxygen.org/index.html">
1310 <img src="doxygen.gif" alt="doxygen" align="middle" border=0 
1311 width=110 height=53></a>1.2.8.1 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
1312  &copy;&nbsp;1997-2001</small></address>
1313 </body>
1314 </html>