45569a76181761917d5aa8f3738856b52f2e4398
[platform/upstream/json-c.git] / doc / html / linkhash_8h.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3 <title>json-c: linkhash.h File Reference</title>
4 <link href="tabs.css" rel="stylesheet" type="text/css">
5 <link href="doxygen.css" rel="stylesheet" type="text/css">
6 </head><body>
7 <!-- Generated by Doxygen 1.5.8 -->
8 <div class="navigation" id="top">
9   <div class="tabs">
10     <ul>
11       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
12       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13       <li class="current"><a href="files.html"><span>Files</span></a></li>
14     </ul>
15   </div>
16   <div class="tabs">
17     <ul>
18       <li><a href="files.html"><span>File&nbsp;List</span></a></li>
19       <li><a href="globals.html"><span>Globals</span></a></li>
20     </ul>
21   </div>
22 </div>
23 <div class="contents">
24 <h1>linkhash.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
25 <tr><td></td></tr>
26 <tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
27 <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html">lh_entry</a></td></tr>
28
29 <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html">lh_table</a></td></tr>
30
31 <tr><td colspan="2"><br><h2>Defines</h2></td></tr>
32 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#032f1bd115df254dda325437203ce5fb">LH_PRIME</a>&nbsp;&nbsp;&nbsp;0x9e370001UL</td></tr>
33
34 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#93fad7f8ae44575dc89c9567859972d2">LH_EMPTY</a>&nbsp;&nbsp;&nbsp;(void*)-1</td></tr>
35
36 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#c69428f2de0a6fb080b6fb373d506aa7">LH_FREED</a>&nbsp;&nbsp;&nbsp;(void*)-2</td></tr>
37
38 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#d7dd67da915065dce2c6f44cb03e2d82">lh_foreach</a>(table, entry)&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry; entry = entry-&gt;next)</td></tr>
39
40 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#bcbb0df08b4976d0649b826b6bacfca1">lh_foreach_safe</a>(table, entry, tmp)&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry &amp;&amp; ((tmp = entry-&gt;next) || 1); entry = tmp)</td></tr>
41
42 <tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
43 <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> )(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
44
45 <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned long(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> )(const void *k)</td></tr>
46
47 <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> )(const void *k1, const void *k2)</td></tr>
48
49 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
50 <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#2e560f0d3e5a20f6b0bfa4049737db23">lh_ptr_hash</a> (const void *k)</td></tr>
51
52 <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#6ce3cb97560072c40f5caeaba85f756a">lh_ptr_equal</a> (const void *k1, const void *k2)</td></tr>
53
54 <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#1fcf495b9c4ce169630cb31f638b8435">lh_char_hash</a> (const void *k)</td></tr>
55
56 <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#e4e9f21fb1a556c7a50c6b7ea61f2079">lh_char_equal</a> (const void *k1, const void *k2)</td></tr>
57
58 <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#c3ba464ac43c083397b1f1d34f2ddf55">lh_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn, <a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *hash_fn, <a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *equal_fn)</td></tr>
59
60 <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#0aaf11e11ee5b0925279a52eab04bc38">lh_kchar_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>
61
62 <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#705513954267a16cc1d40a284a7c441e">lh_kptr_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>
63
64 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#81653acf740cf8c9fe672e6cd16df0cf">lh_table_free</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t)</td></tr>
65
66 <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#22b897763cc34a98c21c7fe82d151004">lh_table_insert</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, void *k, const void *v)</td></tr>
67
68 <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#d3b6ca2d967a6c3021ee6c39e014a918">lh_table_lookup_entry</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
69
70 <tr><td class="memItemLeft" nowrap align="right" valign="top">const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#49c27f18a174eaf126d1b7953df13cb1">lh_table_lookup</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
71
72 <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#e5885a71c3457190fb1dc2d6e20dde3b">lh_table_delete_entry</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
73
74 <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#2fed2c78f70d229edb2d00775ffe593c">lh_table_delete</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
75
76 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#1294160fa0e80cee04cd745a401f43a4">lh_abort</a> (const char *msg,...)</td></tr>
77
78 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#5322eccf3394af7dc1ebb22af8f8c562">lh_table_resize</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, int new_size)</td></tr>
79
80 </table>
81 <hr><h2>Define Documentation</h2>
82 <a class="anchor" name="93fad7f8ae44575dc89c9567859972d2"></a><!-- doxytag: member="linkhash.h::LH_EMPTY" ref="93fad7f8ae44575dc89c9567859972d2" args="" -->
83 <div class="memitem">
84 <div class="memproto">
85       <table class="memname">
86         <tr>
87           <td class="memname">#define LH_EMPTY&nbsp;&nbsp;&nbsp;(void*)-1          </td>
88         </tr>
89       </table>
90 </div>
91 <div class="memdoc">
92
93 <p>
94 sentinel pointer value for empty slots 
95 </div>
96 </div><p>
97 <a class="anchor" name="d7dd67da915065dce2c6f44cb03e2d82"></a><!-- doxytag: member="linkhash.h::lh_foreach" ref="d7dd67da915065dce2c6f44cb03e2d82" args="(table, entry)" -->
98 <div class="memitem">
99 <div class="memproto">
100       <table class="memname">
101         <tr>
102           <td class="memname">#define lh_foreach          </td>
103           <td>(</td>
104           <td class="paramtype">table,         <tr>
105           <td class="paramkey"></td>
106           <td></td>
107           <td class="paramtype">entry&nbsp;</td>
108           <td class="paramname">          </td>
109           <td>&nbsp;)&nbsp;</td>
110           <td>&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry; entry = entry-&gt;next)</td>
111         </tr>
112       </table>
113 </div>
114 <div class="memdoc">
115
116 <p>
117 Convenience list iterator. 
118 </div>
119 </div><p>
120 <a class="anchor" name="bcbb0df08b4976d0649b826b6bacfca1"></a><!-- doxytag: member="linkhash.h::lh_foreach_safe" ref="bcbb0df08b4976d0649b826b6bacfca1" args="(table, entry, tmp)" -->
121 <div class="memitem">
122 <div class="memproto">
123       <table class="memname">
124         <tr>
125           <td class="memname">#define lh_foreach_safe          </td>
126           <td>(</td>
127           <td class="paramtype">table,         <tr>
128           <td class="paramkey"></td>
129           <td></td>
130           <td class="paramtype">entry,         <tr>
131           <td class="paramkey"></td>
132           <td></td>
133           <td class="paramtype">tmp&nbsp;</td>
134           <td class="paramname">          </td>
135           <td>&nbsp;)&nbsp;</td>
136           <td>&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry &amp;&amp; ((tmp = entry-&gt;next) || 1); entry = tmp)</td>
137         </tr>
138       </table>
139 </div>
140 <div class="memdoc">
141
142 <p>
143 lh_foreach_safe allows calling of deletion routine while iterating. 
144 </div>
145 </div><p>
146 <a class="anchor" name="c69428f2de0a6fb080b6fb373d506aa7"></a><!-- doxytag: member="linkhash.h::LH_FREED" ref="c69428f2de0a6fb080b6fb373d506aa7" args="" -->
147 <div class="memitem">
148 <div class="memproto">
149       <table class="memname">
150         <tr>
151           <td class="memname">#define LH_FREED&nbsp;&nbsp;&nbsp;(void*)-2          </td>
152         </tr>
153       </table>
154 </div>
155 <div class="memdoc">
156
157 <p>
158 sentinel pointer value for freed slots 
159 </div>
160 </div><p>
161 <a class="anchor" name="032f1bd115df254dda325437203ce5fb"></a><!-- doxytag: member="linkhash.h::LH_PRIME" ref="032f1bd115df254dda325437203ce5fb" args="" -->
162 <div class="memitem">
163 <div class="memproto">
164       <table class="memname">
165         <tr>
166           <td class="memname">#define LH_PRIME&nbsp;&nbsp;&nbsp;0x9e370001UL          </td>
167         </tr>
168       </table>
169 </div>
170 <div class="memdoc">
171
172 <p>
173 golden prime used in hash functions 
174 </div>
175 </div><p>
176 <hr><h2>Typedef Documentation</h2>
177 <a class="anchor" name="671553d0ee3c2a123190ba0f8ed2b635"></a><!-- doxytag: member="linkhash.h::lh_entry_free_fn" ref="671553d0ee3c2a123190ba0f8ed2b635" args=")(struct lh_entry *e)" -->
178 <div class="memitem">
179 <div class="memproto">
180       <table class="memname">
181         <tr>
182           <td class="memname">typedef void( <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a>)(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)          </td>
183         </tr>
184       </table>
185 </div>
186 <div class="memdoc">
187
188 <p>
189 callback function prototypes 
190 </div>
191 </div><p>
192 <a class="anchor" name="91fd85fc81b0c7c83c62f00e84729091"></a><!-- doxytag: member="linkhash.h::lh_equal_fn" ref="91fd85fc81b0c7c83c62f00e84729091" args=")(const void *k1, const void *k2)" -->
193 <div class="memitem">
194 <div class="memproto">
195       <table class="memname">
196         <tr>
197           <td class="memname">typedef int( <a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a>)(const void *k1, const void *k2)          </td>
198         </tr>
199       </table>
200 </div>
201 <div class="memdoc">
202
203 <p>
204 callback function prototypes 
205 </div>
206 </div><p>
207 <a class="anchor" name="38bae27995dcfb6ee3fb109a9be229b2"></a><!-- doxytag: member="linkhash.h::lh_hash_fn" ref="38bae27995dcfb6ee3fb109a9be229b2" args=")(const void *k)" -->
208 <div class="memitem">
209 <div class="memproto">
210       <table class="memname">
211         <tr>
212           <td class="memname">typedef unsigned long( <a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a>)(const void *k)          </td>
213         </tr>
214       </table>
215 </div>
216 <div class="memdoc">
217
218 <p>
219 callback function prototypes 
220 </div>
221 </div><p>
222 <hr><h2>Function Documentation</h2>
223 <a class="anchor" name="1294160fa0e80cee04cd745a401f43a4"></a><!-- doxytag: member="linkhash.h::lh_abort" ref="1294160fa0e80cee04cd745a401f43a4" args="(const char *msg,...)" -->
224 <div class="memitem">
225 <div class="memproto">
226       <table class="memname">
227         <tr>
228           <td class="memname">void lh_abort           </td>
229           <td>(</td>
230           <td class="paramtype">const char *&nbsp;</td>
231           <td class="paramname"> <em>msg</em>, </td>
232         </tr>
233         <tr>
234           <td class="paramkey"></td>
235           <td></td>
236           <td class="paramtype">&nbsp;</td>
237           <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
238         </tr>
239         <tr>
240           <td></td>
241           <td>)</td>
242           <td></td><td></td><td></td>
243         </tr>
244       </table>
245 </div>
246 <div class="memdoc">
247
248 <p>
249
250 </div>
251 </div><p>
252 <a class="anchor" name="e4e9f21fb1a556c7a50c6b7ea61f2079"></a><!-- doxytag: member="linkhash.h::lh_char_equal" ref="e4e9f21fb1a556c7a50c6b7ea61f2079" args="(const void *k1, const void *k2)" -->
253 <div class="memitem">
254 <div class="memproto">
255       <table class="memname">
256         <tr>
257           <td class="memname">int lh_char_equal           </td>
258           <td>(</td>
259           <td class="paramtype">const void *&nbsp;</td>
260           <td class="paramname"> <em>k1</em>, </td>
261         </tr>
262         <tr>
263           <td class="paramkey"></td>
264           <td></td>
265           <td class="paramtype">const void *&nbsp;</td>
266           <td class="paramname"> <em>k2</em></td><td>&nbsp;</td>
267         </tr>
268         <tr>
269           <td></td>
270           <td>)</td>
271           <td></td><td></td><td></td>
272         </tr>
273       </table>
274 </div>
275 <div class="memdoc">
276
277 <p>
278
279 </div>
280 </div><p>
281 <a class="anchor" name="1fcf495b9c4ce169630cb31f638b8435"></a><!-- doxytag: member="linkhash.h::lh_char_hash" ref="1fcf495b9c4ce169630cb31f638b8435" args="(const void *k)" -->
282 <div class="memitem">
283 <div class="memproto">
284       <table class="memname">
285         <tr>
286           <td class="memname">unsigned long lh_char_hash           </td>
287           <td>(</td>
288           <td class="paramtype">const void *&nbsp;</td>
289           <td class="paramname"> <em>k</em>          </td>
290           <td>&nbsp;)&nbsp;</td>
291           <td></td>
292         </tr>
293       </table>
294 </div>
295 <div class="memdoc">
296
297 <p>
298
299 </div>
300 </div><p>
301 <a class="anchor" name="0aaf11e11ee5b0925279a52eab04bc38"></a><!-- doxytag: member="linkhash.h::lh_kchar_table_new" ref="0aaf11e11ee5b0925279a52eab04bc38" args="(int size, const char *name, lh_entry_free_fn *free_fn)" -->
302 <div class="memitem">
303 <div class="memproto">
304       <table class="memname">
305         <tr>
306           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kchar_table_new           </td>
307           <td>(</td>
308           <td class="paramtype">int&nbsp;</td>
309           <td class="paramname"> <em>size</em>, </td>
310         </tr>
311         <tr>
312           <td class="paramkey"></td>
313           <td></td>
314           <td class="paramtype">const char *&nbsp;</td>
315           <td class="paramname"> <em>name</em>, </td>
316         </tr>
317         <tr>
318           <td class="paramkey"></td>
319           <td></td>
320           <td class="paramtype"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
321           <td class="paramname"> <em>free_fn</em></td><td>&nbsp;</td>
322         </tr>
323         <tr>
324           <td></td>
325           <td>)</td>
326           <td></td><td></td><td><code> [read]</code></td>
327         </tr>
328       </table>
329 </div>
330 <div class="memdoc">
331
332 <p>
333 Convenience function to create a new linkhash table with char keys. <dl compact><dt><b>Parameters:</b></dt><dd>
334   <table border="0" cellspacing="2" cellpadding="0">
335     <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>initial table size. </td></tr>
336     <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>table name. </td></tr>
337     <tr><td valign="top"></td><td valign="top"><em>free_fn</em>&nbsp;</td><td>callback function used to free memory for entries. </td></tr>
338   </table>
339 </dl>
340 <dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
341
342 </div>
343 </div><p>
344 <a class="anchor" name="705513954267a16cc1d40a284a7c441e"></a><!-- doxytag: member="linkhash.h::lh_kptr_table_new" ref="705513954267a16cc1d40a284a7c441e" args="(int size, const char *name, lh_entry_free_fn *free_fn)" -->
345 <div class="memitem">
346 <div class="memproto">
347       <table class="memname">
348         <tr>
349           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kptr_table_new           </td>
350           <td>(</td>
351           <td class="paramtype">int&nbsp;</td>
352           <td class="paramname"> <em>size</em>, </td>
353         </tr>
354         <tr>
355           <td class="paramkey"></td>
356           <td></td>
357           <td class="paramtype">const char *&nbsp;</td>
358           <td class="paramname"> <em>name</em>, </td>
359         </tr>
360         <tr>
361           <td class="paramkey"></td>
362           <td></td>
363           <td class="paramtype"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
364           <td class="paramname"> <em>free_fn</em></td><td>&nbsp;</td>
365         </tr>
366         <tr>
367           <td></td>
368           <td>)</td>
369           <td></td><td></td><td><code> [read]</code></td>
370         </tr>
371       </table>
372 </div>
373 <div class="memdoc">
374
375 <p>
376 Convenience function to create a new linkhash table with ptr keys. <dl compact><dt><b>Parameters:</b></dt><dd>
377   <table border="0" cellspacing="2" cellpadding="0">
378     <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>initial table size. </td></tr>
379     <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>table name. </td></tr>
380     <tr><td valign="top"></td><td valign="top"><em>free_fn</em>&nbsp;</td><td>callback function used to free memory for entries. </td></tr>
381   </table>
382 </dl>
383 <dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
384
385 </div>
386 </div><p>
387 <a class="anchor" name="6ce3cb97560072c40f5caeaba85f756a"></a><!-- doxytag: member="linkhash.h::lh_ptr_equal" ref="6ce3cb97560072c40f5caeaba85f756a" args="(const void *k1, const void *k2)" -->
388 <div class="memitem">
389 <div class="memproto">
390       <table class="memname">
391         <tr>
392           <td class="memname">int lh_ptr_equal           </td>
393           <td>(</td>
394           <td class="paramtype">const void *&nbsp;</td>
395           <td class="paramname"> <em>k1</em>, </td>
396         </tr>
397         <tr>
398           <td class="paramkey"></td>
399           <td></td>
400           <td class="paramtype">const void *&nbsp;</td>
401           <td class="paramname"> <em>k2</em></td><td>&nbsp;</td>
402         </tr>
403         <tr>
404           <td></td>
405           <td>)</td>
406           <td></td><td></td><td></td>
407         </tr>
408       </table>
409 </div>
410 <div class="memdoc">
411
412 <p>
413
414 </div>
415 </div><p>
416 <a class="anchor" name="2e560f0d3e5a20f6b0bfa4049737db23"></a><!-- doxytag: member="linkhash.h::lh_ptr_hash" ref="2e560f0d3e5a20f6b0bfa4049737db23" args="(const void *k)" -->
417 <div class="memitem">
418 <div class="memproto">
419       <table class="memname">
420         <tr>
421           <td class="memname">unsigned long lh_ptr_hash           </td>
422           <td>(</td>
423           <td class="paramtype">const void *&nbsp;</td>
424           <td class="paramname"> <em>k</em>          </td>
425           <td>&nbsp;)&nbsp;</td>
426           <td></td>
427         </tr>
428       </table>
429 </div>
430 <div class="memdoc">
431
432 <p>
433 Pre-defined hash and equality functions 
434 </div>
435 </div><p>
436 <a class="anchor" name="2fed2c78f70d229edb2d00775ffe593c"></a><!-- doxytag: member="linkhash.h::lh_table_delete" ref="2fed2c78f70d229edb2d00775ffe593c" args="(struct lh_table *t, const void *k)" -->
437 <div class="memitem">
438 <div class="memproto">
439       <table class="memname">
440         <tr>
441           <td class="memname">int lh_table_delete           </td>
442           <td>(</td>
443           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
444           <td class="paramname"> <em>t</em>, </td>
445         </tr>
446         <tr>
447           <td class="paramkey"></td>
448           <td></td>
449           <td class="paramtype">const void *&nbsp;</td>
450           <td class="paramname"> <em>k</em></td><td>&nbsp;</td>
451         </tr>
452         <tr>
453           <td></td>
454           <td>)</td>
455           <td></td><td></td><td></td>
456         </tr>
457       </table>
458 </div>
459 <div class="memdoc">
460
461 <p>
462 Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. <dl compact><dt><b>Parameters:</b></dt><dd>
463   <table border="0" cellspacing="2" cellpadding="0">
464     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to delete from. </td></tr>
465     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to delete. </td></tr>
466   </table>
467 </dl>
468 <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if the item was deleted. <p>
469 -1 if it was not found. </dd></dl>
470
471 </div>
472 </div><p>
473 <a class="anchor" name="e5885a71c3457190fb1dc2d6e20dde3b"></a><!-- doxytag: member="linkhash.h::lh_table_delete_entry" ref="e5885a71c3457190fb1dc2d6e20dde3b" args="(struct lh_table *t, struct lh_entry *e)" -->
474 <div class="memitem">
475 <div class="memproto">
476       <table class="memname">
477         <tr>
478           <td class="memname">int lh_table_delete_entry           </td>
479           <td>(</td>
480           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
481           <td class="paramname"> <em>t</em>, </td>
482         </tr>
483         <tr>
484           <td class="paramkey"></td>
485           <td></td>
486           <td class="paramtype">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td>
487           <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
488         </tr>
489         <tr>
490           <td></td>
491           <td>)</td>
492           <td></td><td></td><td></td>
493         </tr>
494       </table>
495 </div>
496 <div class="memdoc">
497
498 <p>
499 Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. <dl compact><dt><b>Parameters:</b></dt><dd>
500   <table border="0" cellspacing="2" cellpadding="0">
501     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to delete from. </td></tr>
502     <tr><td valign="top"></td><td valign="top"><em>e</em>&nbsp;</td><td>a pointer to the entry to delete. </td></tr>
503   </table>
504 </dl>
505 <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if the item was deleted. <p>
506 -1 if it was not found. </dd></dl>
507
508 </div>
509 </div><p>
510 <a class="anchor" name="81653acf740cf8c9fe672e6cd16df0cf"></a><!-- doxytag: member="linkhash.h::lh_table_free" ref="81653acf740cf8c9fe672e6cd16df0cf" args="(struct lh_table *t)" -->
511 <div class="memitem">
512 <div class="memproto">
513       <table class="memname">
514         <tr>
515           <td class="memname">void lh_table_free           </td>
516           <td>(</td>
517           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
518           <td class="paramname"> <em>t</em>          </td>
519           <td>&nbsp;)&nbsp;</td>
520           <td></td>
521         </tr>
522       </table>
523 </div>
524 <div class="memdoc">
525
526 <p>
527 Free a linkhash table. If a callback free function is provided then it is called for all entries in the table. <dl compact><dt><b>Parameters:</b></dt><dd>
528   <table border="0" cellspacing="2" cellpadding="0">
529     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>table to free. </td></tr>
530   </table>
531 </dl>
532
533 </div>
534 </div><p>
535 <a class="anchor" name="22b897763cc34a98c21c7fe82d151004"></a><!-- doxytag: member="linkhash.h::lh_table_insert" ref="22b897763cc34a98c21c7fe82d151004" args="(struct lh_table *t, void *k, const void *v)" -->
536 <div class="memitem">
537 <div class="memproto">
538       <table class="memname">
539         <tr>
540           <td class="memname">int lh_table_insert           </td>
541           <td>(</td>
542           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
543           <td class="paramname"> <em>t</em>, </td>
544         </tr>
545         <tr>
546           <td class="paramkey"></td>
547           <td></td>
548           <td class="paramtype">void *&nbsp;</td>
549           <td class="paramname"> <em>k</em>, </td>
550         </tr>
551         <tr>
552           <td class="paramkey"></td>
553           <td></td>
554           <td class="paramtype">const void *&nbsp;</td>
555           <td class="paramname"> <em>v</em></td><td>&nbsp;</td>
556         </tr>
557         <tr>
558           <td></td>
559           <td>)</td>
560           <td></td><td></td><td></td>
561         </tr>
562       </table>
563 </div>
564 <div class="memdoc">
565
566 <p>
567 Insert a record into the table. <dl compact><dt><b>Parameters:</b></dt><dd>
568   <table border="0" cellspacing="2" cellpadding="0">
569     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to insert into. </td></tr>
570     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to insert. </td></tr>
571     <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>a pointer to the value to insert. </td></tr>
572   </table>
573 </dl>
574
575 </div>
576 </div><p>
577 <a class="anchor" name="49c27f18a174eaf126d1b7953df13cb1"></a><!-- doxytag: member="linkhash.h::lh_table_lookup" ref="49c27f18a174eaf126d1b7953df13cb1" args="(struct lh_table *t, const void *k)" -->
578 <div class="memitem">
579 <div class="memproto">
580       <table class="memname">
581         <tr>
582           <td class="memname">const void* lh_table_lookup           </td>
583           <td>(</td>
584           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
585           <td class="paramname"> <em>t</em>, </td>
586         </tr>
587         <tr>
588           <td class="paramkey"></td>
589           <td></td>
590           <td class="paramtype">const void *&nbsp;</td>
591           <td class="paramname"> <em>k</em></td><td>&nbsp;</td>
592         </tr>
593         <tr>
594           <td></td>
595           <td>)</td>
596           <td></td><td></td><td></td>
597         </tr>
598       </table>
599 </div>
600 <div class="memdoc">
601
602 <p>
603 Lookup a record into the table <dl compact><dt><b>Parameters:</b></dt><dd>
604   <table border="0" cellspacing="2" cellpadding="0">
605     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to lookup </td></tr>
606     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to lookup </td></tr>
607   </table>
608 </dl>
609 <dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the found value or NULL if it does not exist. </dd></dl>
610
611 </div>
612 </div><p>
613 <a class="anchor" name="d3b6ca2d967a6c3021ee6c39e014a918"></a><!-- doxytag: member="linkhash.h::lh_table_lookup_entry" ref="d3b6ca2d967a6c3021ee6c39e014a918" args="(struct lh_table *t, const void *k)" -->
614 <div class="memitem">
615 <div class="memproto">
616       <table class="memname">
617         <tr>
618           <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_lookup_entry           </td>
619           <td>(</td>
620           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
621           <td class="paramname"> <em>t</em>, </td>
622         </tr>
623         <tr>
624           <td class="paramkey"></td>
625           <td></td>
626           <td class="paramtype">const void *&nbsp;</td>
627           <td class="paramname"> <em>k</em></td><td>&nbsp;</td>
628         </tr>
629         <tr>
630           <td></td>
631           <td>)</td>
632           <td></td><td></td><td><code> [read]</code></td>
633         </tr>
634       </table>
635 </div>
636 <div class="memdoc">
637
638 <p>
639 Lookup a record into the table. <dl compact><dt><b>Parameters:</b></dt><dd>
640   <table border="0" cellspacing="2" cellpadding="0">
641     <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to lookup </td></tr>
642     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to lookup </td></tr>
643   </table>
644 </dl>
645 <dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the record structure of the value or NULL if it does not exist. </dd></dl>
646
647 </div>
648 </div><p>
649 <a class="anchor" name="c3ba464ac43c083397b1f1d34f2ddf55"></a><!-- doxytag: member="linkhash.h::lh_table_new" ref="c3ba464ac43c083397b1f1d34f2ddf55" args="(int size, const char *name, lh_entry_free_fn *free_fn, lh_hash_fn *hash_fn, lh_equal_fn *equal_fn)" -->
650 <div class="memitem">
651 <div class="memproto">
652       <table class="memname">
653         <tr>
654           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_table_new           </td>
655           <td>(</td>
656           <td class="paramtype">int&nbsp;</td>
657           <td class="paramname"> <em>size</em>, </td>
658         </tr>
659         <tr>
660           <td class="paramkey"></td>
661           <td></td>
662           <td class="paramtype">const char *&nbsp;</td>
663           <td class="paramname"> <em>name</em>, </td>
664         </tr>
665         <tr>
666           <td class="paramkey"></td>
667           <td></td>
668           <td class="paramtype"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
669           <td class="paramname"> <em>free_fn</em>, </td>
670         </tr>
671         <tr>
672           <td class="paramkey"></td>
673           <td></td>
674           <td class="paramtype"><a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *&nbsp;</td>
675           <td class="paramname"> <em>hash_fn</em>, </td>
676         </tr>
677         <tr>
678           <td class="paramkey"></td>
679           <td></td>
680           <td class="paramtype"><a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *&nbsp;</td>
681           <td class="paramname"> <em>equal_fn</em></td><td>&nbsp;</td>
682         </tr>
683         <tr>
684           <td></td>
685           <td>)</td>
686           <td></td><td></td><td><code> [read]</code></td>
687         </tr>
688       </table>
689 </div>
690 <div class="memdoc">
691
692 <p>
693 Create a new linkhash table. <dl compact><dt><b>Parameters:</b></dt><dd>
694   <table border="0" cellspacing="2" cellpadding="0">
695     <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>initial table size. The table is automatically resized although this incurs a performance penalty. </td></tr>
696     <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the table name. </td></tr>
697     <tr><td valign="top"></td><td valign="top"><em>free_fn</em>&nbsp;</td><td>callback function used to free memory for entries when lh_table_free or lh_table_delete is called. If NULL is provided, then memory for keys and values must be freed by the caller. </td></tr>
698     <tr><td valign="top"></td><td valign="top"><em>hash_fn</em>&nbsp;</td><td>function used to hash keys. 2 standard ones are defined: lh_ptr_hash and lh_char_hash for hashing pointer values and C strings respectively. </td></tr>
699     <tr><td valign="top"></td><td valign="top"><em>equal_fn</em>&nbsp;</td><td>comparison function to compare keys. 2 standard ones defined: lh_ptr_hash and lh_char_hash for comparing pointer values and C strings respectively. </td></tr>
700   </table>
701 </dl>
702 <dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
703
704 </div>
705 </div><p>
706 <a class="anchor" name="5322eccf3394af7dc1ebb22af8f8c562"></a><!-- doxytag: member="linkhash.h::lh_table_resize" ref="5322eccf3394af7dc1ebb22af8f8c562" args="(struct lh_table *t, int new_size)" -->
707 <div class="memitem">
708 <div class="memproto">
709       <table class="memname">
710         <tr>
711           <td class="memname">void lh_table_resize           </td>
712           <td>(</td>
713           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
714           <td class="paramname"> <em>t</em>, </td>
715         </tr>
716         <tr>
717           <td class="paramkey"></td>
718           <td></td>
719           <td class="paramtype">int&nbsp;</td>
720           <td class="paramname"> <em>new_size</em></td><td>&nbsp;</td>
721         </tr>
722         <tr>
723           <td></td>
724           <td>)</td>
725           <td></td><td></td><td></td>
726         </tr>
727       </table>
728 </div>
729 <div class="memdoc">
730
731 <p>
732
733 </div>
734 </div><p>
735 </div>
736 <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
737 <a href="http://www.doxygen.org/index.html">
738 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
739 </body>
740 </html>