]> granicus.if.org Git - json-c/blob - doc/html/linkhash_8h.html
Generate docs for the 0.14 release.
[json-c] / 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 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <title>json-c: linkhash.h File Reference</title>
7 <link href="tabs.css" rel="stylesheet" type="text/css"/>
8 <script type="text/javascript" src="jquery.js"></script>
9 <script type="text/javascript" src="dynsections.js"></script>
10 <link href="doxygen.css" rel="stylesheet" type="text/css" />
11 </head>
12 <body>
13 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
14 <div id="titlearea">
15 <table cellspacing="0" cellpadding="0">
16  <tbody>
17  <tr style="height: 56px;">
18   <td style="padding-left: 0.5em;">
19    <div id="projectname">json-c
20    &#160;<span id="projectnumber">0.14</span>
21    </div>
22   </td>
23  </tr>
24  </tbody>
25 </table>
26 </div>
27 <!-- end header part -->
28 <!-- Generated by Doxygen 1.8.2 -->
29   <div id="navrow1" class="tabs">
30     <ul class="tablist">
31       <li><a href="index.html"><span>Main&#160;Page</span></a></li>
32       <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
33       <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
34       <li class="current"><a href="files.html"><span>Files</span></a></li>
35     </ul>
36   </div>
37   <div id="navrow2" class="tabs2">
38     <ul class="tablist">
39       <li><a href="files.html"><span>File&#160;List</span></a></li>
40       <li><a href="globals.html"><span>Globals</span></a></li>
41     </ul>
42   </div>
43 </div><!-- top -->
44 <div class="header">
45   <div class="summary">
46 <a href="#nested-classes">Data Structures</a> &#124;
47 <a href="#define-members">Macros</a> &#124;
48 <a href="#typedef-members">Typedefs</a> &#124;
49 <a href="#func-members">Functions</a>  </div>
50   <div class="headertitle">
51 <div class="title">linkhash.h File Reference</div>  </div>
52 </div><!--header-->
53 <div class="contents">
54
55 <p>Internal methods for working with json_type_object objects. Although this is exposed by the <a class="el" href="json__object_8h.html#a2caa52ae1863bd073444f3737138a4db">json_object_get_object()</a> function and within the <a class="el" href="structjson__object__iter.html">json_object_iter</a> type, it is not recommended for direct use.  
56 <a href="#details">More...</a></p>
57 <table class="memberdecls">
58 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
59 Data Structures</h2></td></tr>
60 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html">lh_entry</a></td></tr>
61 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
62 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html">lh_table</a></td></tr>
63 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
64 </table><table class="memberdecls">
65 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
66 Macros</h2></td></tr>
67 <tr class="memitem:a032f1bd115df254dda325437203ce5fb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a032f1bd115df254dda325437203ce5fb">LH_PRIME</a>&#160;&#160;&#160;0x9e370001UL</td></tr>
68 <tr class="separator:a032f1bd115df254dda325437203ce5fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
69 <tr class="memitem:a66b61772c29d85eb52b697e0b0dc0aaf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a66b61772c29d85eb52b697e0b0dc0aaf">LH_LOAD_FACTOR</a>&#160;&#160;&#160;0.66</td></tr>
70 <tr class="separator:a66b61772c29d85eb52b697e0b0dc0aaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
71 <tr class="memitem:a93fad7f8ae44575dc89c9567859972d2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a93fad7f8ae44575dc89c9567859972d2">LH_EMPTY</a>&#160;&#160;&#160;(void *)-1</td></tr>
72 <tr class="separator:a93fad7f8ae44575dc89c9567859972d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
73 <tr class="memitem:ac69428f2de0a6fb080b6fb373d506aa7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac69428f2de0a6fb080b6fb373d506aa7">LH_FREED</a>&#160;&#160;&#160;(void *)-2</td></tr>
74 <tr class="separator:ac69428f2de0a6fb080b6fb373d506aa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
75 <tr class="memitem:ac32e80138c5be6dd9b0483a9cbcc8799"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac32e80138c5be6dd9b0483a9cbcc8799">JSON_C_STR_HASH_DFLT</a>&#160;&#160;&#160;0</td></tr>
76 <tr class="separator:ac32e80138c5be6dd9b0483a9cbcc8799"><td class="memSeparator" colspan="2">&#160;</td></tr>
77 <tr class="memitem:a62316f34fd42941b97a8e9a6b6e68faa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a62316f34fd42941b97a8e9a6b6e68faa">JSON_C_STR_HASH_PERLLIKE</a>&#160;&#160;&#160;1</td></tr>
78 <tr class="separator:a62316f34fd42941b97a8e9a6b6e68faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
79 <tr class="memitem:ad7dd67da915065dce2c6f44cb03e2d82"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ad7dd67da915065dce2c6f44cb03e2d82">lh_foreach</a>(table, entry)&#160;&#160;&#160;for (entry = table-&gt;head; entry; entry = entry-&gt;next)</td></tr>
80 <tr class="separator:ad7dd67da915065dce2c6f44cb03e2d82"><td class="memSeparator" colspan="2">&#160;</td></tr>
81 <tr class="memitem:abcbb0df08b4976d0649b826b6bacfca1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#abcbb0df08b4976d0649b826b6bacfca1">lh_foreach_safe</a>(table, entry, tmp)&#160;&#160;&#160;for (entry = table-&gt;head; entry &amp;&amp; ((tmp = entry-&gt;next) || 1); entry = tmp)</td></tr>
82 <tr class="separator:abcbb0df08b4976d0649b826b6bacfca1"><td class="memSeparator" colspan="2">&#160;</td></tr>
83 <tr class="memitem:a77c5cddef96e6f1ab036ccf911783456"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a77c5cddef96e6f1ab036ccf911783456">_LH_INLINE</a>&#160;&#160;&#160;inline</td></tr>
84 <tr class="separator:a77c5cddef96e6f1ab036ccf911783456"><td class="memSeparator" colspan="2">&#160;</td></tr>
85 <tr class="memitem:afb856ed4a9bcfd090dde5151fa3ad9ae"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#afb856ed4a9bcfd090dde5151fa3ad9ae">_LH_UNCONST</a>(a)&#160;&#160;&#160;((void *)(uintptr_t)(const void *)(a))</td></tr>
86 <tr class="separator:afb856ed4a9bcfd090dde5151fa3ad9ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
87 <tr class="memitem:a7579ce28b8366fc9b8656f14270aa3aa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a7579ce28b8366fc9b8656f14270aa3aa">lh_entry_k</a>(entry)&#160;&#160;&#160;<a class="el" href="linkhash_8h.html#afb856ed4a9bcfd090dde5151fa3ad9ae">_LH_UNCONST</a>((entry)-&gt;k)</td></tr>
88 <tr class="separator:a7579ce28b8366fc9b8656f14270aa3aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
89 <tr class="memitem:a0d4052ccfd8c5d351a9c1d3ba07671b3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a0d4052ccfd8c5d351a9c1d3ba07671b3">lh_entry_v</a>(entry)&#160;&#160;&#160;<a class="el" href="linkhash_8h.html#afb856ed4a9bcfd090dde5151fa3ad9ae">_LH_UNCONST</a>((entry)-&gt;v)</td></tr>
90 <tr class="separator:a0d4052ccfd8c5d351a9c1d3ba07671b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
91 </table><table class="memberdecls">
92 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
93 Typedefs</h2></td></tr>
94 <tr class="memitem:a671553d0ee3c2a123190ba0f8ed2b635"><td class="memItemLeft" align="right" valign="top">typedef void(&#160;</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>
95 <tr class="separator:a671553d0ee3c2a123190ba0f8ed2b635"><td class="memSeparator" colspan="2">&#160;</td></tr>
96 <tr class="memitem:a38bae27995dcfb6ee3fb109a9be229b2"><td class="memItemLeft" align="right" valign="top">typedef unsigned long(&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> )(const void *k)</td></tr>
97 <tr class="separator:a38bae27995dcfb6ee3fb109a9be229b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
98 <tr class="memitem:a91fd85fc81b0c7c83c62f00e84729091"><td class="memItemLeft" align="right" valign="top">typedef int(&#160;</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>
99 <tr class="separator:a91fd85fc81b0c7c83c62f00e84729091"><td class="memSeparator" colspan="2">&#160;</td></tr>
100 <tr class="memitem:a766e90057496fc6712d6be0da180a21f"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structlh__table.html">lh_table</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a766e90057496fc6712d6be0da180a21f">lh_table</a></td></tr>
101 <tr class="separator:a766e90057496fc6712d6be0da180a21f"><td class="memSeparator" colspan="2">&#160;</td></tr>
102 </table><table class="memberdecls">
103 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
104 Functions</h2></td></tr>
105 <tr class="memitem:ac8e1d61af44d9c0824d8c7980385bcd3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac8e1d61af44d9c0824d8c7980385bcd3">json_global_set_string_hash</a> (const int h)</td></tr>
106 <tr class="separator:ac8e1d61af44d9c0824d8c7980385bcd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
107 <tr class="memitem:a9c4f8a71dbe4d3390d9f7adb331beb0e"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a9c4f8a71dbe4d3390d9f7adb331beb0e">lh_table_new</a> (int size, <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>
108 <tr class="separator:a9c4f8a71dbe4d3390d9f7adb331beb0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
109 <tr class="memitem:a6bf630754affe92612639542a6c49c3f"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a6bf630754affe92612639542a6c49c3f">lh_kchar_table_new</a> (int size, <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>
110 <tr class="separator:a6bf630754affe92612639542a6c49c3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
111 <tr class="memitem:af8108563b961dbf5471fe2c0e51f40a5"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#af8108563b961dbf5471fe2c0e51f40a5">lh_kptr_table_new</a> (int size, <a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>
112 <tr class="separator:af8108563b961dbf5471fe2c0e51f40a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
113 <tr class="memitem:a81653acf740cf8c9fe672e6cd16df0cf"><td class="memItemLeft" align="right" valign="top">void&#160;</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>
114 <tr class="separator:a81653acf740cf8c9fe672e6cd16df0cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
115 <tr class="memitem:a86c0cd547be1e2c2486a73bd58e1352c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a86c0cd547be1e2c2486a73bd58e1352c">lh_table_insert</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k, const void *v)</td></tr>
116 <tr class="separator:a86c0cd547be1e2c2486a73bd58e1352c"><td class="memSeparator" colspan="2">&#160;</td></tr>
117 <tr class="memitem:a4558a9347a422e03a15b0b7a29b82dc3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a4558a9347a422e03a15b0b7a29b82dc3">lh_table_insert_w_hash</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k, const void *v, const unsigned long h, const unsigned opts)</td></tr>
118 <tr class="separator:a4558a9347a422e03a15b0b7a29b82dc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
119 <tr class="memitem:ad3b6ca2d967a6c3021ee6c39e014a918"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&#160;</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>
120 <tr class="separator:ad3b6ca2d967a6c3021ee6c39e014a918"><td class="memSeparator" colspan="2">&#160;</td></tr>
121 <tr class="memitem:a59ecaf34ef59280952f4459b2de63677"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a59ecaf34ef59280952f4459b2de63677">lh_table_lookup_entry_w_hash</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k, const unsigned long h)</td></tr>
122 <tr class="separator:a59ecaf34ef59280952f4459b2de63677"><td class="memSeparator" colspan="2">&#160;</td></tr>
123 <tr class="memitem:a81c270bb0dd9d5c8a3e7ae20bc4d67f3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="json__types_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>&#160;</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>
124 <tr class="separator:a81c270bb0dd9d5c8a3e7ae20bc4d67f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
125 <tr class="memitem:ae5885a71c3457190fb1dc2d6e20dde3b"><td class="memItemLeft" align="right" valign="top">int&#160;</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>
126 <tr class="separator:ae5885a71c3457190fb1dc2d6e20dde3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
127 <tr class="memitem:a2fed2c78f70d229edb2d00775ffe593c"><td class="memItemLeft" align="right" valign="top">int&#160;</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>
128 <tr class="separator:a2fed2c78f70d229edb2d00775ffe593c"><td class="memSeparator" colspan="2">&#160;</td></tr>
129 <tr class="memitem:ac9ba631c91fe80fb905f04c7cd526f2b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac9ba631c91fe80fb905f04c7cd526f2b">lh_table_length</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t)</td></tr>
130 <tr class="separator:ac9ba631c91fe80fb905f04c7cd526f2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
131 <tr class="memitem:a30c8414e31aeee7669acc938116d933f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a30c8414e31aeee7669acc938116d933f">lh_table_resize</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, int new_size)</td></tr>
132 <tr class="separator:a30c8414e31aeee7669acc938116d933f"><td class="memSeparator" colspan="2">&#160;</td></tr>
133 </table>
134 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
135 <div class="textblock"><p>Internal methods for working with json_type_object objects. Although this is exposed by the <a class="el" href="json__object_8h.html#a2caa52ae1863bd073444f3737138a4db">json_object_get_object()</a> function and within the <a class="el" href="structjson__object__iter.html">json_object_iter</a> type, it is not recommended for direct use. </p>
136 </div><h2 class="groupheader">Macro Definition Documentation</h2>
137 <a class="anchor" id="a77c5cddef96e6f1ab036ccf911783456"></a>
138 <div class="memitem">
139 <div class="memproto">
140       <table class="memname">
141         <tr>
142           <td class="memname">#define _LH_INLINE&#160;&#160;&#160;inline</td>
143         </tr>
144       </table>
145 </div><div class="memdoc">
146 <dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000007">Deprecated:</a></b></dt><dd>Don't use this outside of <a class="el" href="linkhash_8h.html" title="Internal methods for working with json_type_object objects. Although this is exposed by the json_obje...">linkhash.h</a>: </dd></dl>
147
148 </div>
149 </div>
150 <a class="anchor" id="afb856ed4a9bcfd090dde5151fa3ad9ae"></a>
151 <div class="memitem">
152 <div class="memproto">
153       <table class="memname">
154         <tr>
155           <td class="memname">#define _LH_UNCONST</td>
156           <td>(</td>
157           <td class="paramtype">&#160;</td>
158           <td class="paramname">a</td><td>)</td>
159           <td>&#160;&#160;&#160;((void *)(uintptr_t)(const void *)(a))</td>
160         </tr>
161       </table>
162 </div><div class="memdoc">
163 <dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000008">Deprecated:</a></b></dt><dd>Don't use this outside of <a class="el" href="linkhash_8h.html" title="Internal methods for working with json_type_object objects. Although this is exposed by the json_obje...">linkhash.h</a>: </dd></dl>
164
165 </div>
166 </div>
167 <a class="anchor" id="ac32e80138c5be6dd9b0483a9cbcc8799"></a>
168 <div class="memitem">
169 <div class="memproto">
170       <table class="memname">
171         <tr>
172           <td class="memname">#define JSON_C_STR_HASH_DFLT&#160;&#160;&#160;0</td>
173         </tr>
174       </table>
175 </div><div class="memdoc">
176 <p>default string hash function </p>
177
178 </div>
179 </div>
180 <a class="anchor" id="a62316f34fd42941b97a8e9a6b6e68faa"></a>
181 <div class="memitem">
182 <div class="memproto">
183       <table class="memname">
184         <tr>
185           <td class="memname">#define JSON_C_STR_HASH_PERLLIKE&#160;&#160;&#160;1</td>
186         </tr>
187       </table>
188 </div><div class="memdoc">
189 <p>perl-like string hash function </p>
190
191 </div>
192 </div>
193 <a class="anchor" id="a93fad7f8ae44575dc89c9567859972d2"></a>
194 <div class="memitem">
195 <div class="memproto">
196       <table class="memname">
197         <tr>
198           <td class="memname">#define LH_EMPTY&#160;&#160;&#160;(void *)-1</td>
199         </tr>
200       </table>
201 </div><div class="memdoc">
202 <p>sentinel pointer value for empty slots </p>
203
204 </div>
205 </div>
206 <a class="anchor" id="a7579ce28b8366fc9b8656f14270aa3aa"></a>
207 <div class="memitem">
208 <div class="memproto">
209       <table class="memname">
210         <tr>
211           <td class="memname">#define lh_entry_k</td>
212           <td>(</td>
213           <td class="paramtype">&#160;</td>
214           <td class="paramname">entry</td><td>)</td>
215           <td>&#160;&#160;&#160;<a class="el" href="linkhash_8h.html#afb856ed4a9bcfd090dde5151fa3ad9ae">_LH_UNCONST</a>((entry)-&gt;k)</td>
216         </tr>
217       </table>
218 </div><div class="memdoc">
219 <p>Return a non-const version of <a class="el" href="structlh__entry.html#a79d9f1ef0dc444e17105aaeaf167e22c">lh_entry.k</a>.</p>
220 <p><a class="el" href="structlh__entry.html#a79d9f1ef0dc444e17105aaeaf167e22c">lh_entry.k</a> is const to indicate and help ensure that linkhash itself doesn't modify it, but callers are allowed to do what they want with it. See also <a class="el" href="structlh__entry.html#a14f40cc124c32b03f81151ae7934d2e7">lh_entry.k_is_constant</a> </p>
221
222 </div>
223 </div>
224 <a class="anchor" id="a0d4052ccfd8c5d351a9c1d3ba07671b3"></a>
225 <div class="memitem">
226 <div class="memproto">
227       <table class="memname">
228         <tr>
229           <td class="memname">#define lh_entry_v</td>
230           <td>(</td>
231           <td class="paramtype">&#160;</td>
232           <td class="paramname">entry</td><td>)</td>
233           <td>&#160;&#160;&#160;<a class="el" href="linkhash_8h.html#afb856ed4a9bcfd090dde5151fa3ad9ae">_LH_UNCONST</a>((entry)-&gt;v)</td>
234         </tr>
235       </table>
236 </div><div class="memdoc">
237 <p>Return a non-const version of <a class="el" href="structlh__entry.html#a1b676732ab2ad3eeaedf6ec60a6a0835">lh_entry.v</a>.</p>
238 <p>v is const to indicate and help ensure that linkhash itself doesn't modify it, but callers are allowed to do what they want with it. </p>
239
240 </div>
241 </div>
242 <a class="anchor" id="ad7dd67da915065dce2c6f44cb03e2d82"></a>
243 <div class="memitem">
244 <div class="memproto">
245       <table class="memname">
246         <tr>
247           <td class="memname">#define lh_foreach</td>
248           <td>(</td>
249           <td class="paramtype">&#160;</td>
250           <td class="paramname">table, </td>
251         </tr>
252         <tr>
253           <td class="paramkey"></td>
254           <td></td>
255           <td class="paramtype">&#160;</td>
256           <td class="paramname">entry&#160;</td>
257         </tr>
258         <tr>
259           <td></td>
260           <td>)</td>
261           <td></td><td>&#160;&#160;&#160;for (entry = table-&gt;head; entry; entry = entry-&gt;next)</td>
262         </tr>
263       </table>
264 </div><div class="memdoc">
265 <p>Convenience list iterator. </p>
266
267 </div>
268 </div>
269 <a class="anchor" id="abcbb0df08b4976d0649b826b6bacfca1"></a>
270 <div class="memitem">
271 <div class="memproto">
272       <table class="memname">
273         <tr>
274           <td class="memname">#define lh_foreach_safe</td>
275           <td>(</td>
276           <td class="paramtype">&#160;</td>
277           <td class="paramname">table, </td>
278         </tr>
279         <tr>
280           <td class="paramkey"></td>
281           <td></td>
282           <td class="paramtype">&#160;</td>
283           <td class="paramname">entry, </td>
284         </tr>
285         <tr>
286           <td class="paramkey"></td>
287           <td></td>
288           <td class="paramtype">&#160;</td>
289           <td class="paramname">tmp&#160;</td>
290         </tr>
291         <tr>
292           <td></td>
293           <td>)</td>
294           <td></td><td>&#160;&#160;&#160;for (entry = table-&gt;head; entry &amp;&amp; ((tmp = entry-&gt;next) || 1); entry = tmp)</td>
295         </tr>
296       </table>
297 </div><div class="memdoc">
298 <p>lh_foreach_safe allows calling of deletion routine while iterating.</p>
299 <dl class="params"><dt>Parameters</dt><dd>
300   <table class="params">
301     <tr><td class="paramname">table</td><td>a struct <a class="el" href="structlh__table.html">lh_table</a> * to iterate over </td></tr>
302     <tr><td class="paramname">entry</td><td>a struct <a class="el" href="structlh__entry.html">lh_entry</a> * variable to hold each element </td></tr>
303     <tr><td class="paramname">tmp</td><td>a struct <a class="el" href="structlh__entry.html">lh_entry</a> * variable to hold a temporary pointer to the next element </td></tr>
304   </table>
305   </dd>
306 </dl>
307
308 </div>
309 </div>
310 <a class="anchor" id="ac69428f2de0a6fb080b6fb373d506aa7"></a>
311 <div class="memitem">
312 <div class="memproto">
313       <table class="memname">
314         <tr>
315           <td class="memname">#define LH_FREED&#160;&#160;&#160;(void *)-2</td>
316         </tr>
317       </table>
318 </div><div class="memdoc">
319 <p>sentinel pointer value for freed slots </p>
320
321 </div>
322 </div>
323 <a class="anchor" id="a66b61772c29d85eb52b697e0b0dc0aaf"></a>
324 <div class="memitem">
325 <div class="memproto">
326       <table class="memname">
327         <tr>
328           <td class="memname">#define LH_LOAD_FACTOR&#160;&#160;&#160;0.66</td>
329         </tr>
330       </table>
331 </div><div class="memdoc">
332 <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>
333
334 </div>
335 </div>
336 <a class="anchor" id="a032f1bd115df254dda325437203ce5fb"></a>
337 <div class="memitem">
338 <div class="memproto">
339       <table class="memname">
340         <tr>
341           <td class="memname">#define LH_PRIME&#160;&#160;&#160;0x9e370001UL</td>
342         </tr>
343       </table>
344 </div><div class="memdoc">
345 <p>golden prime used in hash functions </p>
346
347 </div>
348 </div>
349 <h2 class="groupheader">Typedef Documentation</h2>
350 <a class="anchor" id="a671553d0ee3c2a123190ba0f8ed2b635"></a>
351 <div class="memitem">
352 <div class="memproto">
353       <table class="memname">
354         <tr>
355           <td class="memname">typedef void( lh_entry_free_fn)(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td>
356         </tr>
357       </table>
358 </div><div class="memdoc">
359 <p>callback function prototypes </p>
360
361 </div>
362 </div>
363 <a class="anchor" id="a91fd85fc81b0c7c83c62f00e84729091"></a>
364 <div class="memitem">
365 <div class="memproto">
366       <table class="memname">
367         <tr>
368           <td class="memname">typedef int( lh_equal_fn)(const void *k1, const void *k2)</td>
369         </tr>
370       </table>
371 </div><div class="memdoc">
372 <p>callback function prototypes </p>
373
374 </div>
375 </div>
376 <a class="anchor" id="a38bae27995dcfb6ee3fb109a9be229b2"></a>
377 <div class="memitem">
378 <div class="memproto">
379       <table class="memname">
380         <tr>
381           <td class="memname">typedef unsigned long( lh_hash_fn)(const void *k)</td>
382         </tr>
383       </table>
384 </div><div class="memdoc">
385 <p>callback function prototypes </p>
386
387 </div>
388 </div>
389 <a class="anchor" id="a766e90057496fc6712d6be0da180a21f"></a>
390 <div class="memitem">
391 <div class="memproto">
392       <table class="memname">
393         <tr>
394           <td class="memname">typedef struct <a class="el" href="structlh__table.html">lh_table</a> <a class="el" href="structlh__table.html">lh_table</a></td>
395         </tr>
396       </table>
397 </div><div class="memdoc">
398
399 </div>
400 </div>
401 <h2 class="groupheader">Function Documentation</h2>
402 <a class="anchor" id="ac8e1d61af44d9c0824d8c7980385bcd3"></a>
403 <div class="memitem">
404 <div class="memproto">
405       <table class="memname">
406         <tr>
407           <td class="memname">int json_global_set_string_hash </td>
408           <td>(</td>
409           <td class="paramtype">const int&#160;</td>
410           <td class="paramname"><em>h</em></td><td>)</td>
411           <td></td>
412         </tr>
413       </table>
414 </div><div class="memdoc">
415 <p>This function sets the hash function to be used for strings. Must be one of the JSON_C_STR_HASH_* values. </p>
416 <dl class="section return"><dt>Returns</dt><dd>0 - ok, -1 if parameter was invalid </dd></dl>
417
418 </div>
419 </div>
420 <a class="anchor" id="a6bf630754affe92612639542a6c49c3f"></a>
421 <div class="memitem">
422 <div class="memproto">
423 <table class="mlabels">
424   <tr>
425   <td class="mlabels-left">
426       <table class="memname">
427         <tr>
428           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kchar_table_new </td>
429           <td>(</td>
430           <td class="paramtype">int&#160;</td>
431           <td class="paramname"><em>size</em>, </td>
432         </tr>
433         <tr>
434           <td class="paramkey"></td>
435           <td></td>
436           <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&#160;</td>
437           <td class="paramname"><em>free_fn</em>&#160;</td>
438         </tr>
439         <tr>
440           <td></td>
441           <td>)</td>
442           <td></td><td></td>
443         </tr>
444       </table>
445   </td>
446   <td class="mlabels-right">
447 <span class="mlabels"><span class="mlabel">read</span></span>  </td>
448   </tr>
449 </table>
450 </div><div class="memdoc">
451 <p>Convenience function to create a new linkhash table with char keys.</p>
452 <dl class="params"><dt>Parameters</dt><dd>
453   <table class="params">
454     <tr><td class="paramname">size</td><td>initial table size. </td></tr>
455     <tr><td class="paramname">free_fn</td><td>callback function used to free memory for entries. </td></tr>
456   </table>
457   </dd>
458 </dl>
459 <dl class="section return"><dt>Returns</dt><dd>On success, a pointer to the new linkhash table is returned. On error, a null pointer is returned. </dd></dl>
460
461 </div>
462 </div>
463 <a class="anchor" id="af8108563b961dbf5471fe2c0e51f40a5"></a>
464 <div class="memitem">
465 <div class="memproto">
466 <table class="mlabels">
467   <tr>
468   <td class="mlabels-left">
469       <table class="memname">
470         <tr>
471           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kptr_table_new </td>
472           <td>(</td>
473           <td class="paramtype">int&#160;</td>
474           <td class="paramname"><em>size</em>, </td>
475         </tr>
476         <tr>
477           <td class="paramkey"></td>
478           <td></td>
479           <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&#160;</td>
480           <td class="paramname"><em>free_fn</em>&#160;</td>
481         </tr>
482         <tr>
483           <td></td>
484           <td>)</td>
485           <td></td><td></td>
486         </tr>
487       </table>
488   </td>
489   <td class="mlabels-right">
490 <span class="mlabels"><span class="mlabel">read</span></span>  </td>
491   </tr>
492 </table>
493 </div><div class="memdoc">
494 <p>Convenience function to create a new linkhash table with ptr keys.</p>
495 <dl class="params"><dt>Parameters</dt><dd>
496   <table class="params">
497     <tr><td class="paramname">size</td><td>initial table size. </td></tr>
498     <tr><td class="paramname">free_fn</td><td>callback function used to free memory for entries. </td></tr>
499   </table>
500   </dd>
501 </dl>
502 <dl class="section return"><dt>Returns</dt><dd>On success, a pointer to the new linkhash table is returned. On error, a null pointer is returned. </dd></dl>
503
504 </div>
505 </div>
506 <a class="anchor" id="a2fed2c78f70d229edb2d00775ffe593c"></a>
507 <div class="memitem">
508 <div class="memproto">
509       <table class="memname">
510         <tr>
511           <td class="memname">int lh_table_delete </td>
512           <td>(</td>
513           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
514           <td class="paramname"><em>t</em>, </td>
515         </tr>
516         <tr>
517           <td class="paramkey"></td>
518           <td></td>
519           <td class="paramtype">const void *&#160;</td>
520           <td class="paramname"><em>k</em>&#160;</td>
521         </tr>
522         <tr>
523           <td></td>
524           <td>)</td>
525           <td></td><td></td>
526         </tr>
527       </table>
528 </div><div class="memdoc">
529 <p>Delete a record from the table.</p>
530 <p>If a callback free function is provided then it is called for the for the item being deleted. </p>
531 <dl class="params"><dt>Parameters</dt><dd>
532   <table class="params">
533     <tr><td class="paramname">t</td><td>the table to delete from. </td></tr>
534     <tr><td class="paramname">k</td><td>a pointer to the key to delete. </td></tr>
535   </table>
536   </dd>
537 </dl>
538 <dl class="section return"><dt>Returns</dt><dd>0 if the item was deleted. </dd>
539 <dd>
540 -1 if it was not found. </dd></dl>
541
542 </div>
543 </div>
544 <a class="anchor" id="ae5885a71c3457190fb1dc2d6e20dde3b"></a>
545 <div class="memitem">
546 <div class="memproto">
547       <table class="memname">
548         <tr>
549           <td class="memname">int lh_table_delete_entry </td>
550           <td>(</td>
551           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
552           <td class="paramname"><em>t</em>, </td>
553         </tr>
554         <tr>
555           <td class="paramkey"></td>
556           <td></td>
557           <td class="paramtype">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&#160;</td>
558           <td class="paramname"><em>e</em>&#160;</td>
559         </tr>
560         <tr>
561           <td></td>
562           <td>)</td>
563           <td></td><td></td>
564         </tr>
565       </table>
566 </div><div class="memdoc">
567 <p>Delete a record from the table.</p>
568 <p>If a callback free function is provided then it is called for the for the item being deleted. </p>
569 <dl class="params"><dt>Parameters</dt><dd>
570   <table class="params">
571     <tr><td class="paramname">t</td><td>the table to delete from. </td></tr>
572     <tr><td class="paramname">e</td><td>a pointer to the entry to delete. </td></tr>
573   </table>
574   </dd>
575 </dl>
576 <dl class="section return"><dt>Returns</dt><dd>0 if the item was deleted. </dd>
577 <dd>
578 -1 if it was not found. </dd></dl>
579
580 </div>
581 </div>
582 <a class="anchor" id="a81653acf740cf8c9fe672e6cd16df0cf"></a>
583 <div class="memitem">
584 <div class="memproto">
585       <table class="memname">
586         <tr>
587           <td class="memname">void lh_table_free </td>
588           <td>(</td>
589           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
590           <td class="paramname"><em>t</em></td><td>)</td>
591           <td></td>
592         </tr>
593       </table>
594 </div><div class="memdoc">
595 <p>Free a linkhash table.</p>
596 <p>If a lh_entry_free_fn callback free function was provided then it is called for all entries in the table.</p>
597 <dl class="params"><dt>Parameters</dt><dd>
598   <table class="params">
599     <tr><td class="paramname">t</td><td>table to free. </td></tr>
600   </table>
601   </dd>
602 </dl>
603
604 </div>
605 </div>
606 <a class="anchor" id="a86c0cd547be1e2c2486a73bd58e1352c"></a>
607 <div class="memitem">
608 <div class="memproto">
609       <table class="memname">
610         <tr>
611           <td class="memname">int lh_table_insert </td>
612           <td>(</td>
613           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
614           <td class="paramname"><em>t</em>, </td>
615         </tr>
616         <tr>
617           <td class="paramkey"></td>
618           <td></td>
619           <td class="paramtype">const void *&#160;</td>
620           <td class="paramname"><em>k</em>, </td>
621         </tr>
622         <tr>
623           <td class="paramkey"></td>
624           <td></td>
625           <td class="paramtype">const void *&#160;</td>
626           <td class="paramname"><em>v</em>&#160;</td>
627         </tr>
628         <tr>
629           <td></td>
630           <td>)</td>
631           <td></td><td></td>
632         </tr>
633       </table>
634 </div><div class="memdoc">
635 <p>Insert a record into the table.</p>
636 <dl class="params"><dt>Parameters</dt><dd>
637   <table class="params">
638     <tr><td class="paramname">t</td><td>the table to insert into. </td></tr>
639     <tr><td class="paramname">k</td><td>a pointer to the key to insert. </td></tr>
640     <tr><td class="paramname">v</td><td>a pointer to the value to insert.</td></tr>
641   </table>
642   </dd>
643 </dl>
644 <dl class="section return"><dt>Returns</dt><dd>On success, <code>0</code> is returned. On error, a negative value is returned. </dd></dl>
645
646 </div>
647 </div>
648 <a class="anchor" id="a4558a9347a422e03a15b0b7a29b82dc3"></a>
649 <div class="memitem">
650 <div class="memproto">
651       <table class="memname">
652         <tr>
653           <td class="memname">int lh_table_insert_w_hash </td>
654           <td>(</td>
655           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
656           <td class="paramname"><em>t</em>, </td>
657         </tr>
658         <tr>
659           <td class="paramkey"></td>
660           <td></td>
661           <td class="paramtype">const void *&#160;</td>
662           <td class="paramname"><em>k</em>, </td>
663         </tr>
664         <tr>
665           <td class="paramkey"></td>
666           <td></td>
667           <td class="paramtype">const void *&#160;</td>
668           <td class="paramname"><em>v</em>, </td>
669         </tr>
670         <tr>
671           <td class="paramkey"></td>
672           <td></td>
673           <td class="paramtype">const unsigned long&#160;</td>
674           <td class="paramname"><em>h</em>, </td>
675         </tr>
676         <tr>
677           <td class="paramkey"></td>
678           <td></td>
679           <td class="paramtype">const unsigned&#160;</td>
680           <td class="paramname"><em>opts</em>&#160;</td>
681         </tr>
682         <tr>
683           <td></td>
684           <td>)</td>
685           <td></td><td></td>
686         </tr>
687       </table>
688 </div><div class="memdoc">
689 <p>Insert a record into the table using a precalculated key hash.</p>
690 <p>The hash h, which should be calculated with lh_get_hash() on k, is provided by the caller, to allow for optimization when multiple operations with the same key are known to be needed.</p>
691 <dl class="params"><dt>Parameters</dt><dd>
692   <table class="params">
693     <tr><td class="paramname">t</td><td>the table to insert into. </td></tr>
694     <tr><td class="paramname">k</td><td>a pointer to the key to insert. </td></tr>
695     <tr><td class="paramname">v</td><td>a pointer to the value to insert. </td></tr>
696     <tr><td class="paramname">h</td><td>hash value of the key to insert </td></tr>
697     <tr><td class="paramname">opts</td><td>if set to JSON_C_OBJECT_KEY_IS_CONSTANT, sets <a class="el" href="structlh__entry.html#a14f40cc124c32b03f81151ae7934d2e7">lh_entry.k_is_constant</a> so t's free function knows to avoid freeing the key. </td></tr>
698   </table>
699   </dd>
700 </dl>
701
702 </div>
703 </div>
704 <a class="anchor" id="ac9ba631c91fe80fb905f04c7cd526f2b"></a>
705 <div class="memitem">
706 <div class="memproto">
707       <table class="memname">
708         <tr>
709           <td class="memname">int lh_table_length </td>
710           <td>(</td>
711           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
712           <td class="paramname"><em>t</em></td><td>)</td>
713           <td></td>
714         </tr>
715       </table>
716 </div><div class="memdoc">
717
718 </div>
719 </div>
720 <a class="anchor" id="ad3b6ca2d967a6c3021ee6c39e014a918"></a>
721 <div class="memitem">
722 <div class="memproto">
723 <table class="mlabels">
724   <tr>
725   <td class="mlabels-left">
726       <table class="memname">
727         <tr>
728           <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_lookup_entry </td>
729           <td>(</td>
730           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
731           <td class="paramname"><em>t</em>, </td>
732         </tr>
733         <tr>
734           <td class="paramkey"></td>
735           <td></td>
736           <td class="paramtype">const void *&#160;</td>
737           <td class="paramname"><em>k</em>&#160;</td>
738         </tr>
739         <tr>
740           <td></td>
741           <td>)</td>
742           <td></td><td></td>
743         </tr>
744       </table>
745   </td>
746   <td class="mlabels-right">
747 <span class="mlabels"><span class="mlabel">read</span></span>  </td>
748   </tr>
749 </table>
750 </div><div class="memdoc">
751 <p>Lookup a record in the table.</p>
752 <dl class="params"><dt>Parameters</dt><dd>
753   <table class="params">
754     <tr><td class="paramname">t</td><td>the table to lookup </td></tr>
755     <tr><td class="paramname">k</td><td>a pointer to the key to lookup </td></tr>
756   </table>
757   </dd>
758 </dl>
759 <dl class="section return"><dt>Returns</dt><dd>a pointer to the record structure of the value or NULL if it does not exist. </dd></dl>
760
761 </div>
762 </div>
763 <a class="anchor" id="a59ecaf34ef59280952f4459b2de63677"></a>
764 <div class="memitem">
765 <div class="memproto">
766 <table class="mlabels">
767   <tr>
768   <td class="mlabels-left">
769       <table class="memname">
770         <tr>
771           <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_lookup_entry_w_hash </td>
772           <td>(</td>
773           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
774           <td class="paramname"><em>t</em>, </td>
775         </tr>
776         <tr>
777           <td class="paramkey"></td>
778           <td></td>
779           <td class="paramtype">const void *&#160;</td>
780           <td class="paramname"><em>k</em>, </td>
781         </tr>
782         <tr>
783           <td class="paramkey"></td>
784           <td></td>
785           <td class="paramtype">const unsigned long&#160;</td>
786           <td class="paramname"><em>h</em>&#160;</td>
787         </tr>
788         <tr>
789           <td></td>
790           <td>)</td>
791           <td></td><td></td>
792         </tr>
793       </table>
794   </td>
795   <td class="mlabels-right">
796 <span class="mlabels"><span class="mlabel">read</span></span>  </td>
797   </tr>
798 </table>
799 </div><div class="memdoc">
800 <p>Lookup a record in the table using a precalculated key hash.</p>
801 <p>The hash h, which should be calculated with lh_get_hash() on k, is provided by the caller, to allow for optimization when multiple operations with the same key are known to be needed.</p>
802 <dl class="params"><dt>Parameters</dt><dd>
803   <table class="params">
804     <tr><td class="paramname">t</td><td>the table to lookup </td></tr>
805     <tr><td class="paramname">k</td><td>a pointer to the key to lookup </td></tr>
806     <tr><td class="paramname">h</td><td>hash value of the key to lookup </td></tr>
807   </table>
808   </dd>
809 </dl>
810 <dl class="section return"><dt>Returns</dt><dd>a pointer to the record structure of the value or NULL if it does not exist. </dd></dl>
811
812 </div>
813 </div>
814 <a class="anchor" id="a81c270bb0dd9d5c8a3e7ae20bc4d67f3"></a>
815 <div class="memitem">
816 <div class="memproto">
817       <table class="memname">
818         <tr>
819           <td class="memname"><a class="el" href="json__types_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> lh_table_lookup_ex </td>
820           <td>(</td>
821           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
822           <td class="paramname"><em>t</em>, </td>
823         </tr>
824         <tr>
825           <td class="paramkey"></td>
826           <td></td>
827           <td class="paramtype">const void *&#160;</td>
828           <td class="paramname"><em>k</em>, </td>
829         </tr>
830         <tr>
831           <td class="paramkey"></td>
832           <td></td>
833           <td class="paramtype">void **&#160;</td>
834           <td class="paramname"><em>v</em>&#160;</td>
835         </tr>
836         <tr>
837           <td></td>
838           <td>)</td>
839           <td></td><td></td>
840         </tr>
841       </table>
842 </div><div class="memdoc">
843 <p>Lookup a record in the table.</p>
844 <dl class="params"><dt>Parameters</dt><dd>
845   <table class="params">
846     <tr><td class="paramname">t</td><td>the table to lookup </td></tr>
847     <tr><td class="paramname">k</td><td>a pointer to the key to lookup </td></tr>
848     <tr><td class="paramname">v</td><td>a pointer to a where to store the found value (set to NULL if it doesn't exist). </td></tr>
849   </table>
850   </dd>
851 </dl>
852 <dl class="section return"><dt>Returns</dt><dd>whether or not the key was found </dd></dl>
853
854 </div>
855 </div>
856 <a class="anchor" id="a9c4f8a71dbe4d3390d9f7adb331beb0e"></a>
857 <div class="memitem">
858 <div class="memproto">
859 <table class="mlabels">
860   <tr>
861   <td class="mlabels-left">
862       <table class="memname">
863         <tr>
864           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_table_new </td>
865           <td>(</td>
866           <td class="paramtype">int&#160;</td>
867           <td class="paramname"><em>size</em>, </td>
868         </tr>
869         <tr>
870           <td class="paramkey"></td>
871           <td></td>
872           <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&#160;</td>
873           <td class="paramname"><em>free_fn</em>, </td>
874         </tr>
875         <tr>
876           <td class="paramkey"></td>
877           <td></td>
878           <td class="paramtype"><a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *&#160;</td>
879           <td class="paramname"><em>hash_fn</em>, </td>
880         </tr>
881         <tr>
882           <td class="paramkey"></td>
883           <td></td>
884           <td class="paramtype"><a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *&#160;</td>
885           <td class="paramname"><em>equal_fn</em>&#160;</td>
886         </tr>
887         <tr>
888           <td></td>
889           <td>)</td>
890           <td></td><td></td>
891         </tr>
892       </table>
893   </td>
894   <td class="mlabels-right">
895 <span class="mlabels"><span class="mlabel">read</span></span>  </td>
896   </tr>
897 </table>
898 </div><div class="memdoc">
899 <p>Create a new linkhash table.</p>
900 <dl class="params"><dt>Parameters</dt><dd>
901   <table class="params">
902     <tr><td class="paramname">size</td><td>initial table size. The table is automatically resized although this incurs a performance penalty. </td></tr>
903     <tr><td class="paramname">free_fn</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>
904     <tr><td class="paramname">hash_fn</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>
905     <tr><td class="paramname">equal_fn</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>
906   </table>
907   </dd>
908 </dl>
909 <dl class="section return"><dt>Returns</dt><dd>On success, a pointer to the new linkhash table is returned. On error, a null pointer is returned. </dd></dl>
910
911 </div>
912 </div>
913 <a class="anchor" id="a30c8414e31aeee7669acc938116d933f"></a>
914 <div class="memitem">
915 <div class="memproto">
916       <table class="memname">
917         <tr>
918           <td class="memname">int lh_table_resize </td>
919           <td>(</td>
920           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
921           <td class="paramname"><em>t</em>, </td>
922         </tr>
923         <tr>
924           <td class="paramkey"></td>
925           <td></td>
926           <td class="paramtype">int&#160;</td>
927           <td class="paramname"><em>new_size</em>&#160;</td>
928         </tr>
929         <tr>
930           <td></td>
931           <td>)</td>
932           <td></td><td></td>
933         </tr>
934       </table>
935 </div><div class="memdoc">
936 <p>Resizes the specified table.</p>
937 <dl class="params"><dt>Parameters</dt><dd>
938   <table class="params">
939     <tr><td class="paramname">t</td><td>Pointer to table to resize. </td></tr>
940     <tr><td class="paramname">new_size</td><td>New table size. Must be positive.</td></tr>
941   </table>
942   </dd>
943 </dl>
944 <dl class="section return"><dt>Returns</dt><dd>On success, <code>0</code> is returned. On error, a negative value is returned. </dd></dl>
945
946 </div>
947 </div>
948 </div><!-- contents -->
949 <!-- start footer part -->
950 <hr class="footer"/><address class="footer"><small>
951 Generated on Sun Apr 19 2020 03:40:44 for json-c by &#160;<a href="http://www.doxygen.org/index.html">
952 <img class="footer" src="doxygen.png" alt="doxygen"/>
953 </a> 1.8.2
954 </small></address>
955 </body>
956 </html>