Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > cf12361fcbb05ba432e642b5904e6e54 > files > 26

json-c-doc-0.9-2.fc15.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>json-c: linkhash.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>linkhash.h File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__entry.html">lh_entry</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlh__table.html">lh_table</a></td></tr>

<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#032f1bd115df254dda325437203ce5fb">LH_PRIME</a>&nbsp;&nbsp;&nbsp;0x9e370001UL</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#93fad7f8ae44575dc89c9567859972d2">LH_EMPTY</a>&nbsp;&nbsp;&nbsp;(void*)-1</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#c69428f2de0a6fb080b6fb373d506aa7">LH_FREED</a>&nbsp;&nbsp;&nbsp;(void*)-2</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#d7dd67da915065dce2c6f44cb03e2d82">lh_foreach</a>(table, entry)&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry; entry = entry-&gt;next)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#bcbb0df08b4976d0649b826b6bacfca1">lh_foreach_safe</a>(table, entry, tmp)&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry &amp;&amp; ((tmp = entry-&gt;next) || 1); entry = tmp)</td></tr>

<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> )(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned long(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> )(const void *k)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> )(const void *k1, const void *k2)</td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#2e560f0d3e5a20f6b0bfa4049737db23">lh_ptr_hash</a> (const void *k)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#6ce3cb97560072c40f5caeaba85f756a">lh_ptr_equal</a> (const void *k1, const void *k2)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#1fcf495b9c4ce169630cb31f638b8435">lh_char_hash</a> (const void *k)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#e4e9f21fb1a556c7a50c6b7ea61f2079">lh_char_equal</a> (const void *k1, const void *k2)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#c3ba464ac43c083397b1f1d34f2ddf55">lh_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn, <a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *hash_fn, <a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *equal_fn)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#0aaf11e11ee5b0925279a52eab04bc38">lh_kchar_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#705513954267a16cc1d40a284a7c441e">lh_kptr_table_new</a> (int size, const char *name, <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *free_fn)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#81653acf740cf8c9fe672e6cd16df0cf">lh_table_free</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#22b897763cc34a98c21c7fe82d151004">lh_table_insert</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, void *k, const void *v)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#d3b6ca2d967a6c3021ee6c39e014a918">lh_table_lookup_entry</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">const void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#49c27f18a174eaf126d1b7953df13cb1">lh_table_lookup</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#e5885a71c3457190fb1dc2d6e20dde3b">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>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#2fed2c78f70d229edb2d00775ffe593c">lh_table_delete</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, const void *k)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#1294160fa0e80cee04cd745a401f43a4">lh_abort</a> (const char *msg,...)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="linkhash_8h.html#5322eccf3394af7dc1ebb22af8f8c562">lh_table_resize</a> (struct <a class="el" href="structlh__table.html">lh_table</a> *t, int new_size)</td></tr>

