Sophie

Sophie

distrib > Fedora > 13 > i386 > by-pkgid > 7fd7c575020aa78a8e2e309ea8909f43 > files > 823

gdal-1.6.2-6.fc13.i686.rpm

<!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"/>
<title>OGR: cpl_hash_set.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.6.2-20100208 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</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>File&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_9403295bfc17f2c2ba80cf17b83e4de3.html">port</a>
  </div>
</div>
<div class="contents">
<h1>cpl_hash_set.h File Reference</h1><code>#include &quot;<a class="el" href="cpl__port_8h_source.html">cpl_port.h</a>&quot;</code><br/>

<p><a href="cpl__hash__set_8h_source.html">Go to the source code of this file.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#ae6c1b105ee3fed90756691037ef20d24">CPLHashSetNew</a> (CPLHashSetHashFunc fnHashFunc, CPLHashSetEqualFunc fnEqualFunc, CPLHashSetFreeEltFunc fnFreeEltFunc)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#a5895b1b1ba8eb2cc1698e27489ac7091">CPLHashSetDestroy</a> (<a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *set)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#a943eb087356353e5d3c06781cf7b7754">CPLHashSetSize</a> (const <a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *set)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#ab50cf26e684b1c64dd3c978d3f802aa3">CPLHashSetForeach</a> (<a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *set, CPLHashSetIterEltFunc fnIterFunc, void *user_data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#aa28b8c9dfc8b8058f15c254cc0150f41">CPLHashSetInsert</a> (<a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *set, void *elt)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#a425b7a541a905456a010ee6f4bcf940f">CPLHashSetLookup</a> (<a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *set, const void *elt)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#a1898b26e58b2b3cd041f925e975c4d1a">CPLHashSetRemove</a> (<a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *set, const void *elt)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#a2ea4e15881139f7d5f10517b1489eea3">CPLHashSetHashPointer</a> (const void *elt)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#a44adc3f09e064338676ea8f40077af03">CPLHashSetEqualPointer</a> (const void *elt1, const void *elt2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#aa6c9878332d26a6071c9f6c552c4d69f">CPLHashSetHashStr</a> (const void *pszStr)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__hash__set_8h.html#ae18034a787cae805266a85a21571649a">CPLHashSetEqualStr</a> (const void *pszStr1, const void *pszStr2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Hash set implementation.</p>
<p>An hash set is a data structure that holds elements that are unique according to a comparison function. Operations on the hash set, such as insertion, removal or lookup, are supposed to be fast if an efficient "hash" function is provided. </p>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a5895b1b1ba8eb2cc1698e27489ac7091"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetDestroy" ref="a5895b1b1ba8eb2cc1698e27489ac7091" args="(CPLHashSet *set)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CPLHashSetDestroy </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *&nbsp;</td>
          <td class="paramname"> <em>set</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Destroys an allocated hash set.</p>
<p>This function also frees the elements if a free function was provided at the creation of the hash set.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>set</em>&nbsp;</td><td>the hash set </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="cpl__list_8h_source.html#l00053">_CPLList::pData</a>, and <a class="el" href="cpl__list_8h_source.html#l00057">_CPLList::psNext</a>.</p>

