%PDF- %PDF-
| Direktori : /proc/self/root/proc/self/root/proc/10578/cwd/usr/share/nagios/html/docs/ |
| Current File : //proc/self/root/proc/self/root/proc/10578/cwd/usr/share/nagios/html/docs/dkhash_8h.html |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>Nagios: dkhash.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Nagios
 <span id="projectnumber">4.4.3</span>
</div>
<div id="projectbrief">Dev docs for Nagios core and neb-module hackers</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_97aefd0d527b934f1d99a682da8fe6a9.html">lib</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">dkhash.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Dual-key hash functions for Nagios.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include <errno.h></code><br/>
</div>
<p><a href="dkhash_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="memitem:a1237519f5f531a5ca1c2230088b8ffd6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a1237519f5f531a5ca1c2230088b8ffd6">DKHASH_WALK_REMOVE</a>   1</td></tr>
<tr class="memdesc:a1237519f5f531a5ca1c2230088b8ffd6"><td class="mdescLeft"> </td><td class="mdescRight">return flags usable from the callback function of <a class="el" href="dkhash_8h.html#a62a80cf9c389ed8025fffc605c4ce25e" title="Call a function once for each item in the hash-table The callback function can return DKHASH_WALK_{RE...">dkhash_walk_data()</a> <a href="#a1237519f5f531a5ca1c2230088b8ffd6">More...</a><br/></td></tr>
<tr class="separator:a1237519f5f531a5ca1c2230088b8ffd6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac82fbc44fa4033b6740453b8ee19f24e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac82fbc44fa4033b6740453b8ee19f24e"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#ac82fbc44fa4033b6740453b8ee19f24e">DKHASH_WALK_STOP</a>   2</td></tr>
<tr class="memdesc:ac82fbc44fa4033b6740453b8ee19f24e"><td class="mdescLeft"> </td><td class="mdescRight">Cause walking to stop. <br/></td></tr>
<tr class="separator:ac82fbc44fa4033b6740453b8ee19f24e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a692ac1914579ba43ddfb86fc8dd80e5b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a692ac1914579ba43ddfb86fc8dd80e5b">DKHASH_OK</a>   0</td></tr>
<tr class="memdesc:a692ac1914579ba43ddfb86fc8dd80e5b"><td class="mdescLeft"> </td><td class="mdescRight">return values for <a class="el" href="dkhash_8h.html#a0beac882fb36d5f8f355e82f77167eaa" title="Insert a new entry into the hash table. ">dkhash_insert()</a> <a href="#a692ac1914579ba43ddfb86fc8dd80e5b">More...</a><br/></td></tr>
<tr class="separator:a692ac1914579ba43ddfb86fc8dd80e5b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a0017b1cb48394714f36c6afcfd5e9667"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0017b1cb48394714f36c6afcfd5e9667"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a0017b1cb48394714f36c6afcfd5e9667">DKHASH_EDUPE</a>   (-EPERM)</td></tr>
<tr class="memdesc:a0017b1cb48394714f36c6afcfd5e9667"><td class="mdescLeft"> </td><td class="mdescRight">duplicate insert attempted <br/></td></tr>
<tr class="separator:a0017b1cb48394714f36c6afcfd5e9667"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af47f37bf6db64b8968e36bb0153dd2aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af47f37bf6db64b8968e36bb0153dd2aa"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#af47f37bf6db64b8968e36bb0153dd2aa">DKHASH_EPERM</a>   (-EPERM)</td></tr>
<tr class="memdesc:af47f37bf6db64b8968e36bb0153dd2aa"><td class="mdescLeft"> </td><td class="mdescRight">duplicate insert attempted <br/></td></tr>
<tr class="separator:af47f37bf6db64b8968e36bb0153dd2aa"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac16da1d934c8c39e89c8cbe2ef4521de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac16da1d934c8c39e89c8cbe2ef4521de"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#ac16da1d934c8c39e89c8cbe2ef4521de">DKHASH_EINVAL</a>   (-EINVAL)</td></tr>
<tr class="memdesc:ac16da1d934c8c39e89c8cbe2ef4521de"><td class="mdescLeft"> </td><td class="mdescRight">Invalid parameters passed. <br/></td></tr>
<tr class="separator:ac16da1d934c8c39e89c8cbe2ef4521de"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a2359a936e1570a68373737a552b4c491"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2359a936e1570a68373737a552b4c491"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a2359a936e1570a68373737a552b4c491">DKHASH_ENOMEM</a>   (-ENOMEM)</td></tr>
<tr class="memdesc:a2359a936e1570a68373737a552b4c491"><td class="mdescLeft"> </td><td class="mdescRight">Memory allocation failed. <br/></td></tr>
<tr class="separator:a2359a936e1570a68373737a552b4c491"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a24ce8d97b87656b597e3a713eff95b84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24ce8d97b87656b597e3a713eff95b84"></a>
typedef struct <a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a></td></tr>
<tr class="memdesc:a24ce8d97b87656b597e3a713eff95b84"><td class="mdescLeft"> </td><td class="mdescRight">opaque type <br/></td></tr>
<tr class="separator:a24ce8d97b87656b597e3a713eff95b84"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a4089cf55e57c7a9696ce620791cc14ef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a4089cf55e57c7a9696ce620791cc14ef">dkhash_create</a> (unsigned int size)</td></tr>
<tr class="memdesc:a4089cf55e57c7a9696ce620791cc14ef"><td class="mdescLeft"> </td><td class="mdescRight">Create a dual-keyed hash-table of the given size Note that it's generally useful to make the table 25-30% larger than the number of items you intend to store, and also note that the 'size' arguments gets rounded up to the nearest power of 2. <a href="#a4089cf55e57c7a9696ce620791cc14ef">More...</a><br/></td></tr>
<tr class="separator:a4089cf55e57c7a9696ce620791cc14ef"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac5b485bc59608b0f5de4d7eb374990c0"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#ac5b485bc59608b0f5de4d7eb374990c0">dkhash_destroy</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t)</td></tr>
<tr class="memdesc:ac5b485bc59608b0f5de4d7eb374990c0"><td class="mdescLeft"> </td><td class="mdescRight">Destroy a dual-keyed hash table. <a href="#ac5b485bc59608b0f5de4d7eb374990c0">More...</a><br/></td></tr>
<tr class="separator:ac5b485bc59608b0f5de4d7eb374990c0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ab8df5117eee672d6f814a5ed91dda110"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#ab8df5117eee672d6f814a5ed91dda110">dkhash_get</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t, const char *k1, const char *k2)</td></tr>
<tr class="memdesc:ab8df5117eee672d6f814a5ed91dda110"><td class="mdescLeft"> </td><td class="mdescRight">Fetch the data associated with a particular key. <a href="#ab8df5117eee672d6f814a5ed91dda110">More...</a><br/></td></tr>
<tr class="separator:ab8df5117eee672d6f814a5ed91dda110"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a0beac882fb36d5f8f355e82f77167eaa"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a0beac882fb36d5f8f355e82f77167eaa">dkhash_insert</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t, const char *k1, const char *k2, void *data)</td></tr>
<tr class="memdesc:a0beac882fb36d5f8f355e82f77167eaa"><td class="mdescLeft"> </td><td class="mdescRight">Insert a new entry into the hash table. <a href="#a0beac882fb36d5f8f355e82f77167eaa">More...</a><br/></td></tr>
<tr class="separator:a0beac882fb36d5f8f355e82f77167eaa"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a49a2175cad5bb6ebbf8db4e9e416e490"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a49a2175cad5bb6ebbf8db4e9e416e490">dkhash_remove</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t, const char *k1, const char *k2)</td></tr>
<tr class="memdesc:a49a2175cad5bb6ebbf8db4e9e416e490"><td class="mdescLeft"> </td><td class="mdescRight">Remove data from the hash table Note that this does not free() the pointer to the data stored in the table. <a href="#a49a2175cad5bb6ebbf8db4e9e416e490">More...</a><br/></td></tr>
<tr class="separator:a49a2175cad5bb6ebbf8db4e9e416e490"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a62a80cf9c389ed8025fffc605c4ce25e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a62a80cf9c389ed8025fffc605c4ce25e">dkhash_walk_data</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t, int(*walker)(void *data))</td></tr>
<tr class="memdesc:a62a80cf9c389ed8025fffc605c4ce25e"><td class="mdescLeft"> </td><td class="mdescRight">Call a function once for each item in the hash-table The callback function can return DKHASH_WALK_{REMOVE,STOP} or any OR'ed combination thereof to control the walking procedure, and should return 0 on the normal case. <a href="#a62a80cf9c389ed8025fffc605c4ce25e">More...</a><br/></td></tr>
<tr class="separator:a62a80cf9c389ed8025fffc605c4ce25e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a0d4edc652b39c216a15bb1fcf2adbeda"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a0d4edc652b39c216a15bb1fcf2adbeda">dkhash_collisions</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t)</td></tr>
<tr class="memdesc:a0d4edc652b39c216a15bb1fcf2adbeda"><td class="mdescLeft"> </td><td class="mdescRight">Get number of collisions in hash table Many collisions is a sign of a too small hash table or poor hash-function. <a href="#a0d4edc652b39c216a15bb1fcf2adbeda">More...</a><br/></td></tr>
<tr class="separator:a0d4edc652b39c216a15bb1fcf2adbeda"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6a9ae6207bc2392cf20d9c1c7ec9d53a"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a6a9ae6207bc2392cf20d9c1c7ec9d53a">dkhash_num_entries</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t)</td></tr>
<tr class="memdesc:a6a9ae6207bc2392cf20d9c1c7ec9d53a"><td class="mdescLeft"> </td><td class="mdescRight">Get number of items in the hash table. <a href="#a6a9ae6207bc2392cf20d9c1c7ec9d53a">More...</a><br/></td></tr>
<tr class="separator:a6a9ae6207bc2392cf20d9c1c7ec9d53a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa6e060bcedb0f75b241974f5f45bd866"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#aa6e060bcedb0f75b241974f5f45bd866">dkhash_num_entries_max</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t)</td></tr>
<tr class="memdesc:aa6e060bcedb0f75b241974f5f45bd866"><td class="mdescLeft"> </td><td class="mdescRight">Get max number of items stored in the hash table. <a href="#aa6e060bcedb0f75b241974f5f45bd866">More...</a><br/></td></tr>
<tr class="separator:aa6e060bcedb0f75b241974f5f45bd866"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aba4b7dc064103d9dfa79488718a2e566"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#aba4b7dc064103d9dfa79488718a2e566">dkhash_num_entries_added</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t)</td></tr>
<tr class="memdesc:aba4b7dc064103d9dfa79488718a2e566"><td class="mdescLeft"> </td><td class="mdescRight">Get number of entries added to hash table Note that some of them may have been removed. <a href="#aba4b7dc064103d9dfa79488718a2e566">More...</a><br/></td></tr>
<tr class="separator:aba4b7dc064103d9dfa79488718a2e566"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a2c8d4dd27e7511cc8ca107a977179631"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a2c8d4dd27e7511cc8ca107a977179631">dkhash_num_entries_removed</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t)</td></tr>
<tr class="memdesc:a2c8d4dd27e7511cc8ca107a977179631"><td class="mdescLeft"> </td><td class="mdescRight">Get number of removed items from hash table. <a href="#a2c8d4dd27e7511cc8ca107a977179631">More...</a><br/></td></tr>
<tr class="separator:a2c8d4dd27e7511cc8ca107a977179631"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af2880db78cafdfc5ab0a60b08f1615ec"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#af2880db78cafdfc5ab0a60b08f1615ec">dkhash_table_size</a> (<a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *t)</td></tr>
<tr class="memdesc:af2880db78cafdfc5ab0a60b08f1615ec"><td class="mdescLeft"> </td><td class="mdescRight">Get actual table size (in number of buckets) <a href="#af2880db78cafdfc5ab0a60b08f1615ec">More...</a><br/></td></tr>
<tr class="separator:af2880db78cafdfc5ab0a60b08f1615ec"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Dual-key hash functions for Nagios. </p>
<p>Having a dual-key hash function is pretty unusual, but since so much data in Nagios pertains to services (which are uniquely identified based on both host_name and service_description), it makes sense here. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a692ac1914579ba43ddfb86fc8dd80e5b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DKHASH_OK   0</td>
</tr>
</table>
</div><div class="memdoc">
<p>return values for <a class="el" href="dkhash_8h.html#a0beac882fb36d5f8f355e82f77167eaa" title="Insert a new entry into the hash table. ">dkhash_insert()</a> </p>
<p>Success </p>
</div>
</div>
<a class="anchor" id="a1237519f5f531a5ca1c2230088b8ffd6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DKHASH_WALK_REMOVE   1</td>
</tr>
</table>
</div><div class="memdoc">
<p>return flags usable from the callback function of <a class="el" href="dkhash_8h.html#a62a80cf9c389ed8025fffc605c4ce25e" title="Call a function once for each item in the hash-table The callback function can return DKHASH_WALK_{RE...">dkhash_walk_data()</a> </p>
<p>Remove the most recently visited object </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a0d4edc652b39c216a15bb1fcf2adbeda"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int dkhash_collisions </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get number of collisions in hash table Many collisions is a sign of a too small hash table or poor hash-function. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The hash table to report on </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The total number of collisions (not duplicates) from inserts </dd></dl>
</div>
</div>
<a class="anchor" id="a4089cf55e57c7a9696ce620791cc14ef"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a>* dkhash_create </td>
<td>(</td>
<td class="paramtype">unsigned int </td>
<td class="paramname"><em>size</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a dual-keyed hash-table of the given size Note that it's generally useful to make the table 25-30% larger than the number of items you intend to store, and also note that the 'size' arguments gets rounded up to the nearest power of 2. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">size</td><td>The desired size of the hash-table. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ac5b485bc59608b0f5de4d7eb374990c0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int dkhash_destroy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroy a dual-keyed hash table. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The table to destroy </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 on errors </dd></dl>
</div>
</div>
<a class="anchor" id="ab8df5117eee672d6f814a5ed91dda110"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* dkhash_get </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>k1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>k2</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch the data associated with a particular key. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The table to get the data from </td></tr>
<tr><td class="paramname">k1</td><td>The first key </td></tr>
<tr><td class="paramname">k2</td><td>The second key </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The data on success, NULL on errors or if data isn't found </dd></dl>
</div>
</div>
<a class="anchor" id="a0beac882fb36d5f8f355e82f77167eaa"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int dkhash_insert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>k1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>k2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>data</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert a new entry into the hash table. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The hash table </td></tr>
<tr><td class="paramname">k1</td><td>The first key </td></tr>
<tr><td class="paramname">k2</td><td>The second key (may be null) </td></tr>
<tr><td class="paramname">data</td><td>The data to insert </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, < 0 on errors </dd></dl>
</div>
</div>
<a class="anchor" id="a6a9ae6207bc2392cf20d9c1c7ec9d53a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int dkhash_num_entries </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get number of items in the hash table. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The hash table </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of items currently in the hash-table </dd></dl>
</div>
</div>
<a class="anchor" id="aba4b7dc064103d9dfa79488718a2e566"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int dkhash_num_entries_added </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get number of entries added to hash table Note that some of them may have been removed. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The hash table </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of items added to the table </dd></dl>
</div>
</div>
<a class="anchor" id="aa6e060bcedb0f75b241974f5f45bd866"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int dkhash_num_entries_max </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get max number of items stored in the hash table. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The hash table </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Max number of items stored in hash-table </dd></dl>
</div>
</div>
<a class="anchor" id="a2c8d4dd27e7511cc8ca107a977179631"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int dkhash_num_entries_removed </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get number of removed items from hash table. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The hash table </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of items removed from hash table </dd></dl>
</div>
</div>
<a class="anchor" id="a49a2175cad5bb6ebbf8db4e9e416e490"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* dkhash_remove </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>k1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>k2</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove data from the hash table Note that this does not free() the pointer to the data stored in the table. </p>
<p>It just destroys containers for that data in the hash table. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The hash table </td></tr>
<tr><td class="paramname">k1</td><td>The first key </td></tr>
<tr><td class="paramname">k2</td><td>The second key </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The removed data on success, or NULL on errors </dd></dl>
</div>
</div>
<a class="anchor" id="af2880db78cafdfc5ab0a60b08f1615ec"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int dkhash_table_size </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get actual table size (in number of buckets) </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The hash table </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of bucket-slots in hash table </dd></dl>
</div>
</div>
<a class="anchor" id="a62a80cf9c389ed8025fffc605c4ce25e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dkhash_walk_data </td>
<td>(</td>
<td class="paramtype"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> * </td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int(*)(void *data) </td>
<td class="paramname"><em>walker</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Call a function once for each item in the hash-table The callback function can return DKHASH_WALK_{REMOVE,STOP} or any OR'ed combination thereof to control the walking procedure, and should return 0 on the normal case. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>The hash table </td></tr>
<tr><td class="paramname">walker</td><td>The callback function to send the data to </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>