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