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