</div>
</div>
<a class="anchor" id="a44adc3f09e064338676ea8f40077af03"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetEqualPointer" ref="a44adc3f09e064338676ea8f40077af03" args="(const void *elt1, const void *elt2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CPLHashSetEqualPointer </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>elt1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>elt2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Equality function for arbitrary pointers</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>elt1</em>&nbsp;</td><td>the first arbitrary pointer to compare </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>elt2</em>&nbsp;</td><td>the second arbitrary pointer to compare</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if the pointers are equal </dd></dl>

</div>
</div>
<a class="anchor" id="ae18034a787cae805266a85a21571649a"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetEqualStr" ref="ae18034a787cae805266a85a21571649a" args="(const void *pszStr1, const void *pszStr2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CPLHashSetEqualStr </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>elt1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>elt2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Equality function for strings</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>elt1</em>&nbsp;</td><td>the first string to compare. May be NULL. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>elt2</em>&nbsp;</td><td>the second string to compare. May be NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if the strings are equal </dd></dl>

</div>
</div>
<a class="anchor" id="ab50cf26e684b1c64dd3c978d3f802aa3"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetForeach" ref="ab50cf26e684b1c64dd3c978d3f802aa3" args="(CPLHashSet *set, CPLHashSetIterEltFunc fnIterFunc, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CPLHashSetForeach </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *&nbsp;</td>
          <td class="paramname"> <em>set</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CPLHashSetIterEltFunc&nbsp;</td>
          <td class="paramname"> <em>fnIterFunc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Walk through the hash set and runs the provided function on all the elements</p>
<p>This function is provided the user_data argument of CPLHashSetForeach. It must return TRUE to go on the walk through the hash set, or FALSE to make it stop.</p>
<p>Note : the structure of the hash set must *NOT* be modified during the walk.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>set</em>&nbsp;</td><td>the hash set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fnIterFunc</em>&nbsp;</td><td>the function called on each element. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>the user data provided to the function. </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="cpl__list_8h_source.html#l00053">_CPLList::pData</a>, and <a class="el" href="cpl__list_8h_source.html#l00057">_CPLList::psNext</a>.</p>

</div>
</div>
<a class="anchor" id="a2ea4e15881139f7d5f10517b1489eea3"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetHashPointer" ref="a2ea4e15881139f7d5f10517b1489eea3" args="(const void *elt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned long CPLHashSetHashPointer </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>elt</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Hash function for an arbitrary pointer</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>elt</em>&nbsp;</td><td>the arbitrary pointer to hash</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the hash value of the pointer </dd></dl>

</div>
</div>
<a class="anchor" id="aa6c9878332d26a6071c9f6c552c4d69f"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetHashStr" ref="aa6c9878332d26a6071c9f6c552c4d69f" args="(const void *pszStr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned long CPLHashSetHashStr </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>elt</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Hash function for a zero-terminated string</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>elt</em>&nbsp;</td><td>the string to hash. May be NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the hash value of the string </dd></dl>

</div>
</div>
<a class="anchor" id="aa28b8c9dfc8b8058f15c254cc0150f41"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetInsert" ref="aa28b8c9dfc8b8058f15c254cc0150f41" args="(CPLHashSet *set, void *elt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CPLHashSetInsert </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *&nbsp;</td>
          <td class="paramname"> <em>set</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>elt</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Inserts an element into a hash set.</p>
<p>If the element was already inserted in the hash set, the previous element is replaced by the new element. If a free function was provided, it is used to free the previously inserted element</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>set</em>&nbsp;</td><td>the hash set </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>elt</em>&nbsp;</td><td>the new element to insert in the hash set</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if the element was not already in the hash set </dd></dl>

</div>
</div>
<a class="anchor" id="a425b7a541a905456a010ee6f4bcf940f"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetLookup" ref="a425b7a541a905456a010ee6f4bcf940f" args="(CPLHashSet *set, const void *elt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* CPLHashSetLookup </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *&nbsp;</td>
          <td class="paramname"> <em>set</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>elt</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the element found in the hash set corresponding to the element to look up The element must not be modified.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>set</em>&nbsp;</td><td>the hash set </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>elt</em>&nbsp;</td><td>the element to look up in the hash set</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the element found in the hash set or NULL </dd></dl>

</div>
</div>
<a class="anchor" id="ae6c1b105ee3fed90756691037ef20d24"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetNew" ref="ae6c1b105ee3fed90756691037ef20d24" args="(CPLHashSetHashFunc fnHashFunc, CPLHashSetEqualFunc fnEqualFunc, CPLHashSetFreeEltFunc fnFreeEltFunc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="struct__CPLHashSet.html">CPLHashSet</a>* CPLHashSetNew </td>
          <td>(</td>
          <td class="paramtype">CPLHashSetHashFunc&nbsp;</td>
          <td class="paramname"> <em>fnHashFunc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CPLHashSetEqualFunc&nbsp;</td>
          <td class="paramname"> <em>fnEqualFunc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CPLHashSetFreeEltFunc&nbsp;</td>
          <td class="paramname"> <em>fnFreeEltFunc</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Creates a new hash set</p>
<p>The hash function must return a hash value for the elements to insert. If fnHashFunc is NULL, CPLHashSetHashPointer will be used.</p>
<p>The equal function must return if two elements are equal. If fnEqualFunc is NULL, CPLHashSetEqualPointer will be used.</p>
<p>The free function is used to free elements inserted in the hash set, when the hash set is destroyed, when elements are removed or replaced. If fnFreeEltFunc is NULL, elements inserted into the hash set will not be freed.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fnHashFunc</em>&nbsp;</td><td>hash function. May be NULL. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fnEqualFunc</em>&nbsp;</td><td>equal function. May be NULL. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fnFreeEltFunc</em>&nbsp;</td><td>element free function. May be NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a new hash set </dd></dl>

</div>
</div>
<a class="anchor" id="a1898b26e58b2b3cd041f925e975c4d1a"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetRemove" ref="a1898b26e58b2b3cd041f925e975c4d1a" args="(CPLHashSet *set, const void *elt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CPLHashSetRemove </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *&nbsp;</td>
          <td class="paramname"> <em>set</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>elt</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Removes an element from a hash set</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>set</em>&nbsp;</td><td>the hash set </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>elt</em>&nbsp;</td><td>the new element to remove from the hash set</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if the element was in the hash set </dd></dl>

<p>References <a class="el" href="cpl__list_8h_source.html#l00053">_CPLList::pData</a>, and <a class="el" href="cpl__list_8h_source.html#l00057">_CPLList::psNext</a>.</p>

</div>
</div>
<a class="anchor" id="a943eb087356353e5d3c06781cf7b7754"></a><!-- doxytag: member="cpl_hash_set.h::CPLHashSetSize" ref="a943eb087356353e5d3c06781cf7b7754" args="(const CPLHashSet *set)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CPLHashSetSize </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="struct__CPLHashSet.html">CPLHashSet</a> *&nbsp;</td>
          <td class="paramname"> <em>set</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the number of elements inserted in the hash set</p>
<p>Note: this is not the internal size of the hash set</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>set</em>&nbsp;</td><td>the hash set</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of elements in the hash set </dd></dl>

</div>
</div>
</div>
<hr>

Generated for GDAL by 
<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.6.2-20100208.
</body>
</html>