Imported Upstream version 0.10
[platform/upstream/json-c.git] / doc / html / linkhash_8h.html
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">
3 <head>
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"/>
8 </head>
9 <body>
10 <!-- Generated by Doxygen 1.6.3 -->
11 <div class="navigation" id="top">
12   <div class="tabs">
13     <ul>
14       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
15       <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
16       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
17       <li class="current"><a href="files.html"><span>Files</span></a></li>
18     </ul>
19   </div>
20   <div class="tabs">
21     <ul>
22       <li><a href="files.html"><span>File&nbsp;List</span></a></li>
23       <li><a href="globals.html"><span>Globals</span></a></li>
24     </ul>
25   </div>
26 </div>
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 &nbsp;</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 &nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a032f1bd115df254dda325437203ce5fb">LH_PRIME</a>&nbsp;&nbsp;&nbsp;0x9e370001UL</td></tr>
34 <tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a66b61772c29d85eb52b697e0b0dc0aaf">LH_LOAD_FACTOR</a>&nbsp;&nbsp;&nbsp;0.66</td></tr>
35 <tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a93fad7f8ae44575dc89c9567859972d2">LH_EMPTY</a>&nbsp;&nbsp;&nbsp;(void*)-1</td></tr>
36 <tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac69428f2de0a6fb080b6fb373d506aa7">LH_FREED</a>&nbsp;&nbsp;&nbsp;(void*)-2</td></tr>
37 <tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ad7dd67da915065dce2c6f44cb03e2d82">lh_foreach</a>(table, entry)&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry; entry = entry-&gt;next)</td></tr>
38 <tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#abcbb0df08b4976d0649b826b6bacfca1">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>
39 <tr><td colspan="2"><h2>Typedefs</h2></td></tr>
40 <tr><td class="memItemLeft" align="right" valign="top">typedef void(&nbsp;</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(&nbsp;</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(&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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> *&nbsp;</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> *&nbsp;</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> *&nbsp;</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&nbsp;</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&nbsp;</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> *&nbsp;</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 *&nbsp;</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>&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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>
60 </table>
61 <hr/><h2>Define Documentation</h2>
62 <a class="anchor" id="a93fad7f8ae44575dc89c9567859972d2"></a><!-- doxytag: member="linkhash.h::LH_EMPTY" ref="a93fad7f8ae44575dc89c9567859972d2" args="" -->
63 <div class="memitem">
64 <div class="memproto">
65       <table class="memname">
66         <tr>
67           <td class="memname">#define LH_EMPTY&nbsp;&nbsp;&nbsp;(void*)-1</td>
68         </tr>
69       </table>
70 </div>
71 <div class="memdoc">
72 <p>sentinel pointer value for empty slots </p>
73
74 </div>
75 </div>
76 <a class="anchor" id="ad7dd67da915065dce2c6f44cb03e2d82"></a><!-- doxytag: member="linkhash.h::lh_foreach" ref="ad7dd67da915065dce2c6f44cb03e2d82" args="(table, entry)" -->
77 <div class="memitem">
78 <div class="memproto">
79       <table class="memname">
80         <tr>
81           <td class="memname">#define lh_foreach</td>
82           <td>(</td>
83           <td class="paramtype">table, </td>
84         </tr>
85         <tr>
86           <td class="paramkey"></td>
87           <td></td>
88           <td class="paramtype">entry&nbsp;</td>
89           <td class="paramname"></td>
90           <td>&nbsp;)&nbsp;</td>
91           <td>&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry; entry = entry-&gt;next)</td>
92         </tr>
93       </table>
94 </div>
95 <div class="memdoc">
96 <p>Convenience list iterator. </p>
97
98 </div>
99 </div>
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">
104         <tr>
105           <td class="memname">#define lh_foreach_safe</td>
106           <td>(</td>
107           <td class="paramtype">table, </td>
108         </tr>
109         <tr>
110           <td class="paramkey"></td>
111           <td></td>
112           <td class="paramtype">entry, </td>
113         </tr>
114         <tr>
115           <td class="paramkey"></td>
116           <td></td>
117           <td class="paramtype">tmp&nbsp;</td>
118           <td class="paramname"></td>
119           <td>&nbsp;)&nbsp;</td>
120           <td>&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry &amp;&amp; ((tmp = entry-&gt;next) || 1); entry = tmp)</td>
121         </tr>
122       </table>
123 </div>
124 <div class="memdoc">
125 <p>lh_foreach_safe allows calling of deletion routine while iterating. </p>
126
127 </div>
128 </div>
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">
133         <tr>
134           <td class="memname">#define LH_FREED&nbsp;&nbsp;&nbsp;(void*)-2</td>
135         </tr>
136       </table>
137 </div>
138 <div class="memdoc">
139 <p>sentinel pointer value for freed slots </p>
140
141 </div>
142 </div>
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">
147         <tr>
148           <td class="memname">#define LH_LOAD_FACTOR&nbsp;&nbsp;&nbsp;0.66</td>
149         </tr>
150       </table>
151 </div>
152 <div class="memdoc">
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>
154
155 </div>
156 </div>
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">
161         <tr>
162           <td class="memname">#define LH_PRIME&nbsp;&nbsp;&nbsp;0x9e370001UL</td>
163         </tr>
164       </table>
165 </div>
166 <div class="memdoc">
167 <p>golden prime used in hash functions </p>
168
169 </div>
170 </div>
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">
176         <tr>
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>
178         </tr>
179       </table>
180 </div>
181 <div class="memdoc">
182 <p>callback function prototypes </p>
183
184 </div>
185 </div>
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">
190         <tr>
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>
192         </tr>
193       </table>
194 </div>
195 <div class="memdoc">
196 <p>callback function prototypes </p>
197
198 </div>
199 </div>
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">
204         <tr>
205           <td class="memname">typedef unsigned long( <a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a>)(const void *k)</td>
206         </tr>
207       </table>
208 </div>
209 <div class="memdoc">
210 <p>callback function prototypes </p>
211
212 </div>
213 </div>
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">
219         <tr>
220           <td class="memname">void lh_abort </td>
221           <td>(</td>
222           <td class="paramtype">const char *&nbsp;</td>
223           <td class="paramname"> <em>msg</em>, </td>
224         </tr>
225         <tr>
226           <td class="paramkey"></td>
227           <td></td>
228           <td class="paramtype">&nbsp;</td>
229           <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
230         </tr>
231         <tr>
232           <td></td>
233           <td>)</td>
234           <td></td><td></td><td></td>
235         </tr>
236       </table>
237 </div>
238 <div class="memdoc">
239
240 </div>
241 </div>
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">
246         <tr>
247           <td class="memname">int lh_char_equal </td>
248           <td>(</td>
249           <td class="paramtype">const void *&nbsp;</td>
250           <td class="paramname"> <em>k1</em>, </td>
251         </tr>
252         <tr>
253           <td class="paramkey"></td>
254           <td></td>
255           <td class="paramtype">const void *&nbsp;</td>
256           <td class="paramname"> <em>k2</em></td><td>&nbsp;</td>
257         </tr>
258         <tr>
259           <td></td>
260           <td>)</td>
261           <td></td><td></td><td></td>
262         </tr>
263       </table>
264 </div>
265 <div class="memdoc">
266
267 </div>
268 </div>
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">
273         <tr>
274           <td class="memname">unsigned long lh_char_hash </td>
275           <td>(</td>
276           <td class="paramtype">const void *&nbsp;</td>
277           <td class="paramname"> <em>k</em></td>
278           <td>&nbsp;)&nbsp;</td>
279           <td></td>
280         </tr>
281       </table>
282 </div>
283 <div class="memdoc">
284
285 </div>
286 </div>
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">
291         <tr>
292           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kchar_table_new </td>
293           <td>(</td>
294           <td class="paramtype">int&nbsp;</td>
295           <td class="paramname"> <em>size</em>, </td>
296         </tr>
297         <tr>
298           <td class="paramkey"></td>
299           <td></td>
300           <td class="paramtype">const char *&nbsp;</td>
301           <td class="paramname"> <em>name</em>, </td>
302         </tr>
303         <tr>
304           <td class="paramkey"></td>
305           <td></td>
306           <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
307           <td class="paramname"> <em>free_fn</em></td><td>&nbsp;</td>
308         </tr>
309         <tr>
310           <td></td>
311           <td>)</td>
312           <td></td><td></td><td><code> [read]</code></td>
313         </tr>
314       </table>
315 </div>
316 <div class="memdoc">
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>&nbsp;</td><td>initial table size. </td></tr>
321     <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>table name. </td></tr>
322     <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>
323   </table>
324   </dd>
325 </dl>
326 <dl class="return"><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
327
328 </div>
329 </div>
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">
334         <tr>
335           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kptr_table_new </td>
336           <td>(</td>
337           <td class="paramtype">int&nbsp;</td>
338           <td class="paramname"> <em>size</em>, </td>
339         </tr>
340         <tr>
341           <td class="paramkey"></td>
342           <td></td>
343           <td class="paramtype">const char *&nbsp;</td>
344           <td class="paramname"> <em>name</em>, </td>
345         </tr>
346         <tr>
347           <td class="paramkey"></td>
348           <td></td>
349           <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
350           <td class="paramname"> <em>free_fn</em></td><td>&nbsp;</td>
351         </tr>
352         <tr>
353           <td></td>
354           <td>)</td>
355           <td></td><td></td><td><code> [read]</code></td>
356         </tr>
357       </table>
358 </div>
359 <div class="memdoc">
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>&nbsp;</td><td>initial table size. </td></tr>
364     <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>table name. </td></tr>
365     <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>
366   </table>
367   </dd>
368 </dl>
369 <dl class="return"><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
370
371 </div>
372 </div>
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">
377         <tr>
378           <td class="memname">int lh_ptr_equal </td>
379           <td>(</td>
380           <td class="paramtype">const void *&nbsp;</td>
381           <td class="paramname"> <em>k1</em>, </td>
382         </tr>
383         <tr>
384           <td class="paramkey"></td>
385           <td></td>
386           <td class="paramtype">const void *&nbsp;</td>
387           <td class="paramname"> <em>k2</em></td><td>&nbsp;</td>
388         </tr>
389         <tr>
390           <td></td>
391           <td>)</td>
392           <td></td><td></td><td></td>
393         </tr>
394       </table>
395 </div>
396 <div class="memdoc">
397
398 </div>
399 </div>
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">
404         <tr>
405           <td class="memname">unsigned long lh_ptr_hash </td>
406           <td>(</td>
407           <td class="paramtype">const void *&nbsp;</td>
408           <td class="paramname"> <em>k</em></td>
409           <td>&nbsp;)&nbsp;</td>
410           <td></td>
411         </tr>
412       </table>
413 </div>
414 <div class="memdoc">
415 <p>Pre-defined hash and equality functions </p>
416
417 </div>
418 </div>
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">
423         <tr>
424           <td class="memname">int lh_table_delete </td>
425           <td>(</td>
426           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
427           <td class="paramname"> <em>t</em>, </td>
428         </tr>
429         <tr>
430           <td class="paramkey"></td>
431           <td></td>
432           <td class="paramtype">const void *&nbsp;</td>
433           <td class="paramname"> <em>k</em></td><td>&nbsp;</td>
434         </tr>
435         <tr>
436           <td></td>
437           <td>)</td>
438           <td></td><td></td><td></td>
439         </tr>
440       </table>
441 </div>
442 <div class="memdoc">
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>&nbsp;</td><td>the table to delete from. </td></tr>
447     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to delete. </td></tr>
448   </table>
449   </dd>
450 </dl>
451 <dl class="return"><dt><b>Returns:</b></dt><dd>0 if the item was deleted. </dd>
452 <dd>
453 -1 if it was not found. </dd></dl>
454
455 </div>
456 </div>
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">
461         <tr>
462           <td class="memname">int lh_table_delete_entry </td>
463           <td>(</td>
464           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
465           <td class="paramname"> <em>t</em>, </td>
466         </tr>
467         <tr>
468           <td class="paramkey"></td>
469           <td></td>
470           <td class="paramtype">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td>
471           <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
472         </tr>
473         <tr>
474           <td></td>
475           <td>)</td>
476           <td></td><td></td><td></td>
477         </tr>
478       </table>
479 </div>
480 <div class="memdoc">
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>&nbsp;</td><td>the table to delete from. </td></tr>
485     <tr><td valign="top"></td><td valign="top"><em>e</em>&nbsp;</td><td>a pointer to the entry to delete. </td></tr>
486   </table>
487   </dd>
488 </dl>
489 <dl class="return"><dt><b>Returns:</b></dt><dd>0 if the item was deleted. </dd>
490 <dd>
491 -1 if it was not found. </dd></dl>
492
493 </div>
494 </div>
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">
499         <tr>
500           <td class="memname">void lh_table_free </td>
501           <td>(</td>
502           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
503           <td class="paramname"> <em>t</em></td>
504           <td>&nbsp;)&nbsp;</td>
505           <td></td>
506         </tr>
507       </table>
508 </div>
509 <div class="memdoc">
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>&nbsp;</td><td>table to free. </td></tr>
514   </table>
515   </dd>
516 </dl>
517
518 </div>
519 </div>
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">
524         <tr>
525           <td class="memname">int lh_table_insert </td>
526           <td>(</td>
527           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
528           <td class="paramname"> <em>t</em>, </td>
529         </tr>
530         <tr>
531           <td class="paramkey"></td>
532           <td></td>
533           <td class="paramtype">void *&nbsp;</td>
534           <td class="paramname"> <em>k</em>, </td>
535         </tr>
536         <tr>
537           <td class="paramkey"></td>
538           <td></td>
539           <td class="paramtype">const void *&nbsp;</td>
540           <td class="paramname"> <em>v</em></td><td>&nbsp;</td>
541         </tr>
542         <tr>
543           <td></td>
544           <td>)</td>
545           <td></td><td></td><td></td>
546         </tr>
547       </table>
548 </div>
549 <div class="memdoc">
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>&nbsp;</td><td>the table to insert into. </td></tr>
554     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to insert. </td></tr>
555     <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>a pointer to the value to insert. </td></tr>
556   </table>
557   </dd>
558 </dl>
559
560 </div>
561 </div>
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">
566         <tr>
567           <td class="memname">const void* lh_table_lookup </td>
568           <td>(</td>
569           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
570           <td class="paramname"> <em>t</em>, </td>
571         </tr>
572         <tr>
573           <td class="paramkey"></td>
574           <td></td>
575           <td class="paramtype">const void *&nbsp;</td>
576           <td class="paramname"> <em>k</em></td><td>&nbsp;</td>
577         </tr>
578         <tr>
579           <td></td>
580           <td>)</td>
581           <td></td><td></td><td></td>
582         </tr>
583       </table>
584 </div>
585 <div class="memdoc">
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>&nbsp;</td><td>the table to lookup </td></tr>
590     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to lookup </td></tr>
591   </table>
592   </dd>
593 </dl>
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>
596
597 </div>
598 </div>
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">
603         <tr>
604           <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_lookup_entry </td>
605           <td>(</td>
606           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
607           <td class="paramname"> <em>t</em>, </td>
608         </tr>
609         <tr>
610           <td class="paramkey"></td>
611           <td></td>
612           <td class="paramtype">const void *&nbsp;</td>
613           <td class="paramname"> <em>k</em></td><td>&nbsp;</td>
614         </tr>
615         <tr>
616           <td></td>
617           <td>)</td>
618           <td></td><td></td><td><code> [read]</code></td>
619         </tr>
620       </table>
621 </div>
622 <div class="memdoc">
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>&nbsp;</td><td>the table to lookup </td></tr>
627     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to lookup </td></tr>
628   </table>
629   </dd>
630 </dl>
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>
632
633 </div>
634 </div>
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">
639         <tr>
640           <td class="memname"><a class="el" href="json__object_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> lh_table_lookup_ex </td>
641           <td>(</td>
642           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
643           <td class="paramname"> <em>t</em>, </td>
644         </tr>
645         <tr>
646           <td class="paramkey"></td>
647           <td></td>
648           <td class="paramtype">const void *&nbsp;</td>
649           <td class="paramname"> <em>k</em>, </td>
650         </tr>
651         <tr>
652           <td class="paramkey"></td>
653           <td></td>
654           <td class="paramtype">void **&nbsp;</td>
655           <td class="paramname"> <em>v</em></td><td>&nbsp;</td>
656         </tr>
657         <tr>
658           <td></td>
659           <td>)</td>
660           <td></td><td></td><td></td>
661         </tr>
662       </table>
663 </div>
664 <div class="memdoc">
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>&nbsp;</td><td>the table to lookup </td></tr>
669     <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to lookup </td></tr>
670     <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>a pointer to a where to store the found value (set to NULL if it doesn't exist). </td></tr>
671   </table>
672   </dd>
673 </dl>
674 <dl class="return"><dt><b>Returns:</b></dt><dd>whether or not the key was found </dd></dl>
675
676 </div>
677 </div>
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">
682         <tr>
683           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_table_new </td>
684           <td>(</td>
685           <td class="paramtype">int&nbsp;</td>
686           <td class="paramname"> <em>size</em>, </td>
687         </tr>
688         <tr>
689           <td class="paramkey"></td>
690           <td></td>
691           <td class="paramtype">const char *&nbsp;</td>
692           <td class="paramname"> <em>name</em>, </td>
693         </tr>
694         <tr>
695           <td class="paramkey"></td>
696           <td></td>
697           <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
698           <td class="paramname"> <em>free_fn</em>, </td>
699         </tr>
700         <tr>
701           <td class="paramkey"></td>
702           <td></td>
703           <td class="paramtype"><a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *&nbsp;</td>
704           <td class="paramname"> <em>hash_fn</em>, </td>
705         </tr>
706         <tr>
707           <td class="paramkey"></td>
708           <td></td>
709           <td class="paramtype"><a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *&nbsp;</td>
710           <td class="paramname"> <em>equal_fn</em></td><td>&nbsp;</td>
711         </tr>
712         <tr>
713           <td></td>
714           <td>)</td>
715           <td></td><td></td><td><code> [read]</code></td>
716         </tr>
717       </table>
718 </div>
719 <div class="memdoc">
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>&nbsp;</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>&nbsp;</td><td>the table name. </td></tr>
725     <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>
726     <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>
727     <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>
728   </table>
729   </dd>
730 </dl>
731 <dl class="return"><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>
732
733 </div>
734 </div>
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">
739         <tr>
740           <td class="memname">void lh_table_resize </td>
741           <td>(</td>
742           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
743           <td class="paramname"> <em>t</em>, </td>
744         </tr>
745         <tr>
746           <td class="paramkey"></td>
747           <td></td>
748           <td class="paramtype">int&nbsp;</td>
749           <td class="paramname"> <em>new_size</em></td><td>&nbsp;</td>
750         </tr>
751         <tr>
752           <td></td>
753           <td>)</td>
754           <td></td><td></td><td></td>
755         </tr>
756       </table>
757 </div>
758 <div class="memdoc">
759
760 </div>
761 </div>
762 </div>
763 <hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 28 15:52:47 2012 for json-c by&nbsp;
764 <a href="http://www.doxygen.org/index.html">
765 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
766 </body>
767 </html>