</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="93fad7f8ae44575dc89c9567859972d2"></a><!-- doxytag: member="linkhash.h::LH_EMPTY" ref="93fad7f8ae44575dc89c9567859972d2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LH_EMPTY&nbsp;&nbsp;&nbsp;(void*)-1          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
sentinel pointer value for empty slots 
</div>
</div><p>
<a class="anchor" name="d7dd67da915065dce2c6f44cb03e2d82"></a><!-- doxytag: member="linkhash.h::lh_foreach" ref="d7dd67da915065dce2c6f44cb03e2d82" args="(table, entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define lh_foreach          </td>
          <td>(</td>
          <td class="paramtype">table,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">entry&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry; entry = entry-&gt;next)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenience list iterator. 
</div>
</div><p>
<a class="anchor" name="bcbb0df08b4976d0649b826b6bacfca1"></a><!-- doxytag: member="linkhash.h::lh_foreach_safe" ref="bcbb0df08b4976d0649b826b6bacfca1" args="(table, entry, tmp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define lh_foreach_safe          </td>
          <td>(</td>
          <td class="paramtype">table,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">entry,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tmp&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;for(entry = table-&gt;head; entry &amp;&amp; ((tmp = entry-&gt;next) || 1); entry = tmp)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
lh_foreach_safe allows calling of deletion routine while iterating. 
</div>
</div><p>
<a class="anchor" name="c69428f2de0a6fb080b6fb373d506aa7"></a><!-- doxytag: member="linkhash.h::LH_FREED" ref="c69428f2de0a6fb080b6fb373d506aa7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LH_FREED&nbsp;&nbsp;&nbsp;(void*)-2          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
sentinel pointer value for freed slots 
</div>
</div><p>
<a class="anchor" name="032f1bd115df254dda325437203ce5fb"></a><!-- doxytag: member="linkhash.h::LH_PRIME" ref="032f1bd115df254dda325437203ce5fb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LH_PRIME&nbsp;&nbsp;&nbsp;0x9e370001UL          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
golden prime used in hash functions 
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="671553d0ee3c2a123190ba0f8ed2b635"></a><!-- doxytag: member="linkhash.h::lh_entry_free_fn" ref="671553d0ee3c2a123190ba0f8ed2b635" args=")(struct lh_entry *e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void( <a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a>)(struct <a class="el" href="structlh__entry.html">lh_entry</a> *e)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
callback function prototypes 
</div>
</div><p>
<a class="anchor" name="91fd85fc81b0c7c83c62f00e84729091"></a><!-- doxytag: member="linkhash.h::lh_equal_fn" ref="91fd85fc81b0c7c83c62f00e84729091" args=")(const void *k1, const void *k2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int( <a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a>)(const void *k1, const void *k2)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
callback function prototypes 
</div>
</div><p>
<a class="anchor" name="38bae27995dcfb6ee3fb109a9be229b2"></a><!-- doxytag: member="linkhash.h::lh_hash_fn" ref="38bae27995dcfb6ee3fb109a9be229b2" args=")(const void *k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef unsigned long( <a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a>)(const void *k)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
callback function prototypes 
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="1294160fa0e80cee04cd745a401f43a4"></a><!-- doxytag: member="linkhash.h::lh_abort" ref="1294160fa0e80cee04cd745a401f43a4" args="(const char *msg,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void lh_abort           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>msg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="e4e9f21fb1a556c7a50c6b7ea61f2079"></a><!-- doxytag: member="linkhash.h::lh_char_equal" ref="e4e9f21fb1a556c7a50c6b7ea61f2079" args="(const void *k1, const void *k2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lh_char_equal           </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>k1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>k2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="1fcf495b9c4ce169630cb31f638b8435"></a><!-- doxytag: member="linkhash.h::lh_char_hash" ref="1fcf495b9c4ce169630cb31f638b8435" args="(const void *k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned long lh_char_hash           </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>k</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="0aaf11e11ee5b0925279a52eab04bc38"></a><!-- doxytag: member="linkhash.h::lh_kchar_table_new" ref="0aaf11e11ee5b0925279a52eab04bc38" args="(int size, const char *name, lh_entry_free_fn *free_fn)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kchar_table_new           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
          <td class="paramname"> <em>free_fn</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenience function to create a new linkhash table with char keys. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>initial table size. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>table name. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>free_fn</em>&nbsp;</td><td>callback function used to free memory for entries. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>

</div>
</div><p>
<a class="anchor" name="705513954267a16cc1d40a284a7c441e"></a><!-- doxytag: member="linkhash.h::lh_kptr_table_new" ref="705513954267a16cc1d40a284a7c441e" args="(int size, const char *name, lh_entry_free_fn *free_fn)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_kptr_table_new           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
          <td class="paramname"> <em>free_fn</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenience function to create a new linkhash table with ptr keys. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>initial table size. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>table name. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>free_fn</em>&nbsp;</td><td>callback function used to free memory for entries. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>

</div>
</div><p>
<a class="anchor" name="6ce3cb97560072c40f5caeaba85f756a"></a><!-- doxytag: member="linkhash.h::lh_ptr_equal" ref="6ce3cb97560072c40f5caeaba85f756a" args="(const void *k1, const void *k2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lh_ptr_equal           </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>k1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>k2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="2e560f0d3e5a20f6b0bfa4049737db23"></a><!-- doxytag: member="linkhash.h::lh_ptr_hash" ref="2e560f0d3e5a20f6b0bfa4049737db23" args="(const void *k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned long lh_ptr_hash           </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>k</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Pre-defined hash and equality functions 
</div>
</div><p>
<a class="anchor" name="2fed2c78f70d229edb2d00775ffe593c"></a><!-- doxytag: member="linkhash.h::lh_table_delete" ref="2fed2c78f70d229edb2d00775ffe593c" args="(struct lh_table *t, const void *k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lh_table_delete           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>k</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to delete from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to delete. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if the item was deleted. <p>
-1 if it was not found. </dd></dl>

</div>
</div><p>
<a class="anchor" name="e5885a71c3457190fb1dc2d6e20dde3b"></a><!-- doxytag: member="linkhash.h::lh_table_delete_entry" ref="e5885a71c3457190fb1dc2d6e20dde3b" args="(struct lh_table *t, struct lh_entry *e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lh_table_delete_entry           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structlh__entry.html">lh_entry</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to delete from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>e</em>&nbsp;</td><td>a pointer to the entry to delete. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if the item was deleted. <p>
-1 if it was not found. </dd></dl>

</div>
</div><p>
<a class="anchor" name="81653acf740cf8c9fe672e6cd16df0cf"></a><!-- doxytag: member="linkhash.h::lh_table_free" ref="81653acf740cf8c9fe672e6cd16df0cf" args="(struct lh_table *t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void lh_table_free           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Free a linkhash table. If a callback free function is provided then it is called for all entries in the table. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>table to free. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="22b897763cc34a98c21c7fe82d151004"></a><!-- doxytag: member="linkhash.h::lh_table_insert" ref="22b897763cc34a98c21c7fe82d151004" args="(struct lh_table *t, void *k, const void *v)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lh_table_insert           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>v</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Insert a record into the table. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to insert into. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to insert. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>a pointer to the value to insert. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="49c27f18a174eaf126d1b7953df13cb1"></a><!-- doxytag: member="linkhash.h::lh_table_lookup" ref="49c27f18a174eaf126d1b7953df13cb1" args="(struct lh_table *t, const void *k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const void* lh_table_lookup           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>k</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Lookup a record into the table <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to lookup </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to lookup </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the found value or NULL if it does not exist. </dd></dl>

</div>
</div><p>
<a class="anchor" name="d3b6ca2d967a6c3021ee6c39e014a918"></a><!-- doxytag: member="linkhash.h::lh_table_lookup_entry" ref="d3b6ca2d967a6c3021ee6c39e014a918" args="(struct lh_table *t, const void *k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structlh__entry.html">lh_entry</a>* lh_table_lookup_entry           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>k</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Lookup a record into the table. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the table to lookup </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>k</em>&nbsp;</td><td>a pointer to the key to lookup </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the record structure of the value or NULL if it does not exist. </dd></dl>

</div>
</div><p>
<a class="anchor" name="c3ba464ac43c083397b1f1d34f2ddf55"></a><!-- doxytag: member="linkhash.h::lh_table_new" ref="c3ba464ac43c083397b1f1d34f2ddf55" args="(int size, const char *name, lh_entry_free_fn *free_fn, lh_hash_fn *hash_fn, lh_equal_fn *equal_fn)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structlh__table.html">lh_table</a>* lh_table_new           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="linkhash_8h.html#671553d0ee3c2a123190ba0f8ed2b635">lh_entry_free_fn</a> *&nbsp;</td>
          <td class="paramname"> <em>free_fn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="linkhash_8h.html#38bae27995dcfb6ee3fb109a9be229b2">lh_hash_fn</a> *&nbsp;</td>
          <td class="paramname"> <em>hash_fn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="linkhash_8h.html#91fd85fc81b0c7c83c62f00e84729091">lh_equal_fn</a> *&nbsp;</td>
          <td class="paramname"> <em>equal_fn</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a new linkhash table. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>initial table size. The table is automatically resized although this incurs a performance penalty. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the table name. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>free_fn</em>&nbsp;</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>
    <tr><td valign="top"></td><td valign="top"><em>hash_fn</em>&nbsp;</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>
    <tr><td valign="top"></td><td valign="top"><em>equal_fn</em>&nbsp;</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>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer onto the linkhash table. </dd></dl>

</div>
</div><p>
<a class="anchor" name="5322eccf3394af7dc1ebb22af8f8c562"></a><!-- doxytag: member="linkhash.h::lh_table_resize" ref="5322eccf3394af7dc1ebb22af8f8c562" args="(struct lh_table *t, int new_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void lh_table_resize           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlh__table.html">lh_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>new_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 31 10:58:15 2009 for json-c by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>
</html>