%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/proc/self/root/usr/share/nagios/html/docs/
Upload File :
Create Path :
Current File : //proc/self/root/proc/self/root/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
   &#160;<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&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;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&#160;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">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</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 &lt;errno.h&gt;</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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a1237519f5f531a5ca1c2230088b8ffd6">DKHASH_WALK_REMOVE</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:a1237519f5f531a5ca1c2230088b8ffd6"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
<tr class="memitem:ac82fbc44fa4033b6740453b8ee19f24e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac82fbc44fa4033b6740453b8ee19f24e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#ac82fbc44fa4033b6740453b8ee19f24e">DKHASH_WALK_STOP</a>&#160;&#160;&#160;2</td></tr>
<tr class="memdesc:ac82fbc44fa4033b6740453b8ee19f24e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cause walking to stop. <br/></td></tr>
<tr class="separator:ac82fbc44fa4033b6740453b8ee19f24e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a692ac1914579ba43ddfb86fc8dd80e5b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a692ac1914579ba43ddfb86fc8dd80e5b">DKHASH_OK</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:a692ac1914579ba43ddfb86fc8dd80e5b"><td class="mdescLeft">&#160;</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">&#160;</td></tr>
<tr class="memitem:a0017b1cb48394714f36c6afcfd5e9667"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0017b1cb48394714f36c6afcfd5e9667"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a0017b1cb48394714f36c6afcfd5e9667">DKHASH_EDUPE</a>&#160;&#160;&#160;(-EPERM)</td></tr>
<tr class="memdesc:a0017b1cb48394714f36c6afcfd5e9667"><td class="mdescLeft">&#160;</td><td class="mdescRight">duplicate insert attempted <br/></td></tr>
<tr class="separator:a0017b1cb48394714f36c6afcfd5e9667"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af47f37bf6db64b8968e36bb0153dd2aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af47f37bf6db64b8968e36bb0153dd2aa"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#af47f37bf6db64b8968e36bb0153dd2aa">DKHASH_EPERM</a>&#160;&#160;&#160;(-EPERM)</td></tr>
<tr class="memdesc:af47f37bf6db64b8968e36bb0153dd2aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">duplicate insert attempted <br/></td></tr>
<tr class="separator:af47f37bf6db64b8968e36bb0153dd2aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac16da1d934c8c39e89c8cbe2ef4521de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac16da1d934c8c39e89c8cbe2ef4521de"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#ac16da1d934c8c39e89c8cbe2ef4521de">DKHASH_EINVAL</a>&#160;&#160;&#160;(-EINVAL)</td></tr>
<tr class="memdesc:ac16da1d934c8c39e89c8cbe2ef4521de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invalid parameters passed. <br/></td></tr>
<tr class="separator:ac16da1d934c8c39e89c8cbe2ef4521de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2359a936e1570a68373737a552b4c491"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2359a936e1570a68373737a552b4c491"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dkhash_8h.html#a2359a936e1570a68373737a552b4c491">DKHASH_ENOMEM</a>&#160;&#160;&#160;(-ENOMEM)</td></tr>
<tr class="memdesc:a2359a936e1570a68373737a552b4c491"><td class="mdescLeft">&#160;</td><td class="mdescRight">Memory allocation failed. <br/></td></tr>
<tr class="separator:a2359a936e1570a68373737a552b4c491"><td class="memSeparator" colspan="2">&#160;</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>&#160;</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">&#160;</td><td class="mdescRight">opaque type <br/></td></tr>
<tr class="separator:a24ce8d97b87656b597e3a713eff95b84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4089cf55e57c7a9696ce620791cc14ef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="dkhash_8h.html#a24ce8d97b87656b597e3a713eff95b84">dkhash_table</a> *&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:ac5b485bc59608b0f5de4d7eb374990c0"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:ab8df5117eee672d6f814a5ed91dda110"><td class="memItemLeft" align="right" valign="top">void *&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:a0beac882fb36d5f8f355e82f77167eaa"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:a49a2175cad5bb6ebbf8db4e9e416e490"><td class="memItemLeft" align="right" valign="top">void *&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:a62a80cf9c389ed8025fffc605c4ce25e"><td class="memItemLeft" align="right" valign="top">void&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:a0d4edc652b39c216a15bb1fcf2adbeda"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:a6a9ae6207bc2392cf20d9c1c7ec9d53a"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:aa6e060bcedb0f75b241974f5f45bd866"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:aba4b7dc064103d9dfa79488718a2e566"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:a2c8d4dd27e7511cc8ca107a977179631"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:af2880db78cafdfc5ab0a60b08f1615ec"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</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">&#160;</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">&#160;</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&#160;&#160;&#160;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&#160;&#160;&#160;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> *&#160;</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&#160;</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> *&#160;</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> *&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>k1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>k2</em>&#160;</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> *&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>k1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>k2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</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, &lt; 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> *&#160;</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> *&#160;</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> *&#160;</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> *&#160;</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> *&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>k1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>k2</em>&#160;</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> *&#160;</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> *&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *data)&#160;</td>
          <td class="paramname"><em>walker</em>&#160;</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 &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>

Zerion Mini Shell 1.0