Bump to 0.17
[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 <title>json-c: linkhash.h File Reference</title>
7 <link href="tabs.css" rel="stylesheet" type="text/css"/>
8 <script type="text/javascript" src="jquery.js"></script>
9 <script type="text/javascript" src="dynsections.js"></script>
10 <link href="doxygen.css" rel="stylesheet" type="text/css" />
11 </head>
12 <body>
13 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
14 <div id="titlearea">
15 <table cellspacing="0" cellpadding="0">
16  <tbody>
17  <tr style="height: 56px;">
18   <td style="padding-left: 0.5em;">
19    <div id="projectname">json-c
20    &#160;<span id="projectnumber">0.17</span>
21    </div>
22   </td>
23  </tr>
24  </tbody>
25 </table>
26 </div>
27 <!-- end header part -->
28 <!-- Generated by Doxygen 1.8.2 -->
29   <div id="navrow1" class="tabs">
30     <ul class="tablist">
31       <li><a href="index.html"><span>Main&#160;Page</span></a></li>
32       <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
33       <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
34       <li class="current"><a href="files.html"><span>Files</span></a></li>
35     </ul>
36   </div>
37   <div id="navrow2" class="tabs2">
38     <ul class="tablist">
39       <li><a href="files.html"><span>File&#160;List</span></a></li>
40       <li><a href="globals.html"><span>Globals</span></a></li>
41     </ul>
42   </div>
43 </div><!-- top -->
44 <div class="header">
45   <div class="summary">
46 <a href="#nested-classes">Data Structures</a> &#124;
47 <a href="#define-members">Macros</a> &#124;
48 <a href="#typedef-members">Typedefs</a> &#124;
49 <a href="#func-members">Functions</a>  </div>
50   <div class="headertitle">
51 <div class="title">linkhash.h File Reference</div>  </div>
52 </div><!--header-->
53 <div class="contents">
54
55 <p>Internal methods for working with json_type_object objects. Although this is exposed by the <a class="el" href="json__object_8h.html#a2caa52ae1863bd073444f3737138a4db">json_object_get_object()</a> function and within the <a class="el" href="structjson__object__iter.html">json_object_iter</a> type, it is not recommended for direct use.  
56 <a href="#details">More...</a></p>
57 <table class="memberdecls">
58 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
59 Data Structures</h2></td></tr>
60 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html">lh_entry</a></td></tr>
61 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
62 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html">lh_table</a></td></tr>
63 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
64 </table><table class="memberdecls">
65 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
66 Macros</h2></td></tr>
67 <tr class="memitem:a032f1bd115df254dda325437203ce5fb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a032f1bd115df254dda325437203ce5fb">LH_PRIME</a>&#160;&#160;&#160;0x9e370001UL</td></tr>
68 <tr class="separator:a032f1bd115df254dda325437203ce5fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
69 <tr class="memitem:a66b61772c29d85eb52b697e0b0dc0aaf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a66b61772c29d85eb52b697e0b0dc0aaf">LH_LOAD_FACTOR</a>&#160;&#160;&#160;0.66</td></tr>
70 <tr class="separator:a66b61772c29d85eb52b697e0b0dc0aaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
71 <tr class="memitem:a93fad7f8ae44575dc89c9567859972d2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a93fad7f8ae44575dc89c9567859972d2">LH_EMPTY</a>&#160;&#160;&#160;(void *)-1</td></tr>
72 <tr class="separator:a93fad7f8ae44575dc89c9567859972d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
73 <tr class="memitem:ac69428f2de0a6fb080b6fb373d506aa7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac69428f2de0a6fb080b6fb373d506aa7">LH_FREED</a>&#160;&#160;&#160;(void *)-2</td></tr>
74 <tr class="separator:ac69428f2de0a6fb080b6fb373d506aa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
75 <tr class="memitem:ac32e80138c5be6dd9b0483a9cbcc8799"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ac32e80138c5be6dd9b0483a9cbcc8799">JSON_C_STR_HASH_DFLT</a>&#160;&#160;&#160;0</td></tr>
76 <tr class="separator:ac32e80138c5be6dd9b0483a9cbcc8799"><td class="memSeparator" colspan="2">&#160;</td></tr>
77 <tr class="memitem:a62316f34fd42941b97a8e9a6b6e68faa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a62316f34fd42941b97a8e9a6b6e68faa">JSON_C_STR_HASH_PERLLIKE</a>&#160;&#160;&#160;1</td></tr>
78 <tr class="separator:a62316f34fd42941b97a8e9a6b6e68faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
79 <tr class="memitem:ad7dd67da915065dce2c6f44cb03e2d82"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ad7dd67da915065dce2c6f44cb03e2d82">lh_foreach</a>(table, entry)&#160;&#160;&#160;for (entry = <a class="el" href="linkhash_8h.html#a3bacf1f7c40830c20440fd95d493f35f">lh_table_head</a>(table); entry; entry = <a class="el" href="linkhash_8h.html#a603f6f2cc6d292a160b09b357c7a0a69">lh_entry_next</a>(entry))</td></tr>
80 <tr class="separator:ad7dd67da915065dce2c6f44cb03e2d82"><td class="memSeparator" colspan="2">&#160;</td></tr>
81 <tr class="memitem:abcbb0df08b4976d0649b826b6bacfca1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#abcbb0df08b4976d0649b826b6bacfca1">lh_foreach_safe</a>(table, entry, tmp)&#160;&#160;&#160;for (entry = <a class="el" href="linkhash_8h.html#a3bacf1f7c40830c20440fd95d493f35f">lh_table_head</a>(table); entry &amp;&amp; ((tmp = <a class="el" href="linkhash_8h.html#a603f6f2cc6d292a160b09b357c7a0a69">lh_entry_next</a>(entry)) || 1); entry = tmp)</td></tr>
82 <tr class="separator:abcbb0df08b4976d0649b826b6bacfca1"><td class="memSeparator" colspan="2">&#160;</td></tr>
83 </table><table class="memberdecls">
84 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
85 Typedefs</h2></td></tr>
86 <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>
87 <tr class="separator:a671553d0ee3c2a123190ba0f8ed2b635"><td class="memSeparator" colspan="2">&#160;</td></tr>
88 <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>
89 <tr class="separator:a38bae27995dcfb6ee3fb109a9be229b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
90 <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>
91 <tr class="separator:a91fd85fc81b0c7c83c62f00e84729091"><td class="memSeparator" colspan="2">&#160;</td></tr>
92 <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>
93 <tr class="separator:a766e90057496fc6712d6be0da180a21f"><td class="memSeparator" colspan="2">&#160;</td></tr>
94 </table><table class="memberdecls">
95 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
96 Functions</h2></td></tr>
97 <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>
98 <tr class="separator:ac8e1d61af44d9c0824d8c7980385bcd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
99 <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>
100 <tr class="separator:a9c4f8a71dbe4d3390d9f7adb331beb0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
101 <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>
102 <tr class="separator:a6bf630754affe92612639542a6c49c3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
103 <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>
104 <tr class="separator:af8108563b961dbf5471fe2c0e51f40a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
105 <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>
106 <tr class="separator:a81653acf740cf8c9fe672e6cd16df0cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
107 <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>
108 <tr class="separator:a86c0cd547be1e2c2486a73bd58e1352c"><td class="memSeparator" colspan="2">&#160;</td></tr>
109 <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>
110 <tr class="separator:a4558a9347a422e03a15b0b7a29b82dc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
111 <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>
112 <tr class="separator:ad3b6ca2d967a6c3021ee6c39e014a918"><td class="memSeparator" colspan="2">&#160;</td></tr>
113 <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>
114 <tr class="separator:a59ecaf34ef59280952f4459b2de63677"><td class="memSeparator" colspan="2">&#160;</td></tr>
115 <tr class="memitem:a81c270bb0dd9d5c8a3e7ae20bc4d67f3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="json__types_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a81c270bb0dd9d5c8a3e7ae20bc4d67f3">lh_table_lookup_ex</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k, void **v)</td></tr>
116 <tr class="separator:a81c270bb0dd9d5c8a3e7ae20bc4d67f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
117 <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>
118 <tr class="separator:ae5885a71c3457190fb1dc2d6e20dde3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
119 <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>
120 <tr class="separator:a2fed2c78f70d229edb2d00775ffe593c"><td class="memSeparator" colspan="2">&#160;</td></tr>
121 <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>
122 <tr class="separator:ac9ba631c91fe80fb905f04c7cd526f2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
123 <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>
124 <tr class="separator:a30c8414e31aeee7669acc938116d933f"><td class="memSeparator" colspan="2">&#160;</td></tr>
125 <tr class="memitem:a3bacf1f7c40830c20440fd95d493f35f"><td class="memItemLeft" align="right" valign="top">static 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#a3bacf1f7c40830c20440fd95d493f35f">lh_table_head</a> (const <a class="el" href="structlh__table.html">lh_table</a> *t)</td></tr>
126 <tr class="separator:a3bacf1f7c40830c20440fd95d493f35f"><td class="memSeparator" colspan="2">&#160;</td></tr>
127 <tr class="memitem:a33c74c884530d407d0b3baa365238fb4"><td class="memItemLeft" align="right" valign="top">static unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a33c74c884530d407d0b3baa365238fb4">lh_get_hash</a> (const struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>
128 <tr class="separator:a33c74c884530d407d0b3baa365238fb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
129 <tr class="memitem:a82e5d699ba2fd4c520352c003f8554a5"><td class="memItemLeft" align="right" valign="top">static void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a82e5d699ba2fd4c520352c003f8554a5">lh_entry_k</a> (const struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
130 <tr class="separator:a82e5d699ba2fd4c520352c003f8554a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
131 <tr class="memitem:a724c308f1c606271ea3deb01ed9e3cc9"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#a724c308f1c606271ea3deb01ed9e3cc9">lh_entry_k_is_constant</a> (const struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
132 <tr class="separator:a724c308f1c606271ea3deb01ed9e3cc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
133 <tr class="memitem:ab163f65568af863f3738ccd05900745e"><td class="memItemLeft" align="right" valign="top">static void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ab163f65568af863f3738ccd05900745e">lh_entry_v</a> (const struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
134 <tr class="separator:ab163f65568af863f3738ccd05900745e"><td class="memSeparator" colspan="2">&#160;</td></tr>
135 <tr class="memitem:ad94e87a8ef92ee6371e5314b7241e635"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#ad94e87a8ef92ee6371e5314b7241e635">lh_entry_set_val</a> (struct <a class="el" href="structlh__entry.html">lh_entry</a> *e, void *newval)</td></tr>
136 <tr class="separator:ad94e87a8ef92ee6371e5314b7241e635"><td class="memSeparator" colspan="2">&#160;</td></tr>
137 <tr class="memitem:a603f6f2cc6d292a160b09b357c7a0a69"><td class="memItemLeft" align="right" valign="top">static 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#a603f6f2cc6d292a160b09b357c7a0a69">lh_entry_next</a> (const struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
138 <tr class="separator:a603f6f2cc6d292a160b09b357c7a0a69"><td class="memSeparator" colspan="2">&#160;</td></tr>
139 <tr class="memitem:a965145d36d3e00eae825c692205d2f81"><td class="memItemLeft" align="right" valign="top">static 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#a965145d36d3e00eae825c692205d2f81">lh_entry_prev</a> (const struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>
140 <tr class="separator:a965145d36d3e00eae825c692205d2f81"><td class="memSeparator" colspan="2">&#160;</td></tr>
141 </table>
142 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
143 <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>
144 </div><h2 class="groupheader">Macro Definition Documentation</h2>
145 <a class="anchor" id="ac32e80138c5be6dd9b0483a9cbcc8799"></a>
146 <div class="memitem">
147 <div class="memproto">
148       <table class="memname">
149         <tr>
150           <td class="memname">#define JSON_C_STR_HASH_DFLT&#160;&#160;&#160;0</td>
151         </tr>
152       </table>
153 </div><div class="memdoc">
154 <p>default string hash function </p>
155
156 </div>
157 </div>
158 <a class="anchor" id="a62316f34fd42941b97a8e9a6b6e68faa"></a>
159 <div class="memitem">
160 <div class="memproto">
161       <table class="memname">
162         <tr>
163           <td class="memname">#define JSON_C_STR_HASH_PERLLIKE&#160;&#160;&#160;1</td>
164         </tr>
165       </table>
166 </div><div class="memdoc">
167 <p>perl-like string hash function </p>
168
169 </div>
170 </div>
171 <a class="anchor" id="a93fad7f8ae44575dc89c9567859972d2"></a>
172 <div class="memitem">
173 <div class="memproto">
174       <table class="memname">
175         <tr>
176           <td class="memname">#define LH_EMPTY&#160;&#160;&#160;(void *)-1</td>
177         </tr>
178       </table>
179 </div><div class="memdoc">
180 <p>sentinel pointer value for empty slots </p>
181
182 </div>
183 </div>
184 <a class="anchor" id="ad7dd67da915065dce2c6f44cb03e2d82"></a>
185 <div class="memitem">
186 <div class="memproto">
187       <table class="memname">
188         <tr>
189           <td class="memname">#define lh_foreach</td>
190           <td>(</td>
191           <td class="paramtype">&#160;</td>
192           <td class="paramname">table, </td>
193         </tr>
194         <tr>
195           <td class="paramkey"></td>
196           <td></td>
197           <td class="paramtype">&#160;</td>
198           <td class="paramname">entry&#160;</td>
199         </tr>
200         <tr>
201           <td></td>
202           <td>)</td>
203           <td></td><td>&#160;&#160;&#160;for (entry = <a class="el" href="linkhash_8h.html#a3bacf1f7c40830c20440fd95d493f35f">lh_table_head</a>(table); entry; entry = <a class="el" href="linkhash_8h.html#a603f6f2cc6d292a160b09b357c7a0a69">lh_entry_next</a>(entry))</td>
204         </tr>
205       </table>
206 </div><div class="memdoc">
207 <p>Convenience list iterator. </p>
208
209 </div>
210 </div>
211 <a class="anchor" id="abcbb0df08b4976d0649b826b6bacfca1"></a>
212 <div class="memitem">
213 <div class="memproto">
214       <table class="memname">
215         <tr>
216           <td class="memname">#define lh_foreach_safe</td>
217           <td>(</td>
218           <td class="paramtype">&#160;</td>
219           <td class="paramname">table, </td>
220         </tr>
221         <tr>
222           <td class="paramkey"></td>
223           <td></td>
224           <td class="paramtype">&#160;</td>
225           <td class="paramname">entry, </td>
226         </tr>
227         <tr>
228           <td class="paramkey"></td>
229           <td></td>
230           <td class="paramtype">&#160;</td>
231           <td class="paramname">tmp&#160;</td>
232         </tr>
233         <tr>
234           <td></td>
235           <td>)</td>
236           <td></td><td>&#160;&#160;&#160;for (entry = <a class="el" href="linkhash_8h.html#a3bacf1f7c40830c20440fd95d493f35f">lh_table_head</a>(table); entry &amp;&amp; ((tmp = <a class="el" href="linkhash_8h.html#a603f6f2cc6d292a160b09b357c7a0a69">lh_entry_next</a>(entry)) || 1); entry = tmp)</td>
237         </tr>
238       </table>
239 </div><div class="memdoc">
240 <p>lh_foreach_safe allows calling of deletion routine while iterating.</p>
241 <dl class="params"><dt>Parameters</dt><dd>
242   <table class="params">
243     <tr><td class="paramname">table</td><td>a struct <a class="el" href="structlh__table.html">lh_table</a> * to iterate over </td></tr>
244     <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>
245     <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>
246   </table>
247   </dd>
248 </dl>
249
250 </div>
251 </div>
252 <a class="anchor" id="ac69428f2de0a6fb080b6fb373d506aa7"></a>
253 <div class="memitem">
254 <div class="memproto">
255       <table class="memname">
256         <tr>
257           <td class="memname">#define LH_FREED&#160;&#160;&#160;(void *)-2</td>
258         </tr>
259       </table>
260 </div><div class="memdoc">
261 <p>sentinel pointer value for freed slots </p>
262
263 </div>
264 </div>
265 <a class="anchor" id="a66b61772c29d85eb52b697e0b0dc0aaf"></a>
266 <div class="memitem">
267 <div class="memproto">
268       <table class="memname">
269         <tr>
270           <td class="memname">#define LH_LOAD_FACTOR&#160;&#160;&#160;0.66</td>
271         </tr>
272       </table>
273 </div><div class="memdoc">
274 <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>
275
276 </div>
277 </div>
278 <a class="anchor" id="a032f1bd115df254dda325437203ce5fb"></a>
279 <div class="memitem">
280 <div class="memproto">
281       <table class="memname">
282         <tr>
283           <td class="memname">#define LH_PRIME&#160;&#160;&#160;0x9e370001UL</td>
284         </tr>
285       </table>
286 </div><div class="memdoc">
287 <p>golden prime used in hash functions </p>
288
289 </div>
290 </div>
291 <h2 class="groupheader">Typedef Documentation</h2>
292 <a class="anchor" id="a671553d0ee3c2a123190ba0f8ed2b635"></a>
293 <div class="memitem">
294 <div class="memproto">
295       <table class="memname">
296         <tr>
297           <td class="memname">typedef void( lh_entry_free_fn)(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td>
298         </tr>
299       </table>
300 </div><div class="memdoc">
301 <p>callback function prototypes </p>
302
303 </div>
304 </div>
305 <a class="anchor" id="a91fd85fc81b0c7c83c62f00e84729091"></a>
306 <div class="memitem">
307 <div class="memproto">
308       <table class="memname">
309         <tr>
310           <td class="memname">typedef int( lh_equal_fn)(const void *k1, const void *k2)</td>
311         </tr>
312       </table>
313 </div><div class="memdoc">
314 <p>callback function prototypes </p>
315
316 </div>
317 </div>
318 <a class="anchor" id="a38bae27995dcfb6ee3fb109a9be229b2"></a>
319 <div class="memitem">
320 <div class="memproto">
321       <table class="memname">
322         <tr>
323           <td class="memname">typedef unsigned long( lh_hash_fn)(const void *k)</td>
324         </tr>
325       </table>
326 </div><div class="memdoc">
327 <p>callback function prototypes </p>
328
329 </div>
330 </div>
331 <a class="anchor" id="a766e90057496fc6712d6be0da180a21f"></a>
332 <div class="memitem">
333 <div class="memproto">
334       <table class="memname">
335         <tr>
336           <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>
337         </tr>
338       </table>
339 </div><div class="memdoc">
340
341 </div>
342 </div>
343 <h2 class="groupheader">Function Documentation</h2>
344 <a class="anchor" id="ac8e1d61af44d9c0824d8c7980385bcd3"></a>
345 <div class="memitem">
346 <div class="memproto">
347       <table class="memname">
348         <tr>
349           <td class="memname">int json_global_set_string_hash </td>
350           <td>(</td>
351           <td class="paramtype">const int&#160;</td>
352           <td class="paramname"><em>h</em></td><td>)</td>
353           <td></td>
354         </tr>
355       </table>
356 </div><div class="memdoc">
357 <p>This function sets the hash function to be used for strings. Must be one of the JSON_C_STR_HASH_* values. </p>
358 <dl class="section return"><dt>Returns</dt><dd>0 - ok, -1 if parameter was invalid </dd></dl>
359
360 </div>
361 </div>
362 <a class="anchor" id="a82e5d699ba2fd4c520352c003f8554a5"></a>
363 <div class="memitem">
364 <div class="memproto">
365 <table class="mlabels">
366   <tr>
367   <td class="mlabels-left">
368       <table class="memname">
369         <tr>
370           <td class="memname">static void* lh_entry_k </td>
371           <td>(</td>
372           <td class="paramtype">const struct <a class="el" href="structlh__entry.html">lh_entry</a> *&#160;</td>
373           <td class="paramname"><em>e</em></td><td>)</td>
374           <td></td>
375         </tr>
376       </table>
377   </td>
378   <td class="mlabels-right">
379 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
380   </tr>
381 </table>
382 </div><div class="memdoc">
383 <p>Return a non-const version of <a class="el" href="structlh__entry.html#a79d9f1ef0dc444e17105aaeaf167e22c">lh_entry.k</a>.</p>
384 <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. </p>
385 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="linkhash_8h.html#a724c308f1c606271ea3deb01ed9e3cc9">lh_entry_k_is_constant()</a> </dd></dl>
386
387 <p>References <a class="el" href="structlh__entry.html#a79d9f1ef0dc444e17105aaeaf167e22c">lh_entry::k</a>.</p>
388
389 </div>
390 </div>
391 <a class="anchor" id="a724c308f1c606271ea3deb01ed9e3cc9"></a>
392 <div class="memitem">
393 <div class="memproto">
394 <table class="mlabels">
395   <tr>
396   <td class="mlabels-left">
397       <table class="memname">
398         <tr>
399           <td class="memname">static int lh_entry_k_is_constant </td>
400           <td>(</td>
401           <td class="paramtype">const struct <a class="el" href="structlh__entry.html">lh_entry</a> *&#160;</td>
402           <td class="paramname"><em>e</em></td><td>)</td>
403           <td></td>
404         </tr>
405       </table>
406   </td>
407   <td class="mlabels-right">
408 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
409   </tr>
410 </table>
411 </div><div class="memdoc">
412 <p>Returns 1 if the key for the given entry is constant, and thus does not need to be freed when the <a class="el" href="structlh__entry.html">lh_entry</a> is freed. </p>
413 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="linkhash_8h.html#a4558a9347a422e03a15b0b7a29b82dc3">lh_table_insert_w_hash()</a> </dd></dl>
414
415 <p>References <a class="el" href="structlh__entry.html#a14f40cc124c32b03f81151ae7934d2e7">lh_entry::k_is_constant</a>.</p>
416
417 </div>
418 </div>
419 <a class="anchor" id="a603f6f2cc6d292a160b09b357c7a0a69"></a>
420 <div class="memitem">
421 <div class="memproto">
422 <table class="mlabels">
423   <tr>
424   <td class="mlabels-left">
425       <table class="memname">
426         <tr>
427           <td class="memname">static struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_entry_next </td>
428           <td>(</td>
429           <td class="paramtype">const struct <a class="el" href="structlh__entry.html">lh_entry</a> *&#160;</td>
430           <td class="paramname"><em>e</em></td><td>)</td>
431           <td></td>
432         </tr>
433       </table>
434   </td>
435   <td class="mlabels-right">
436 <span class="mlabels"><span class="mlabel">static</span><span class="mlabel">read</span></span>  </td>
437   </tr>
438 </table>
439 </div><div class="memdoc">
440 <p>Return the next element, or NULL if there is no next element. </p>
441 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="linkhash_8h.html#a3bacf1f7c40830c20440fd95d493f35f">lh_table_head()</a> </dd>
442 <dd>
443 <a class="el" href="linkhash_8h.html#a965145d36d3e00eae825c692205d2f81">lh_entry_prev()</a> </dd></dl>
444
445 <p>References <a class="el" href="structlh__entry.html#a7c40c46e72d9a0ba071a8d49d535bc67">lh_entry::next</a>.</p>
446
447 </div>
448 </div>
449 <a class="anchor" id="a965145d36d3e00eae825c692205d2f81"></a>
450 <div class="memitem">
451 <div class="memproto">
452 <table class="mlabels">
453   <tr>
454   <td class="mlabels-left">
455       <table class="memname">
456         <tr>
457           <td class="memname">static struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_entry_prev </td>
458           <td>(</td>
459           <td class="paramtype">const struct <a class="el" href="structlh__entry.html">lh_entry</a> *&#160;</td>
460           <td class="paramname"><em>e</em></td><td>)</td>
461           <td></td>
462         </tr>
463       </table>
464   </td>
465   <td class="mlabels-right">
466 <span class="mlabels"><span class="mlabel">static</span><span class="mlabel">read</span></span>  </td>
467   </tr>
468 </table>
469 </div><div class="memdoc">
470 <p>Return the previous element, or NULL if there is no previous element. </p>
471 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="linkhash_8h.html#a3bacf1f7c40830c20440fd95d493f35f">lh_table_head()</a> </dd>
472 <dd>
473 <a class="el" href="linkhash_8h.html#a603f6f2cc6d292a160b09b357c7a0a69">lh_entry_next()</a> </dd></dl>
474
475 <p>References <a class="el" href="structlh__entry.html#a6fb9c3de01fb5af67d8d429921cc6a3b">lh_entry::prev</a>.</p>
476
477 </div>
478 </div>
479 <a class="anchor" id="ad94e87a8ef92ee6371e5314b7241e635"></a>
480 <div class="memitem">
481 <div class="memproto">
482 <table class="mlabels">
483   <tr>
484   <td class="mlabels-left">
485       <table class="memname">
486         <tr>
487           <td class="memname">static void lh_entry_set_val </td>
488           <td>(</td>
489           <td class="paramtype">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&#160;</td>
490           <td class="paramname"><em>e</em>, </td>
491         </tr>
492         <tr>
493           <td class="paramkey"></td>
494           <td></td>
495           <td class="paramtype">void *&#160;</td>
496           <td class="paramname"><em>newval</em>&#160;</td>
497         </tr>
498         <tr>
499           <td></td>
500           <td>)</td>
501           <td></td><td></td>
502         </tr>
503       </table>
504   </td>
505   <td class="mlabels-right">
506 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
507   </tr>
508 </table>
509 </div><div class="memdoc">
510 <p>Change the value for an entry. The caller is responsible for freeing the previous value. </p>
511
512 <p>References <a class="el" href="structlh__entry.html#a1b676732ab2ad3eeaedf6ec60a6a0835">lh_entry::v</a>.</p>
513
514 </div>
515 </div>
516 <a class="anchor" id="ab163f65568af863f3738ccd05900745e"></a>
517 <div class="memitem">
518 <div class="memproto">
519 <table class="mlabels">
520   <tr>
521   <td class="mlabels-left">
522       <table class="memname">
523         <tr>
524           <td class="memname">static void* lh_entry_v </td>
525           <td>(</td>
526           <td class="paramtype">const struct <a class="el" href="structlh__entry.html">lh_entry</a> *&#160;</td>
527           <td class="paramname"><em>e</em></td><td>)</td>
528           <td></td>
529         </tr>
530       </table>
531   </td>
532   <td class="mlabels-right">
533 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
534   </tr>
535 </table>
536 </div><div class="memdoc">
537 <p>Return a non-const version of <a class="el" href="structlh__entry.html#a1b676732ab2ad3eeaedf6ec60a6a0835">lh_entry.v</a>.</p>
538 <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>
539
540 <p>References <a class="el" href="structlh__entry.html#a1b676732ab2ad3eeaedf6ec60a6a0835">lh_entry::v</a>.</p>
541
542 </div>
543 </div>
544 <a class="anchor" id="a33c74c884530d407d0b3baa365238fb4"></a>
545 <div class="memitem">
546 <div class="memproto">
547 <table class="mlabels">
548   <tr>
549   <td class="mlabels-left">
550       <table class="memname">
551         <tr>
552           <td class="memname">static unsigned long lh_get_hash </td>
553           <td>(</td>
554           <td class="paramtype">const struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
555           <td class="paramname"><em>t</em>, </td>
556         </tr>
557         <tr>
558           <td class="paramkey"></td>
559           <td></td>
560           <td class="paramtype">const void *&#160;</td>
561           <td class="paramname"><em>k</em>&#160;</td>
562         </tr>
563         <tr>
564           <td></td>
565           <td>)</td>
566           <td></td><td></td>
567         </tr>
568       </table>
569   </td>
570   <td class="mlabels-right">
571 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
572   </tr>
573 </table>
574 </div><div class="memdoc">
575 <p>Calculate the hash of a key for a given table.</p>
576 <p>This is an extension to support functions that need to calculate the hash several times and allows them to do it just once and then pass in the hash to all utility functions. Depending on use case, this can be a considerable performance improvement. </p>
577 <dl class="params"><dt>Parameters</dt><dd>
578   <table class="params">
579     <tr><td class="paramname">t</td><td>the table (used to obtain hash function) </td></tr>
580     <tr><td class="paramname">k</td><td>a pointer to the key to lookup </td></tr>
581   </table>
582   </dd>
583 </dl>
584 <dl class="section return"><dt>Returns</dt><dd>the key's hash </dd></dl>
585
586 <p>References <a class="el" href="structlh__table.html#a1488d1a4a320b1a9bb2f441859544be1">lh_table::hash_fn</a>.</p>
587
588 </div>
589 </div>
590 <a class="anchor" id="a6bf630754affe92612639542a6c49c3f"></a>
591 <div class="memitem">
592 <div class="memproto">
593 <table class="mlabels">
594   <tr>
595   <td class="mlabels-left">
596       <table class="memname">
597         <tr>
598           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kchar_table_new </td>
599           <td>(</td>
600           <td class="paramtype">int&#160;</td>
601           <td class="paramname"><em>size</em>, </td>
602         </tr>
603         <tr>
604           <td class="paramkey"></td>
605           <td></td>
606           <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&#160;</td>
607           <td class="paramname"><em>free_fn</em>&#160;</td>
608         </tr>
609         <tr>
610           <td></td>
611           <td>)</td>
612           <td></td><td></td>
613         </tr>
614       </table>
615   </td>
616   <td class="mlabels-right">
617 <span class="mlabels"><span class="mlabel">read</span></span>  </td>
618   </tr>
619 </table>
620 </div><div class="memdoc">
621 <p>Convenience function to create a new linkhash table with char keys.</p>
622 <dl class="params"><dt>Parameters</dt><dd>
623   <table class="params">
624     <tr><td class="paramname">size</td><td>initial table size. </td></tr>
625     <tr><td class="paramname">free_fn</td><td>callback function used to free memory for entries. </td></tr>
626   </table>
627   </dd>
628 </dl>
629 <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>
630
631 </div>
632 </div>
633 <a class="anchor" id="af8108563b961dbf5471fe2c0e51f40a5"></a>
634 <div class="memitem">
635 <div class="memproto">
636 <table class="mlabels">
637   <tr>
638   <td class="mlabels-left">
639       <table class="memname">
640         <tr>
641           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kptr_table_new </td>
642           <td>(</td>
643           <td class="paramtype">int&#160;</td>
644           <td class="paramname"><em>size</em>, </td>
645         </tr>
646         <tr>
647           <td class="paramkey"></td>
648           <td></td>
649           <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&#160;</td>
650           <td class="paramname"><em>free_fn</em>&#160;</td>
651         </tr>
652         <tr>
653           <td></td>
654           <td>)</td>
655           <td></td><td></td>
656         </tr>
657       </table>
658   </td>
659   <td class="mlabels-right">
660 <span class="mlabels"><span class="mlabel">read</span></span>  </td>
661   </tr>
662 </table>
663 </div><div class="memdoc">
664 <p>Convenience function to create a new linkhash table with ptr keys.</p>
665 <dl class="params"><dt>Parameters</dt><dd>
666   <table class="params">
667     <tr><td class="paramname">size</td><td>initial table size. </td></tr>
668     <tr><td class="paramname">free_fn</td><td>callback function used to free memory for entries. </td></tr>
669   </table>
670   </dd>
671 </dl>
672 <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>
673
674 </div>
675 </div>
676 <a class="anchor" id="a2fed2c78f70d229edb2d00775ffe593c"></a>
677 <div class="memitem">
678 <div class="memproto">
679       <table class="memname">
680         <tr>
681           <td class="memname">int lh_table_delete </td>
682           <td>(</td>
683           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
684           <td class="paramname"><em>t</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>k</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>Delete a record from the table.</p>
700 <p>If a callback free function is provided then it is called for the for the item being deleted. </p>
701 <dl class="params"><dt>Parameters</dt><dd>
702   <table class="params">
703     <tr><td class="paramname">t</td><td>the table to delete from. </td></tr>
704     <tr><td class="paramname">k</td><td>a pointer to the key to delete. </td></tr>
705   </table>
706   </dd>
707 </dl>
708 <dl class="section return"><dt>Returns</dt><dd>0 if the item was deleted. </dd>
709 <dd>
710 -1 if it was not found. </dd></dl>
711
712 </div>
713 </div>
714 <a class="anchor" id="ae5885a71c3457190fb1dc2d6e20dde3b"></a>
715 <div class="memitem">
716 <div class="memproto">
717       <table class="memname">
718         <tr>
719           <td class="memname">int lh_table_delete_entry </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">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&#160;</td>
728           <td class="paramname"><em>e</em>&#160;</td>
729         </tr>
730         <tr>
731           <td></td>
732           <td>)</td>
733           <td></td><td></td>
734         </tr>
735       </table>
736 </div><div class="memdoc">
737 <p>Delete a record from the table.</p>
738 <p>If a callback free function is provided then it is called for the for the item being deleted. </p>
739 <dl class="params"><dt>Parameters</dt><dd>
740   <table class="params">
741     <tr><td class="paramname">t</td><td>the table to delete from. </td></tr>
742     <tr><td class="paramname">e</td><td>a pointer to the entry to delete. </td></tr>
743   </table>
744   </dd>
745 </dl>
746 <dl class="section return"><dt>Returns</dt><dd>0 if the item was deleted. </dd>
747 <dd>
748 -1 if it was not found. </dd></dl>
749
750 </div>
751 </div>
752 <a class="anchor" id="a81653acf740cf8c9fe672e6cd16df0cf"></a>
753 <div class="memitem">
754 <div class="memproto">
755       <table class="memname">
756         <tr>
757           <td class="memname">void lh_table_free </td>
758           <td>(</td>
759           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
760           <td class="paramname"><em>t</em></td><td>)</td>
761           <td></td>
762         </tr>
763       </table>
764 </div><div class="memdoc">
765 <p>Free a linkhash table.</p>
766 <p>If a lh_entry_free_fn callback free function was provided then it is called for all entries in the table.</p>
767 <dl class="params"><dt>Parameters</dt><dd>
768   <table class="params">
769     <tr><td class="paramname">t</td><td>table to free. </td></tr>
770   </table>
771   </dd>
772 </dl>
773
774 </div>
775 </div>
776 <a class="anchor" id="a3bacf1f7c40830c20440fd95d493f35f"></a>
777 <div class="memitem">
778 <div class="memproto">
779 <table class="mlabels">
780   <tr>
781   <td class="mlabels-left">
782       <table class="memname">
783         <tr>
784           <td class="memname">static struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_head </td>
785           <td>(</td>
786           <td class="paramtype">const <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
787           <td class="paramname"><em>t</em></td><td>)</td>
788           <td></td>
789         </tr>
790       </table>
791   </td>
792   <td class="mlabels-right">
793 <span class="mlabels"><span class="mlabel">static</span><span class="mlabel">read</span></span>  </td>
794   </tr>
795 </table>
796 </div><div class="memdoc">
797 <p>Return the first entry in the <a class="el" href="structlh__table.html">lh_table</a>. </p>
798 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="linkhash_8h.html#a603f6f2cc6d292a160b09b357c7a0a69">lh_entry_next()</a> </dd></dl>
799
800 <p>References <a class="el" href="structlh__table.html#aa7d986a3b12a9fa47e349713794c30fb">lh_table::head</a>.</p>
801
802 </div>
803 </div>
804 <a class="anchor" id="a86c0cd547be1e2c2486a73bd58e1352c"></a>
805 <div class="memitem">
806 <div class="memproto">
807       <table class="memname">
808         <tr>
809           <td class="memname">int lh_table_insert </td>
810           <td>(</td>
811           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
812           <td class="paramname"><em>t</em>, </td>
813         </tr>
814         <tr>
815           <td class="paramkey"></td>
816           <td></td>
817           <td class="paramtype">const void *&#160;</td>
818           <td class="paramname"><em>k</em>, </td>
819         </tr>
820         <tr>
821           <td class="paramkey"></td>
822           <td></td>
823           <td class="paramtype">const void *&#160;</td>
824           <td class="paramname"><em>v</em>&#160;</td>
825         </tr>
826         <tr>
827           <td></td>
828           <td>)</td>
829           <td></td><td></td>
830         </tr>
831       </table>
832 </div><div class="memdoc">
833 <p>Insert a record into the table.</p>
834 <dl class="params"><dt>Parameters</dt><dd>
835   <table class="params">
836     <tr><td class="paramname">t</td><td>the table to insert into. </td></tr>
837     <tr><td class="paramname">k</td><td>a pointer to the key to insert. </td></tr>
838     <tr><td class="paramname">v</td><td>a pointer to the value to insert.</td></tr>
839   </table>
840   </dd>
841 </dl>
842 <dl class="section return"><dt>Returns</dt><dd>On success, <code>0</code> is returned. On error, a negative value is returned. </dd></dl>
843
844 </div>
845 </div>
846 <a class="anchor" id="a4558a9347a422e03a15b0b7a29b82dc3"></a>
847 <div class="memitem">
848 <div class="memproto">
849       <table class="memname">
850         <tr>
851           <td class="memname">int lh_table_insert_w_hash </td>
852           <td>(</td>
853           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
854           <td class="paramname"><em>t</em>, </td>
855         </tr>
856         <tr>
857           <td class="paramkey"></td>
858           <td></td>
859           <td class="paramtype">const void *&#160;</td>
860           <td class="paramname"><em>k</em>, </td>
861         </tr>
862         <tr>
863           <td class="paramkey"></td>
864           <td></td>
865           <td class="paramtype">const void *&#160;</td>
866           <td class="paramname"><em>v</em>, </td>
867         </tr>
868         <tr>
869           <td class="paramkey"></td>
870           <td></td>
871           <td class="paramtype">const unsigned long&#160;</td>
872           <td class="paramname"><em>h</em>, </td>
873         </tr>
874         <tr>
875           <td class="paramkey"></td>
876           <td></td>
877           <td class="paramtype">const unsigned&#160;</td>
878           <td class="paramname"><em>opts</em>&#160;</td>
879         </tr>
880         <tr>
881           <td></td>
882           <td>)</td>
883           <td></td><td></td>
884         </tr>
885       </table>
886 </div><div class="memdoc">
887 <p>Insert a record into the table using a precalculated key hash.</p>
888 <p>The hash h, which should be calculated with <a class="el" href="linkhash_8h.html#a33c74c884530d407d0b3baa365238fb4">lh_get_hash()</a> on k, is provided by the caller, to allow for optimization when multiple operations with the same key are known to be needed.</p>
889 <dl class="params"><dt>Parameters</dt><dd>
890   <table class="params">
891     <tr><td class="paramname">t</td><td>the table to insert into. </td></tr>
892     <tr><td class="paramname">k</td><td>a pointer to the key to insert. </td></tr>
893     <tr><td class="paramname">v</td><td>a pointer to the value to insert. </td></tr>
894     <tr><td class="paramname">h</td><td>hash value of the key to insert </td></tr>
895     <tr><td class="paramname">opts</td><td>if set to JSON_C_OBJECT_ADD_CONSTANT_KEY, 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>
896   </table>
897   </dd>
898 </dl>
899
900 </div>
901 </div>
902 <a class="anchor" id="ac9ba631c91fe80fb905f04c7cd526f2b"></a>
903 <div class="memitem">
904 <div class="memproto">
905       <table class="memname">
906         <tr>
907           <td class="memname">int lh_table_length </td>
908           <td>(</td>
909           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
910           <td class="paramname"><em>t</em></td><td>)</td>
911           <td></td>
912         </tr>
913       </table>
914 </div><div class="memdoc">
915 <p>Return the number of entries in the table. </p>
916
917 </div>
918 </div>
919 <a class="anchor" id="ad3b6ca2d967a6c3021ee6c39e014a918"></a>
920 <div class="memitem">
921 <div class="memproto">
922 <table class="mlabels">
923   <tr>
924   <td class="mlabels-left">
925       <table class="memname">
926         <tr>
927           <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_lookup_entry </td>
928           <td>(</td>
929           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
930           <td class="paramname"><em>t</em>, </td>
931         </tr>
932         <tr>
933           <td class="paramkey"></td>
934           <td></td>
935           <td class="paramtype">const void *&#160;</td>
936           <td class="paramname"><em>k</em>&#160;</td>
937         </tr>
938         <tr>
939           <td></td>
940           <td>)</td>
941           <td></td><td></td>
942         </tr>
943       </table>
944   </td>
945   <td class="mlabels-right">
946 <span class="mlabels"><span class="mlabel">read</span></span>  </td>
947   </tr>
948 </table>
949 </div><div class="memdoc">
950 <p>Lookup a record in the table.</p>
951 <dl class="params"><dt>Parameters</dt><dd>
952   <table class="params">
953     <tr><td class="paramname">t</td><td>the table to lookup </td></tr>
954     <tr><td class="paramname">k</td><td>a pointer to the key to lookup </td></tr>
955   </table>
956   </dd>
957 </dl>
958 <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>
959
960 </div>
961 </div>
962 <a class="anchor" id="a59ecaf34ef59280952f4459b2de63677"></a>
963 <div class="memitem">
964 <div class="memproto">
965 <table class="mlabels">
966   <tr>
967   <td class="mlabels-left">
968       <table class="memname">
969         <tr>
970           <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_lookup_entry_w_hash </td>
971           <td>(</td>
972           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
973           <td class="paramname"><em>t</em>, </td>
974         </tr>
975         <tr>
976           <td class="paramkey"></td>
977           <td></td>
978           <td class="paramtype">const void *&#160;</td>
979           <td class="paramname"><em>k</em>, </td>
980         </tr>
981         <tr>
982           <td class="paramkey"></td>
983           <td></td>
984           <td class="paramtype">const unsigned long&#160;</td>
985           <td class="paramname"><em>h</em>&#160;</td>
986         </tr>
987         <tr>
988           <td></td>
989           <td>)</td>
990           <td></td><td></td>
991         </tr>
992       </table>
993   </td>
994   <td class="mlabels-right">
995 <span class="mlabels"><span class="mlabel">read</span></span>  </td>
996   </tr>
997 </table>
998 </div><div class="memdoc">
999 <p>Lookup a record in the table using a precalculated key hash.</p>
1000 <p>The hash h, which should be calculated with <a class="el" href="linkhash_8h.html#a33c74c884530d407d0b3baa365238fb4">lh_get_hash()</a> on k, is provided by the caller, to allow for optimization when multiple operations with the same key are known to be needed.</p>
1001 <dl class="params"><dt>Parameters</dt><dd>
1002   <table class="params">
1003     <tr><td class="paramname">t</td><td>the table to lookup </td></tr>
1004     <tr><td class="paramname">k</td><td>a pointer to the key to lookup </td></tr>
1005     <tr><td class="paramname">h</td><td>hash value of the key to lookup </td></tr>
1006   </table>
1007   </dd>
1008 </dl>
1009 <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>
1010
1011 </div>
1012 </div>
1013 <a class="anchor" id="a81c270bb0dd9d5c8a3e7ae20bc4d67f3"></a>
1014 <div class="memitem">
1015 <div class="memproto">
1016       <table class="memname">
1017         <tr>
1018           <td class="memname"><a class="el" href="json__types_8h.html#a81f02022906fafc71eb9197049f07f73">json_bool</a> lh_table_lookup_ex </td>
1019           <td>(</td>
1020           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
1021           <td class="paramname"><em>t</em>, </td>
1022         </tr>
1023         <tr>
1024           <td class="paramkey"></td>
1025           <td></td>
1026           <td class="paramtype">const void *&#160;</td>
1027           <td class="paramname"><em>k</em>, </td>
1028         </tr>
1029         <tr>
1030           <td class="paramkey"></td>
1031           <td></td>
1032           <td class="paramtype">void **&#160;</td>
1033           <td class="paramname"><em>v</em>&#160;</td>
1034         </tr>
1035         <tr>
1036           <td></td>
1037           <td>)</td>
1038           <td></td><td></td>
1039         </tr>
1040       </table>
1041 </div><div class="memdoc">
1042 <p>Lookup a record in the table.</p>
1043 <dl class="params"><dt>Parameters</dt><dd>
1044   <table class="params">
1045     <tr><td class="paramname">t</td><td>the table to lookup </td></tr>
1046     <tr><td class="paramname">k</td><td>a pointer to the key to lookup </td></tr>
1047     <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>
1048   </table>
1049   </dd>
1050 </dl>
1051 <dl class="section return"><dt>Returns</dt><dd>whether or not the key was found </dd></dl>
1052
1053 </div>
1054 </div>
1055 <a class="anchor" id="a9c4f8a71dbe4d3390d9f7adb331beb0e"></a>
1056 <div class="memitem">
1057 <div class="memproto">
1058 <table class="mlabels">
1059   <tr>
1060   <td class="mlabels-left">
1061       <table class="memname">
1062         <tr>
1063           <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_table_new </td>
1064           <td>(</td>
1065           <td class="paramtype">int&#160;</td>
1066           <td class="paramname"><em>size</em>, </td>
1067         </tr>
1068         <tr>
1069           <td class="paramkey"></td>
1070           <td></td>
1071           <td class="paramtype"><a class="el" href="linkhash_8h.html#a671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&#160;</td>
1072           <td class="paramname"><em>free_fn</em>, </td>
1073         </tr>
1074         <tr>
1075           <td class="paramkey"></td>
1076           <td></td>
1077           <td class="paramtype"><a class="el" href="linkhash_8h.html#a38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *&#160;</td>
1078           <td class="paramname"><em>hash_fn</em>, </td>
1079         </tr>
1080         <tr>
1081           <td class="paramkey"></td>
1082           <td></td>
1083           <td class="paramtype"><a class="el" href="linkhash_8h.html#a91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *&#160;</td>
1084           <td class="paramname"><em>equal_fn</em>&#160;</td>
1085         </tr>
1086         <tr>
1087           <td></td>
1088           <td>)</td>
1089           <td></td><td></td>
1090         </tr>
1091       </table>
1092   </td>
1093   <td class="mlabels-right">
1094 <span class="mlabels"><span class="mlabel">read</span></span>  </td>
1095   </tr>
1096 </table>
1097 </div><div class="memdoc">
1098 <p>Create a new linkhash table.</p>
1099 <dl class="params"><dt>Parameters</dt><dd>
1100   <table class="params">
1101     <tr><td class="paramname">size</td><td>initial table size. The table is automatically resized although this incurs a performance penalty. </td></tr>
1102     <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>
1103     <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>
1104     <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>
1105   </table>
1106   </dd>
1107 </dl>
1108 <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>
1109
1110 </div>
1111 </div>
1112 <a class="anchor" id="a30c8414e31aeee7669acc938116d933f"></a>
1113 <div class="memitem">
1114 <div class="memproto">
1115       <table class="memname">
1116         <tr>
1117           <td class="memname">int lh_table_resize </td>
1118           <td>(</td>
1119           <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&#160;</td>
1120           <td class="paramname"><em>t</em>, </td>
1121         </tr>
1122         <tr>
1123           <td class="paramkey"></td>
1124           <td></td>
1125           <td class="paramtype">int&#160;</td>
1126           <td class="paramname"><em>new_size</em>&#160;</td>
1127         </tr>
1128         <tr>
1129           <td></td>
1130           <td>)</td>
1131           <td></td><td></td>
1132         </tr>
1133       </table>
1134 </div><div class="memdoc">
1135 <p>Resizes the specified table.</p>
1136 <dl class="params"><dt>Parameters</dt><dd>
1137   <table class="params">
1138     <tr><td class="paramname">t</td><td>Pointer to table to resize. </td></tr>
1139     <tr><td class="paramname">new_size</td><td>New table size. Must be positive.</td></tr>
1140   </table>
1141   </dd>
1142 </dl>
1143 <dl class="section return"><dt>Returns</dt><dd>On success, <code>0</code> is returned. On error, a negative value is returned. </dd></dl>
1144
1145 </div>
1146 </div>
1147 </div><!-- contents -->
1148 <!-- start footer part -->
1149 <hr class="footer"/><address class="footer"><small>
1150 Generated on Sat Aug 12 2023 18:59:55 for json-c by &#160;<a href="http://www.doxygen.org/index.html">
1151 <img class="footer" src="doxygen.png" alt="doxygen"/>
1152 </a> 1.8.2
1153 </small></address>
1154 </body>
1155 </html>