1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <title>json-c: linkhash.h File Reference</title>
6 <link href="tabs.css" rel="stylesheet" type="text/css"/>
7 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
10 <!-- Generated by Doxygen 1.6.3 -->
11 <div class="navigation" id="top">
14 <li><a href="index.html"><span>Main Page</span></a></li>
15 <li><a href="pages.html"><span>Related Pages</span></a></li>
16 <li><a href="annotated.html"><span>Data Structures</span></a></li>
17 <li class="current"><a href="files.html"><span>Files</span></a></li>
22 <li><a href="files.html"><span>File List</span></a></li>
23 <li><a href="globals.html"><span>Globals</span></a></li>
27 <div class="contents">
28 <h1>linkhash.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
29 <tr><td colspan="2"><h2>Data Structures</h2></td></tr>
30 <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html">lh_entry</a></td></tr>
31 <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html">lh_table</a></td></tr>
32 <tr><td colspan="2"><h2>Defines</h2></td></tr>
33 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a032f1bd115df254dda325437203ce5fb">LH_PRIME</a> 0x9e370001UL</td></tr>
34 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a66b61772c29d85eb52b697e0b0dc0aaf">LH_LOAD_FACTOR</a> 0.66</td></tr>
35 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a93fad7f8ae44575dc89c9567859972d2">LH_EMPTY</a> (void*)-1</td></tr>
36 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac69428f2de0a6fb080b6fb373d506aa7">LH_FREED</a> (void*)-2</td></tr>
37 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ad7dd67da915065dce2c6f44cb03e2d82">lh_foreach</a>(table, entry) for(entry = table->head; entry; entry = entry->next)</td></tr>
38 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#abcbb0df08b4976d0649b826b6bacfca1">lh_foreach_safe</a>(table, entry, tmp) for(entry = table->head; entry && ((tmp = entry->next) || 1); entry = tmp)</td></tr>
39 <tr><td colspan="2"><h2>Typedefs</h2></td></tr>
40 <tr><td class="memItemLeft" align="right" valign="top">typedef void( </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> )(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
41 <tr><td class="memItemLeft" align="right" valign="top">typedef unsigned long( </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> )(const void *k)</td></tr>
42 <tr><td class="memItemLeft" align="right" valign="top">typedef int( </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> )(const void *k1, const void *k2)</td></tr>
43 <tr><td colspan="2"><h2>Functions</h2></td></tr>
44 <tr><td class="memItemLeft" align="right" valign="top">unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a2e560f0d3e5a20f6b0bfa4049737db23">lh_ptr_hash</a> (const void *k)</td></tr>
45 <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a6ce3cb97560072c40f5caeaba85f756a">lh_ptr_equal</a> (const void *k1, const void *k2)</td></tr>
46 <tr><td class="memItemLeft" align="right" valign="top">unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a1fcf495b9c4ce169630cb31f638b8435">lh_char_hash</a> (const void *k)</td></tr>
47 <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ae4e9f21fb1a556c7a50c6b7ea61f2079">lh_char_equal</a> (const void *k1, const void *k2)</td></tr>
48 <tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac3ba464ac43c083397b1f1d34f2ddf55">lh_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn, <a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *hash_fn, <a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *equal_fn)</td></tr>
49 <tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a0aaf11e11ee5b0925279a52eab04bc38">lh_kchar_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>
50 <tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a705513954267a16cc1d40a284a7c441e">lh_kptr_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>
51 <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a81653acf740cf8c9fe672e6cd16df0cf">lh_table_free</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t)</td></tr>
52 <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a22b897763cc34a98c21c7fe82d151004">lh_table_insert</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, void *k, const void *v)</td></tr>
53 <tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ad3b6ca2d967a6c3021ee6c39e014a918">lh_table_lookup_entry</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
54 <tr><td class="memItemLeft" align="right" valign="top">const void * </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a49c27f18a174eaf126d1b7953df13cb1">lh_table_lookup</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
55 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a81c270bb0dd9d5c8a3e7ae20bc4d67f3">lh_table_lookup_ex</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k, void **v)</td></tr>
56 <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ae5885a71c3457190fb1dc2d6e20dde3b">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>
57 <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a2fed2c78f70d229edb2d00775ffe593c">lh_table_delete</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
58 <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a1294160fa0e80cee04cd745a401f43a4">lh_abort</a> (const char *msg,...)</td></tr>
59 <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a5322eccf3394af7dc1ebb22af8f8c562">lh_table_resize</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, int new_size)</td></tr>
61 <hr/><h2>Define Documentation</h2>
62 <a class="anchor" id="a93fad7f8ae44575dc89c9567859972d2"></a><!-- doxytag: member="linkhash.h::LH_EMPTY" ref="a93fad7f8ae44575dc89c9567859972d2" args="" -->
64 <div class="memproto">
65 <table class="memname">
67 <td class="memname">#define LH_EMPTY (void*)-1</td>
72 <p>sentinel pointer value for empty slots </p>
76 <a class="anchor" id="ad7dd67da915065dce2c6f44cb03e2d82"></a><!-- doxytag: member="linkhash.h::lh_foreach" ref="ad7dd67da915065dce2c6f44cb03e2d82" args="(table, entry)" -->
78 <div class="memproto">
79 <table class="memname">
81 <td class="memname">#define lh_foreach</td>
83 <td class="paramtype">table, </td>
86 <td class="paramkey"></td>
88 <td class="paramtype">entry </td>
89 <td class="paramname"></td>
90 <td> ) </td>
91 <td> for(entry = table->head; entry; entry = entry->next)</td>
96 <p>Convenience list iterator. </p>
100 <a class="anchor" id="abcbb0df08b4976d0649b826b6bacfca1"></a><!-- doxytag: member="linkhash.h::lh_foreach_safe" ref="abcbb0df08b4976d0649b826b6bacfca1" args="(table, entry, tmp)" -->
101 <div class="memitem">
102 <div class="memproto">
103 <table class="memname">
105 <td class="memname">#define lh_foreach_safe</td>
107 <td class="paramtype">table, </td>
110 <td class="paramkey"></td>
112 <td class="paramtype">entry, </td>
115 <td class="paramkey"></td>
117 <td class="paramtype">tmp </td>
118 <td class="paramname"></td>
119 <td> ) </td>
120 <td> for(entry = table->head; entry && ((tmp = entry->next) || 1); entry = tmp)</td>
125 <p>lh_foreach_safe allows calling of deletion routine while iterating. </p>
129 <a class="anchor" id="ac69428f2de0a6fb080b6fb373d506aa7"></a><!-- doxytag: member="linkhash.h::LH_FREED" ref="ac69428f2de0a6fb080b6fb373d506aa7" args="" -->
130 <div class="memitem">
131 <div class="memproto">
132 <table class="memname">
134 <td class="memname">#define LH_FREED (void*)-2</td>
139 <p>sentinel pointer value for freed slots </p>
143 <a class="anchor" id="a66b61772c29d85eb52b697e0b0dc0aaf"></a><!-- doxytag: member="linkhash.h::LH_LOAD_FACTOR" ref="a66b61772c29d85eb52b697e0b0dc0aaf" args="" -->
144 <div class="memitem">
145 <div class="memproto">
146 <table class="memname">
148 <td class="memname">#define LH_LOAD_FACTOR 0.66</td>
153 <p>The fraction of filled hash buckets until an insert will cause the table to be resized. This can range from just above 0 up to 1.0. </p>
157 <a class="anchor" id="a032f1bd115df254dda325437203ce5fb"></a><!-- doxytag: member="linkhash.h::LH_PRIME" ref="a032f1bd115df254dda325437203ce5fb" args="" -->
158 <div class="memitem">
159 <div class="memproto">
160 <table class="memname">
162 <td class="memname">#define LH_PRIME 0x9e370001UL</td>
167 <p>golden prime used in hash functions </p>
171 <hr/><h2>Typedef Documentation</h2>
172 <a class="anchor" id="a671553d0ee3c2a123190ba0f8ed2b635"></a><!-- doxytag: member="linkhash.h::lh_entry_free_fn" ref="a671553d0ee3c2a123190ba0f8ed2b635" args=")(struct lh_entry *e)" -->
173 <div class="memitem">
174 <div class="memproto">
175 <table class="memname">
177 <td class="memname">typedef void( <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a>)(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td>
182 <p>callback function prototypes </p>
186 <a class="anchor" id="a91fd85fc81b0c7c83c62f00e84729091"></a><!-- doxytag: member="linkhash.h::lh_equal_fn" ref="a91fd85fc81b0c7c83c62f00e84729091" args=")(const void *k1, const void *k2)" -->
187 <div class="memitem">
188 <div class="memproto">
189 <table class="memname">
191 <td class="memname">typedef int( <a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a>)(const void *k1, const void *k2)</td>
196 <p>callback function prototypes </p>
200 <a class="anchor" id="a38bae27995dcfb6ee3fb109a9be229b2"></a><!-- doxytag: member="linkhash.h::lh_hash_fn" ref="a38bae27995dcfb6ee3fb109a9be229b2" args=")(const void *k)" -->
201 <div class="memitem">
202 <div class="memproto">
203 <table class="memname">
205 <td class="memname">typedef unsigned long( <a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a>)(const void *k)</td>
210 <p>callback function prototypes </p>
214 <hr/><h2>Function Documentation</h2>
215 <a class="anchor" id="a1294160fa0e80cee04cd745a401f43a4"></a><!-- doxytag: member="linkhash.h::lh_abort" ref="a1294160fa0e80cee04cd745a401f43a4" args="(const char *msg,...)" -->
216 <div class="memitem">
217 <div class="memproto">
218 <table class="memname">
220 <td class="memname">void lh_abort </td>
222 <td class="paramtype">const char * </td>
223 <td class="paramname"> <em>msg</em>, </td>
226 <td class="paramkey"></td>
228 <td class="paramtype"> </td>
229 <td class="paramname"> <em>...</em></td><td> </td>
234 <td></td><td></td><td></td>
242 <a class="anchor" id="ae4e9f21fb1a556c7a50c6b7ea61f2079"></a><!-- doxytag: member="linkhash.h::lh_char_equal" ref="ae4e9f21fb1a556c7a50c6b7ea61f2079" args="(const void *k1, const void *k2)" -->
243 <div class="memitem">
244 <div class="memproto">
245 <table class="memname">
247 <td class="memname">int lh_char_equal </td>
249 <td class="paramtype">const void * </td>
250 <td class="paramname"> <em>k1</em>, </td>
253 <td class="paramkey"></td>
255 <td class="paramtype">const void * </td>
256 <td class="paramname"> <em>k2</em></td><td> </td>
261 <td></td><td></td><td></td>
269 <a class="anchor" id="a1fcf495b9c4ce169630cb31f638b8435"></a><!-- doxytag: member="linkhash.h::lh_char_hash" ref="a1fcf495b9c4ce169630cb31f638b8435" args="(const void *k)" -->
270 <div class="memitem">
271 <div class="memproto">
272 <table class="memname">
274 <td class="memname">unsigned long lh_char_hash </td>
276 <td class="paramtype">const void * </td>
277 <td class="paramname"> <em>k</em></td>
278 <td> ) </td>
287 <a class="anchor" id="a0aaf11e11ee5b0925279a52eab04bc38"></a><!-- doxytag: member="linkhash.h::lh_kchar_table_new" ref="a0aaf11e11ee5b0925279a52eab04bc38" args="(int size, const char *name, lh_entry_free_fn *free_fn)" -->
288 <div class="memitem">
289 <div class="memproto">
290 <table class="memname">
292 <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kchar_table_new </td>
294 <td class="paramtype">int </td>
295 <td class="paramname"> <em>size</em>, </td>
298 <td class="paramkey"></td>
300 <td class="paramtype">const char * </td>
301 <td class="paramname"> <em>name</em>, </td>
304 <td class="paramkey"></td>
306 <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> * </td>
307 <td class="paramname"> <em>free_fn</em></td><td> </td>
312 <td></td><td></td><td><code> [read]</code></td>
317 <p>Convenience function to create a new linkhash table with char keys. </p>
318 <dl><dt><b>Parameters:</b></dt><dd>
319 <table border="0" cellspacing="2" cellpadding="0">
320 <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>initial table size. </td></tr>
321 <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>table name. </td></tr>
322 <tr><td valign="top"></td><td valign="top"><em>free_fn</em> </td><td>callback function used to free memory for entries. </td></tr>
326 <dl class="return"><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
330 <a class="anchor" id="a705513954267a16cc1d40a284a7c441e"></a><!-- doxytag: member="linkhash.h::lh_kptr_table_new" ref="a705513954267a16cc1d40a284a7c441e" args="(int size, const char *name, lh_entry_free_fn *free_fn)" -->
331 <div class="memitem">
332 <div class="memproto">
333 <table class="memname">
335 <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kptr_table_new </td>
337 <td class="paramtype">int </td>
338 <td class="paramname"> <em>size</em>, </td>
341 <td class="paramkey"></td>
343 <td class="paramtype">const char * </td>
344 <td class="paramname"> <em>name</em>, </td>
347 <td class="paramkey"></td>
349 <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> * </td>
350 <td class="paramname"> <em>free_fn</em></td><td> </td>
355 <td></td><td></td><td><code> [read]</code></td>
360 <p>Convenience function to create a new linkhash table with ptr keys. </p>
361 <dl><dt><b>Parameters:</b></dt><dd>
362 <table border="0" cellspacing="2" cellpadding="0">
363 <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>initial table size. </td></tr>
364 <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>table name. </td></tr>
365 <tr><td valign="top"></td><td valign="top"><em>free_fn</em> </td><td>callback function used to free memory for entries. </td></tr>
369 <dl class="return"><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
373 <a class="anchor" id="a6ce3cb97560072c40f5caeaba85f756a"></a><!-- doxytag: member="linkhash.h::lh_ptr_equal" ref="a6ce3cb97560072c40f5caeaba85f756a" args="(const void *k1, const void *k2)" -->
374 <div class="memitem">
375 <div class="memproto">
376 <table class="memname">
378 <td class="memname">int lh_ptr_equal </td>
380 <td class="paramtype">const void * </td>
381 <td class="paramname"> <em>k1</em>, </td>
384 <td class="paramkey"></td>
386 <td class="paramtype">const void * </td>
387 <td class="paramname"> <em>k2</em></td><td> </td>
392 <td></td><td></td><td></td>
400 <a class="anchor" id="a2e560f0d3e5a20f6b0bfa4049737db23"></a><!-- doxytag: member="linkhash.h::lh_ptr_hash" ref="a2e560f0d3e5a20f6b0bfa4049737db23" args="(const void *k)" -->
401 <div class="memitem">
402 <div class="memproto">
403 <table class="memname">
405 <td class="memname">unsigned long lh_ptr_hash </td>
407 <td class="paramtype">const void * </td>
408 <td class="paramname"> <em>k</em></td>
409 <td> ) </td>
415 <p>Pre-defined hash and equality functions </p>
419 <a class="anchor" id="a2fed2c78f70d229edb2d00775ffe593c"></a><!-- doxytag: member="linkhash.h::lh_table_delete" ref="a2fed2c78f70d229edb2d00775ffe593c" args="(struct lh_table *t, const void *k)" -->
420 <div class="memitem">
421 <div class="memproto">
422 <table class="memname">
424 <td class="memname">int lh_table_delete </td>
426 <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> * </td>
427 <td class="paramname"> <em>t</em>, </td>
430 <td class="paramkey"></td>
432 <td class="paramtype">const void * </td>
433 <td class="paramname"> <em>k</em></td><td> </td>
438 <td></td><td></td><td></td>
443 <p>Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. </p>
444 <dl><dt><b>Parameters:</b></dt><dd>
445 <table border="0" cellspacing="2" cellpadding="0">
446 <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>the table to delete from. </td></tr>
447 <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>a pointer to the key to delete. </td></tr>
451 <dl class="return"><dt><b>Returns:</b></dt><dd>0 if the item was deleted. </dd>
453 -1 if it was not found. </dd></dl>
457 <a class="anchor" id="ae5885a71c3457190fb1dc2d6e20dde3b"></a><!-- doxytag: member="linkhash.h::lh_table_delete_entry" ref="ae5885a71c3457190fb1dc2d6e20dde3b" args="(struct lh_table *t, struct lh_entry *e)" -->
458 <div class="memitem">
459 <div class="memproto">
460 <table class="memname">
462 <td class="memname">int lh_table_delete_entry </td>
464 <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> * </td>
465 <td class="paramname"> <em>t</em>, </td>
468 <td class="paramkey"></td>
470 <td class="paramtype">struct <a class="el" href="structlh__entry.html">lh_entry</a> * </td>
471 <td class="paramname"> <em>e</em></td><td> </td>
476 <td></td><td></td><td></td>
481 <p>Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. </p>
482 <dl><dt><b>Parameters:</b></dt><dd>
483 <table border="0" cellspacing="2" cellpadding="0">
484 <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>the table to delete from. </td></tr>
485 <tr><td valign="top"></td><td valign="top"><em>e</em> </td><td>a pointer to the entry to delete. </td></tr>
489 <dl class="return"><dt><b>Returns:</b></dt><dd>0 if the item was deleted. </dd>
491 -1 if it was not found. </dd></dl>
495 <a class="anchor" id="a81653acf740cf8c9fe672e6cd16df0cf"></a><!-- doxytag: member="linkhash.h::lh_table_free" ref="a81653acf740cf8c9fe672e6cd16df0cf" args="(struct lh_table *t)" -->
496 <div class="memitem">
497 <div class="memproto">
498 <table class="memname">
500 <td class="memname">void lh_table_free </td>
502 <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> * </td>
503 <td class="paramname"> <em>t</em></td>
504 <td> ) </td>
510 <p>Free a linkhash table. If a callback free function is provided then it is called for all entries in the table. </p>
511 <dl><dt><b>Parameters:</b></dt><dd>
512 <table border="0" cellspacing="2" cellpadding="0">
513 <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>table to free. </td></tr>
520 <a class="anchor" id="a22b897763cc34a98c21c7fe82d151004"></a><!-- doxytag: member="linkhash.h::lh_table_insert" ref="a22b897763cc34a98c21c7fe82d151004" args="(struct lh_table *t, void *k, const void *v)" -->
521 <div class="memitem">
522 <div class="memproto">
523 <table class="memname">
525 <td class="memname">int lh_table_insert </td>
527 <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> * </td>
528 <td class="paramname"> <em>t</em>, </td>
531 <td class="paramkey"></td>
533 <td class="paramtype">void * </td>
534 <td class="paramname"> <em>k</em>, </td>
537 <td class="paramkey"></td>
539 <td class="paramtype">const void * </td>
540 <td class="paramname"> <em>v</em></td><td> </td>
545 <td></td><td></td><td></td>
550 <p>Insert a record into the table. </p>
551 <dl><dt><b>Parameters:</b></dt><dd>
552 <table border="0" cellspacing="2" cellpadding="0">
553 <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>the table to insert into. </td></tr>
554 <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>a pointer to the key to insert. </td></tr>
555 <tr><td valign="top"></td><td valign="top"><em>v</em> </td><td>a pointer to the value to insert. </td></tr>
562 <a class="anchor" id="a49c27f18a174eaf126d1b7953df13cb1"></a><!-- doxytag: member="linkhash.h::lh_table_lookup" ref="a49c27f18a174eaf126d1b7953df13cb1" args="(struct lh_table *t, const void *k)" -->
563 <div class="memitem">
564 <div class="memproto">
565 <table class="memname">
567 <td class="memname">const void* lh_table_lookup </td>
569 <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> * </td>
570 <td class="paramname"> <em>t</em>, </td>
573 <td class="paramkey"></td>
575 <td class="paramtype">const void * </td>
576 <td class="paramname"> <em>k</em></td><td> </td>
581 <td></td><td></td><td></td>
586 <p>Lookup a record into the table </p>
587 <dl><dt><b>Parameters:</b></dt><dd>
588 <table border="0" cellspacing="2" cellpadding="0">
589 <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>the table to lookup </td></tr>
590 <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>a pointer to the key to lookup </td></tr>
594 <dl class="return"><dt><b>Returns:</b></dt><dd>a pointer to the found value or NULL if it does not exist. </dd></dl>
595 <dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>Use lh_table_lookup_ex instead. </dd></dl>
599 <a class="anchor" id="ad3b6ca2d967a6c3021ee6c39e014a918"></a><!-- doxytag: member="linkhash.h::lh_table_lookup_entry" ref="ad3b6ca2d967a6c3021ee6c39e014a918" args="(struct lh_table *t, const void *k)" -->
600 <div class="memitem">
601 <div class="memproto">
602 <table class="memname">
604 <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_lookup_entry </td>
606 <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> * </td>
607 <td class="paramname"> <em>t</em>, </td>
610 <td class="paramkey"></td>
612 <td class="paramtype">const void * </td>
613 <td class="paramname"> <em>k</em></td><td> </td>
618 <td></td><td></td><td><code> [read]</code></td>
623 <p>Lookup a record into the table. </p>
624 <dl><dt><b>Parameters:</b></dt><dd>
625 <table border="0" cellspacing="2" cellpadding="0">
626 <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>the table to lookup </td></tr>
627 <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>a pointer to the key to lookup </td></tr>
631 <dl class="return"><dt><b>Returns:</b></dt><dd>a pointer to the record structure of the value or NULL if it does not exist. </dd></dl>
635 <a class="anchor" id="a81c270bb0dd9d5c8a3e7ae20bc4d67f3"></a><!-- doxytag: member="linkhash.h::lh_table_lookup_ex" ref="a81c270bb0dd9d5c8a3e7ae20bc4d67f3" args="(struct lh_table *t, const void *k, void **v)" -->
636 <div class="memitem">
637 <div class="memproto">
638 <table class="memname">
640 <td class="memname"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> lh_table_lookup_ex </td>
642 <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> * </td>
643 <td class="paramname"> <em>t</em>, </td>
646 <td class="paramkey"></td>
648 <td class="paramtype">const void * </td>
649 <td class="paramname"> <em>k</em>, </td>
652 <td class="paramkey"></td>
654 <td class="paramtype">void ** </td>
655 <td class="paramname"> <em>v</em></td><td> </td>
660 <td></td><td></td><td></td>
665 <p>Lookup a record in the table </p>
666 <dl><dt><b>Parameters:</b></dt><dd>
667 <table border="0" cellspacing="2" cellpadding="0">
668 <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>the table to lookup </td></tr>
669 <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>a pointer to the key to lookup </td></tr>
670 <tr><td valign="top"></td><td valign="top"><em>v</em> </td><td>a pointer to a where to store the found value (set to NULL if it doesn't exist). </td></tr>
674 <dl class="return"><dt><b>Returns:</b></dt><dd>whether or not the key was found </dd></dl>
678 <a class="anchor" id="ac3ba464ac43c083397b1f1d34f2ddf55"></a><!-- doxytag: member="linkhash.h::lh_table_new" ref="ac3ba464ac43c083397b1f1d34f2ddf55" args="(int size, const char *name, lh_entry_free_fn *free_fn, lh_hash_fn *hash_fn, lh_equal_fn *equal_fn)" -->
679 <div class="memitem">
680 <div class="memproto">
681 <table class="memname">
683 <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_table_new </td>
685 <td class="paramtype">int </td>
686 <td class="paramname"> <em>size</em>, </td>
689 <td class="paramkey"></td>
691 <td class="paramtype">const char * </td>
692 <td class="paramname"> <em>name</em>, </td>
695 <td class="paramkey"></td>
697 <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> * </td>
698 <td class="paramname"> <em>free_fn</em>, </td>
701 <td class="paramkey"></td>
703 <td class="paramtype"><a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> * </td>
704 <td class="paramname"> <em>hash_fn</em>, </td>
707 <td class="paramkey"></td>
709 <td class="paramtype"><a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> * </td>
710 <td class="paramname"> <em>equal_fn</em></td><td> </td>
715 <td></td><td></td><td><code> [read]</code></td>
720 <p>Create a new linkhash table. </p>
721 <dl><dt><b>Parameters:</b></dt><dd>
722 <table border="0" cellspacing="2" cellpadding="0">
723 <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>initial table size. The table is automatically resized although this incurs a performance penalty. </td></tr>
724 <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>the table name. </td></tr>
725 <tr><td valign="top"></td><td valign="top"><em>free_fn</em> </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>
726 <tr><td valign="top"></td><td valign="top"><em>hash_fn</em> </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>
727 <tr><td valign="top"></td><td valign="top"><em>equal_fn</em> </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>
731 <dl class="return"><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
735 <a class="anchor" id="a5322eccf3394af7dc1ebb22af8f8c562"></a><!-- doxytag: member="linkhash.h::lh_table_resize" ref="a5322eccf3394af7dc1ebb22af8f8c562" args="(struct lh_table *t, int new_size)" -->
736 <div class="memitem">
737 <div class="memproto">
738 <table class="memname">
740 <td class="memname">void lh_table_resize </td>
742 <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> * </td>
743 <td class="paramname"> <em>t</em>, </td>
746 <td class="paramkey"></td>
748 <td class="paramtype">int </td>
749 <td class="paramname"> <em>new_size</em></td><td> </td>
754 <td></td><td></td><td></td>
763 <hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by
764 <a href="http://www.doxygen.org/index.html">
765 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>