docs/api-2.1/map_8h.html

Sat, 06 Feb 2021 19:11:44 +0100

author
Mike Becker <universe@uap-core.de>
date
Sat, 06 Feb 2021 19:11:44 +0100
changeset 390
d345541018fa
permissions
-rw-r--r--

starts ucx 3.0 development

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
     5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
     6 <meta name="generator" content="Doxygen 1.8.13"/>
     7 <meta name="viewport" content="width=device-width, initial-scale=1"/>
     8 <title>ucx: /home/mike/workspace/c/ucx/src/ucx/map.h File Reference</title>
     9 <link href="tabs.css" rel="stylesheet" type="text/css"/>
    10 <script type="text/javascript" src="jquery.js"></script>
    11 <script type="text/javascript" src="dynsections.js"></script>
    12 <link href="search/search.css" rel="stylesheet" type="text/css"/>
    13 <script type="text/javascript" src="search/searchdata.js"></script>
    14 <script type="text/javascript" src="search/search.js"></script>
    15 <link href="doxygen.css" rel="stylesheet" type="text/css" />
    16 </head>
    17 <body>
    18 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
    19 <div id="titlearea">
    20 <table cellspacing="0" cellpadding="0">
    21  <tbody>
    22  <tr style="height: 56px;">
    23   <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td>
    24   <td id="projectalign" style="padding-left: 0.5em;">
    25    <div id="projectname">ucx
    26    </div>
    27    <div id="projectbrief">UAP Common Extensions</div>
    28   </td>
    29  </tr>
    30  </tbody>
    31 </table>
    32 </div>
    33 <!-- end header part -->
    34 <!-- Generated by Doxygen 1.8.13 -->
    35 <script type="text/javascript">
    36 var searchBox = new SearchBox("searchBox", "search",false,'Search');
    37 </script>
    38 <script type="text/javascript" src="menudata.js"></script>
    39 <script type="text/javascript" src="menu.js"></script>
    40 <script type="text/javascript">
    41 $(function() {
    42   initMenu('',true,false,'search.php','Search');
    43   $(document).ready(function() { init_search(); });
    44 });
    45 </script>
    46 <div id="main-nav"></div>
    47 <!-- window showing the filter options -->
    48 <div id="MSearchSelectWindow"
    49      onmouseover="return searchBox.OnSearchSelectShow()"
    50      onmouseout="return searchBox.OnSearchSelectHide()"
    51      onkeydown="return searchBox.OnSearchSelectKey(event)">
    52 </div>
    54 <!-- iframe showing the search results (closed by default) -->
    55 <div id="MSearchResultsWindow">
    56 <iframe src="javascript:void(0)" frameborder="0" 
    57         name="MSearchResults" id="MSearchResults">
    58 </iframe>
    59 </div>
    61 <div id="nav-path" class="navpath">
    62   <ul>
    63 <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li>  </ul>
    64 </div>
    65 </div><!-- top -->
    66 <div class="header">
    67   <div class="summary">
    68 <a href="#nested-classes">Data Structures</a> &#124;
    69 <a href="#define-members">Macros</a> &#124;
    70 <a href="#typedef-members">Typedefs</a> &#124;
    71 <a href="#func-members">Functions</a>  </div>
    72   <div class="headertitle">
    73 <div class="title">map.h File Reference</div>  </div>
    74 </div><!--header-->
    75 <div class="contents">
    77 <p>Hash map implementation.  
    78 <a href="#details">More...</a></p>
    79 <div class="textblock"><code>#include &quot;<a class="el" href="ucx_8h_source.html">ucx.h</a>&quot;</code><br />
    80 <code>#include &quot;<a class="el" href="string_8h_source.html">string.h</a>&quot;</code><br />
    81 <code>#include &quot;<a class="el" href="allocator_8h_source.html">allocator.h</a>&quot;</code><br />
    82 <code>#include &lt;stdio.h&gt;</code><br />
    83 </div>
    84 <p><a href="map_8h_source.html">Go to the source code of this file.</a></p>
    85 <table class="memberdecls">
    86 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
    87 Data Structures</h2></td></tr>
    88 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMap.html">UcxMap</a></td></tr>
    89 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure for the UCX map.  <a href="structUcxMap.html#details">More...</a><br /></td></tr>
    90 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
    91 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxKey.html">UcxKey</a></td></tr>
    92 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure to publicly denote a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>.  <a href="structUcxKey.html#details">More...</a><br /></td></tr>
    93 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
    94 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapKey.html">UcxMapKey</a></td></tr>
    95 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal structure for a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>.  <a href="structUcxMapKey.html#details">More...</a><br /></td></tr>
    96 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
    97 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapElement.html">UcxMapElement</a></td></tr>
    98 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure for an element of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>.  <a href="structUcxMapElement.html#details">More...</a><br /></td></tr>
    99 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
   100 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a></td></tr>
   101 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure for an iterator over a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>.  <a href="structUcxMapIterator.html#details">More...</a><br /></td></tr>
   102 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
   103 </table><table class="memberdecls">
   104 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
   105 Macros</h2></td></tr>
   106 <tr class="memitem:a940896c4aa1b13e54c55c04c3efc186b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a940896c4aa1b13e54c55c04c3efc186b">UCX_MAP_FOREACH</a>(key,  value,  iter)&#160;&#160;&#160;for(<a class="el" href="structUcxKey.html">UcxKey</a> key;<a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a>(&amp;iter,&amp;key, (void**)&amp;value);)</td></tr>
   107 <tr class="memdesc:a940896c4aa1b13e54c55c04c3efc186b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loop statement for UCX maps.  <a href="#a940896c4aa1b13e54c55c04c3efc186b">More...</a><br /></td></tr>
   108 <tr class="separator:a940896c4aa1b13e54c55c04c3efc186b"><td class="memSeparator" colspan="2">&#160;</td></tr>
   109 <tr class="memitem:ac26a8615bfc8f47ee9eaceb47645f98e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ac26a8615bfc8f47ee9eaceb47645f98e">ucx_map_sstr_put</a>(map,  key,  value)&#160;&#160;&#160;<a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length), (void*)value)</td></tr>
   110 <tr class="memdesc:ac26a8615bfc8f47ee9eaceb47645f98e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shorthand for putting data with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key into the map.  <a href="#ac26a8615bfc8f47ee9eaceb47645f98e">More...</a><br /></td></tr>
   111 <tr class="separator:ac26a8615bfc8f47ee9eaceb47645f98e"><td class="memSeparator" colspan="2">&#160;</td></tr>
   112 <tr class="memitem:ad9356b01425b934ab237b52339ac0cc3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad9356b01425b934ab237b52339ac0cc3">ucx_map_cstr_put</a>(map,  key,  value)&#160;&#160;&#160;<a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)), (void*)value)</td></tr>
   113 <tr class="memdesc:ad9356b01425b934ab237b52339ac0cc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shorthand for putting data with a C string key into the map.  <a href="#ad9356b01425b934ab237b52339ac0cc3">More...</a><br /></td></tr>
   114 <tr class="separator:ad9356b01425b934ab237b52339ac0cc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
   115 <tr class="memitem:aaa30af79b4068c923895619e83f44367"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aaa30af79b4068c923895619e83f44367">ucx_map_int_put</a>(map,  key,  value)&#160;&#160;&#160;<a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&amp;key, sizeof(key)), (void*)value)</td></tr>
   116 <tr class="memdesc:aaa30af79b4068c923895619e83f44367"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shorthand for putting data with an integer key into the map.  <a href="#aaa30af79b4068c923895619e83f44367">More...</a><br /></td></tr>
   117 <tr class="separator:aaa30af79b4068c923895619e83f44367"><td class="memSeparator" colspan="2">&#160;</td></tr>
   118 <tr class="memitem:a14d385f6b7f371f0507861cabd2eab4e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a14d385f6b7f371f0507861cabd2eab4e">ucx_map_sstr_get</a>(map,  key)&#160;&#160;&#160;<a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length))</td></tr>
   119 <tr class="memdesc:a14d385f6b7f371f0507861cabd2eab4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shorthand for getting data from the map with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key.  <a href="#a14d385f6b7f371f0507861cabd2eab4e">More...</a><br /></td></tr>
   120 <tr class="separator:a14d385f6b7f371f0507861cabd2eab4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
   121 <tr class="memitem:a64e1fb55498fa502dd2ed8ed69062cdd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a64e1fb55498fa502dd2ed8ed69062cdd">ucx_map_cstr_get</a>(map,  key)&#160;&#160;&#160;<a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)))</td></tr>
   122 <tr class="memdesc:a64e1fb55498fa502dd2ed8ed69062cdd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shorthand for getting data from the map with a C string key.  <a href="#a64e1fb55498fa502dd2ed8ed69062cdd">More...</a><br /></td></tr>
   123 <tr class="separator:a64e1fb55498fa502dd2ed8ed69062cdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
   124 <tr class="memitem:aa1681bd2178553cd092fd24c4d681d3c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aa1681bd2178553cd092fd24c4d681d3c">ucx_map_int_get</a>(map,  key)&#160;&#160;&#160;<a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&amp;key, sizeof(int)))</td></tr>
   125 <tr class="memdesc:aa1681bd2178553cd092fd24c4d681d3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shorthand for getting data from the map with an integer key.  <a href="#aa1681bd2178553cd092fd24c4d681d3c">More...</a><br /></td></tr>
   126 <tr class="separator:aa1681bd2178553cd092fd24c4d681d3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
   127 <tr class="memitem:a48700ea86fadb9ea54d13010f9124df2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a48700ea86fadb9ea54d13010f9124df2">ucx_map_sstr_remove</a>(map,  key)&#160;&#160;&#160;<a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length))</td></tr>
   128 <tr class="memdesc:a48700ea86fadb9ea54d13010f9124df2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shorthand for removing data from the map with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key.  <a href="#a48700ea86fadb9ea54d13010f9124df2">More...</a><br /></td></tr>
   129 <tr class="separator:a48700ea86fadb9ea54d13010f9124df2"><td class="memSeparator" colspan="2">&#160;</td></tr>
   130 <tr class="memitem:a9c4405a5a75ecf64e2ef3d0c6501a9fe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a9c4405a5a75ecf64e2ef3d0c6501a9fe">ucx_map_cstr_remove</a>(map,  key)&#160;&#160;&#160;<a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)))</td></tr>
   131 <tr class="memdesc:a9c4405a5a75ecf64e2ef3d0c6501a9fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shorthand for removing data from the map with a C string key.  <a href="#a9c4405a5a75ecf64e2ef3d0c6501a9fe">More...</a><br /></td></tr>
   132 <tr class="separator:a9c4405a5a75ecf64e2ef3d0c6501a9fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
   133 <tr class="memitem:aa767958b5468737755c09f7185b1770c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aa767958b5468737755c09f7185b1770c">ucx_map_int_remove</a>(map,  key)&#160;&#160;&#160;<a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&amp;key, sizeof(key)))</td></tr>
   134 <tr class="memdesc:aa767958b5468737755c09f7185b1770c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shorthand for removing data from the map with an integer key.  <a href="#aa767958b5468737755c09f7185b1770c">More...</a><br /></td></tr>
   135 <tr class="separator:aa767958b5468737755c09f7185b1770c"><td class="memSeparator" colspan="2">&#160;</td></tr>
   136 </table><table class="memberdecls">
   137 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
   138 Typedefs</h2></td></tr>
   139 <tr class="memitem:a18e21948725b2da68c35da587a722033"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxMap.html">UcxMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a18e21948725b2da68c35da587a722033">UcxMap</a></td></tr>
   140 <tr class="memdesc:a18e21948725b2da68c35da587a722033"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the UCX map.  <a href="#a18e21948725b2da68c35da587a722033">More...</a><br /></td></tr>
   141 <tr class="separator:a18e21948725b2da68c35da587a722033"><td class="memSeparator" colspan="2">&#160;</td></tr>
   142 <tr class="memitem:ad63828bb23123fc01a5315a2bac3b142"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxKey.html">UcxKey</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad63828bb23123fc01a5315a2bac3b142">UcxKey</a></td></tr>
   143 <tr class="memdesc:ad63828bb23123fc01a5315a2bac3b142"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>.  <a href="#ad63828bb23123fc01a5315a2bac3b142">More...</a><br /></td></tr>
   144 <tr class="separator:ad63828bb23123fc01a5315a2bac3b142"><td class="memSeparator" colspan="2">&#160;</td></tr>
   145 <tr class="memitem:ad7d7a910a32113eb93eae11c3dc97b4b"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxMapElement.html">UcxMapElement</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad7d7a910a32113eb93eae11c3dc97b4b">UcxMapElement</a></td></tr>
   146 <tr class="memdesc:ad7d7a910a32113eb93eae11c3dc97b4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for an element of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>.  <a href="#ad7d7a910a32113eb93eae11c3dc97b4b">More...</a><br /></td></tr>
   147 <tr class="separator:ad7d7a910a32113eb93eae11c3dc97b4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
   148 <tr class="memitem:ae36aff5f645948c54f51578b11fd87fb"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxMapIterator.html">UcxMapIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ae36aff5f645948c54f51578b11fd87fb">UcxMapIterator</a></td></tr>
   149 <tr class="memdesc:ae36aff5f645948c54f51578b11fd87fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for an iterator over a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>.  <a href="#ae36aff5f645948c54f51578b11fd87fb">More...</a><br /></td></tr>
   150 <tr class="separator:ae36aff5f645948c54f51578b11fd87fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
   151 </table><table class="memberdecls">
   152 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
   153 Functions</h2></td></tr>
   154 <tr class="memitem:a79f31de8b93814493759dbc8b940cf0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a79f31de8b93814493759dbc8b940cf0c">ucx_map_new</a> (size_t size)</td></tr>
   155 <tr class="memdesc:a79f31de8b93814493759dbc8b940cf0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new hash map with the specified size.  <a href="#a79f31de8b93814493759dbc8b940cf0c">More...</a><br /></td></tr>
   156 <tr class="separator:a79f31de8b93814493759dbc8b940cf0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
   157 <tr class="memitem:aed508a94c66cc15372503c64b70eb03e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aed508a94c66cc15372503c64b70eb03e">ucx_map_new_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, size_t size)</td></tr>
   158 <tr class="memdesc:aed508a94c66cc15372503c64b70eb03e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new hash map with the specified size using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>.  <a href="#aed508a94c66cc15372503c64b70eb03e">More...</a><br /></td></tr>
   159 <tr class="separator:aed508a94c66cc15372503c64b70eb03e"><td class="memSeparator" colspan="2">&#160;</td></tr>
   160 <tr class="memitem:abe3d9688e4224bf7bb962abf25ff8c2e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e">ucx_map_free</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map)</td></tr>
   161 <tr class="memdesc:abe3d9688e4224bf7bb962abf25ff8c2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees a hash map.  <a href="#abe3d9688e4224bf7bb962abf25ff8c2e">More...</a><br /></td></tr>
   162 <tr class="separator:abe3d9688e4224bf7bb962abf25ff8c2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
   163 <tr class="memitem:a750f3d9d83e2f3788a14c17a9d160618"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618">ucx_map_free_content</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map, <a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr)</td></tr>
   164 <tr class="memdesc:a750f3d9d83e2f3788a14c17a9d160618"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees the contents of a hash map.  <a href="#a750f3d9d83e2f3788a14c17a9d160618">More...</a><br /></td></tr>
   165 <tr class="separator:a750f3d9d83e2f3788a14c17a9d160618"><td class="memSeparator" colspan="2">&#160;</td></tr>
   166 <tr class="memitem:a285e90e40681c6d9631c935dda0967f2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a285e90e40681c6d9631c935dda0967f2">ucx_map_clear</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map)</td></tr>
   167 <tr class="memdesc:a285e90e40681c6d9631c935dda0967f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears a hash map.  <a href="#a285e90e40681c6d9631c935dda0967f2">More...</a><br /></td></tr>
   168 <tr class="separator:a285e90e40681c6d9631c935dda0967f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
   169 <tr class="memitem:adfeb2d61003fd2896bcfdc9a57f36425"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425">ucx_map_copy</a> (<a class="el" href="structUcxMap.html">UcxMap</a> const *from, <a class="el" href="structUcxMap.html">UcxMap</a> *to, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, void *data)</td></tr>
   170 <tr class="memdesc:adfeb2d61003fd2896bcfdc9a57f36425"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies contents from a map to another map using a copy function.  <a href="#adfeb2d61003fd2896bcfdc9a57f36425">More...</a><br /></td></tr>
   171 <tr class="separator:adfeb2d61003fd2896bcfdc9a57f36425"><td class="memSeparator" colspan="2">&#160;</td></tr>
   172 <tr class="memitem:a62c6c30cbb0d824ba710f5030ff9a4e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a62c6c30cbb0d824ba710f5030ff9a4e4">ucx_map_clone</a> (<a class="el" href="structUcxMap.html">UcxMap</a> const *map, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, void *data)</td></tr>
   173 <tr class="memdesc:a62c6c30cbb0d824ba710f5030ff9a4e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clones the map and rehashes if necessary.  <a href="#a62c6c30cbb0d824ba710f5030ff9a4e4">More...</a><br /></td></tr>
   174 <tr class="separator:a62c6c30cbb0d824ba710f5030ff9a4e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
   175 <tr class="memitem:a9aea9103703d5c168420bb6bf85549ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a9aea9103703d5c168420bb6bf85549ea">ucx_map_clone_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structUcxMap.html">UcxMap</a> const *map, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, void *data)</td></tr>
   176 <tr class="memdesc:a9aea9103703d5c168420bb6bf85549ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clones the map and rehashes if necessary.  <a href="#a9aea9103703d5c168420bb6bf85549ea">More...</a><br /></td></tr>
   177 <tr class="separator:a9aea9103703d5c168420bb6bf85549ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
   178 <tr class="memitem:a174bce9fad554dd92b8da354e0d32512"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a174bce9fad554dd92b8da354e0d32512">ucx_map_rehash</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map)</td></tr>
   179 <tr class="memdesc:a174bce9fad554dd92b8da354e0d32512"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increases size of the hash map, if necessary.  <a href="#a174bce9fad554dd92b8da354e0d32512">More...</a><br /></td></tr>
   180 <tr class="separator:a174bce9fad554dd92b8da354e0d32512"><td class="memSeparator" colspan="2">&#160;</td></tr>
   181 <tr class="memitem:ac04a08b604217070254d4c58f0e82498"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map, <a class="el" href="structUcxKey.html">UcxKey</a> key, void *value)</td></tr>
   182 <tr class="memdesc:ac04a08b604217070254d4c58f0e82498"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puts a key/value-pair into the map.  <a href="#ac04a08b604217070254d4c58f0e82498">More...</a><br /></td></tr>
   183 <tr class="separator:ac04a08b604217070254d4c58f0e82498"><td class="memSeparator" colspan="2">&#160;</td></tr>
   184 <tr class="memitem:ab61192c5af2e06ecb9ad73880d1c95a6"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a> (<a class="el" href="structUcxMap.html">UcxMap</a> const *map, <a class="el" href="structUcxKey.html">UcxKey</a> key)</td></tr>
   185 <tr class="memdesc:ab61192c5af2e06ecb9ad73880d1c95a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a value by using a key.  <a href="#ab61192c5af2e06ecb9ad73880d1c95a6">More...</a><br /></td></tr>
   186 <tr class="separator:ab61192c5af2e06ecb9ad73880d1c95a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
   187 <tr class="memitem:a17248a4888eb8f9ae18be522d64632aa"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map, <a class="el" href="structUcxKey.html">UcxKey</a> key)</td></tr>
   188 <tr class="memdesc:a17248a4888eb8f9ae18be522d64632aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a key/value-pair from the map by using the key.  <a href="#a17248a4888eb8f9ae18be522d64632aa">More...</a><br /></td></tr>
   189 <tr class="separator:a17248a4888eb8f9ae18be522d64632aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
   190 <tr class="memitem:a3e540bb46b8ee19789aed63fd8919200"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxKey.html">UcxKey</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a> (const void *data, size_t len)</td></tr>
   191 <tr class="memdesc:a3e540bb46b8ee19789aed63fd8919200"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="structUcxKey.html" title="Structure to publicly denote a key of a UcxMap. ">UcxKey</a> based on the given data.  <a href="#a3e540bb46b8ee19789aed63fd8919200">More...</a><br /></td></tr>
   192 <tr class="separator:a3e540bb46b8ee19789aed63fd8919200"><td class="memSeparator" colspan="2">&#160;</td></tr>
   193 <tr class="memitem:aea3be97254c05595d986ef6a9faae87b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aea3be97254c05595d986ef6a9faae87b">ucx_hash</a> (const char *data, size_t len)</td></tr>
   194 <tr class="memdesc:aea3be97254c05595d986ef6a9faae87b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes a murmur hash-2.  <a href="#aea3be97254c05595d986ef6a9faae87b">More...</a><br /></td></tr>
   195 <tr class="separator:aea3be97254c05595d986ef6a9faae87b"><td class="memSeparator" colspan="2">&#160;</td></tr>
   196 <tr class="memitem:a9150e9c64fdf4dfcc2cad106b91aa110"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110">ucx_map_iterator</a> (<a class="el" href="structUcxMap.html">UcxMap</a> const *map)</td></tr>
   197 <tr class="memdesc:a9150e9c64fdf4dfcc2cad106b91aa110"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an iterator for a map.  <a href="#a9150e9c64fdf4dfcc2cad106b91aa110">More...</a><br /></td></tr>
   198 <tr class="separator:a9150e9c64fdf4dfcc2cad106b91aa110"><td class="memSeparator" colspan="2">&#160;</td></tr>
   199 <tr class="memitem:aceb8675abf44860b4bbc301bbada5b91"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a> (<a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> *iterator, <a class="el" href="structUcxKey.html">UcxKey</a> *key, void **value)</td></tr>
   200 <tr class="memdesc:aceb8675abf44860b4bbc301bbada5b91"><td class="mdescLeft">&#160;</td><td class="mdescRight">Proceeds to the next element of the map (if any).  <a href="#aceb8675abf44860b4bbc301bbada5b91">More...</a><br /></td></tr>
   201 <tr class="separator:aceb8675abf44860b4bbc301bbada5b91"><td class="memSeparator" colspan="2">&#160;</td></tr>
   202 <tr class="memitem:a3f65978c481af7f637cad021d93522d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a3f65978c481af7f637cad021d93522d5">ucx_map_union</a> (const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
   203 <tr class="memdesc:a3f65978c481af7f637cad021d93522d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the union of two maps.  <a href="#a3f65978c481af7f637cad021d93522d5">More...</a><br /></td></tr>
   204 <tr class="separator:a3f65978c481af7f637cad021d93522d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
   205 <tr class="memitem:ab6370c3fa8113fdad593ce4b0460c9c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ab6370c3fa8113fdad593ce4b0460c9c6">ucx_map_union_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
   206 <tr class="memdesc:ab6370c3fa8113fdad593ce4b0460c9c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the union of two maps.  <a href="#ab6370c3fa8113fdad593ce4b0460c9c6">More...</a><br /></td></tr>
   207 <tr class="separator:ab6370c3fa8113fdad593ce4b0460c9c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
   208 <tr class="memitem:aa594d7a5afebc3bed6bb265348cf6b0d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aa594d7a5afebc3bed6bb265348cf6b0d">ucx_map_intersection</a> (const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
   209 <tr class="memdesc:aa594d7a5afebc3bed6bb265348cf6b0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the intersection of two maps.  <a href="#aa594d7a5afebc3bed6bb265348cf6b0d">More...</a><br /></td></tr>
   210 <tr class="separator:aa594d7a5afebc3bed6bb265348cf6b0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
   211 <tr class="memitem:a169e0470a20484dd76425fdf77e3651e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a169e0470a20484dd76425fdf77e3651e">ucx_map_intersection_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
   212 <tr class="memdesc:a169e0470a20484dd76425fdf77e3651e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the intersection of two maps.  <a href="#a169e0470a20484dd76425fdf77e3651e">More...</a><br /></td></tr>
   213 <tr class="separator:a169e0470a20484dd76425fdf77e3651e"><td class="memSeparator" colspan="2">&#160;</td></tr>
   214 <tr class="memitem:a774fcff87d1e58b6c5af77dd19a8c3dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a774fcff87d1e58b6c5af77dd19a8c3dc">ucx_map_difference</a> (const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
   215 <tr class="memdesc:a774fcff87d1e58b6c5af77dd19a8c3dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the difference of two maps.  <a href="#a774fcff87d1e58b6c5af77dd19a8c3dc">More...</a><br /></td></tr>
   216 <tr class="separator:a774fcff87d1e58b6c5af77dd19a8c3dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
   217 <tr class="memitem:ad0ba103494247d798ac3037c50fc8831"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad0ba103494247d798ac3037c50fc8831">ucx_map_difference_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
   218 <tr class="memdesc:ad0ba103494247d798ac3037c50fc8831"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the difference of two maps.  <a href="#ad0ba103494247d798ac3037c50fc8831">More...</a><br /></td></tr>
   219 <tr class="separator:ad0ba103494247d798ac3037c50fc8831"><td class="memSeparator" colspan="2">&#160;</td></tr>
   220 </table>
   221 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
   222 <div class="textblock"><p>Hash map implementation. </p>
   223 <p>This implementation uses murmur hash 2 and separate chaining with linked lists.</p>
   224 <dl class="section author"><dt>Author</dt><dd>Mike Becker </dd>
   225 <dd>
   226 Olaf Wintermann </dd></dl>
   227 </div><h2 class="groupheader">Macro Definition Documentation</h2>
   228 <a id="a64e1fb55498fa502dd2ed8ed69062cdd"></a>
   229 <h2 class="memtitle"><span class="permalink"><a href="#a64e1fb55498fa502dd2ed8ed69062cdd">&#9670;&nbsp;</a></span>ucx_map_cstr_get</h2>
   231 <div class="memitem">
   232 <div class="memproto">
   233       <table class="memname">
   234         <tr>
   235           <td class="memname">#define ucx_map_cstr_get</td>
   236           <td>(</td>
   237           <td class="paramtype">&#160;</td>
   238           <td class="paramname">map, </td>
   239         </tr>
   240         <tr>
   241           <td class="paramkey"></td>
   242           <td></td>
   243           <td class="paramtype">&#160;</td>
   244           <td class="paramname">key&#160;</td>
   245         </tr>
   246         <tr>
   247           <td></td>
   248           <td>)</td>
   249           <td></td><td>&#160;&#160;&#160;<a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)))</td>
   250         </tr>
   251       </table>
   252 </div><div class="memdoc">
   254 <p>Shorthand for getting data from the map with a C string key. </p>
   255 <dl class="params"><dt>Parameters</dt><dd>
   256   <table class="params">
   257     <tr><td class="paramname">map</td><td>the map </td></tr>
   258     <tr><td class="paramname">key</td><td>the key </td></tr>
   259   </table>
   260   </dd>
   261 </dl>
   262 <dl class="section return"><dt>Returns</dt><dd>the value </dd></dl>
   263 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6" title="Retrieves a value by using a key. ">ucx_map_get()</a> </dd></dl>
   265 </div>
   266 </div>
   267 <a id="ad9356b01425b934ab237b52339ac0cc3"></a>
   268 <h2 class="memtitle"><span class="permalink"><a href="#ad9356b01425b934ab237b52339ac0cc3">&#9670;&nbsp;</a></span>ucx_map_cstr_put</h2>
   270 <div class="memitem">
   271 <div class="memproto">
   272       <table class="memname">
   273         <tr>
   274           <td class="memname">#define ucx_map_cstr_put</td>
   275           <td>(</td>
   276           <td class="paramtype">&#160;</td>
   277           <td class="paramname">map, </td>
   278         </tr>
   279         <tr>
   280           <td class="paramkey"></td>
   281           <td></td>
   282           <td class="paramtype">&#160;</td>
   283           <td class="paramname">key, </td>
   284         </tr>
   285         <tr>
   286           <td class="paramkey"></td>
   287           <td></td>
   288           <td class="paramtype">&#160;</td>
   289           <td class="paramname">value&#160;</td>
   290         </tr>
   291         <tr>
   292           <td></td>
   293           <td>)</td>
   294           <td></td><td>&#160;&#160;&#160;<a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)), (void*)value)</td>
   295         </tr>
   296       </table>
   297 </div><div class="memdoc">
   299 <p>Shorthand for putting data with a C string key into the map. </p>
   300 <dl class="params"><dt>Parameters</dt><dd>
   301   <table class="params">
   302     <tr><td class="paramname">map</td><td>the map </td></tr>
   303     <tr><td class="paramname">key</td><td>the key </td></tr>
   304     <tr><td class="paramname">value</td><td>the value </td></tr>
   305   </table>
   306   </dd>
   307 </dl>
   308 <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl>
   309 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498" title="Puts a key/value-pair into the map. ">ucx_map_put()</a> </dd></dl>
   311 </div>
   312 </div>
   313 <a id="a9c4405a5a75ecf64e2ef3d0c6501a9fe"></a>
   314 <h2 class="memtitle"><span class="permalink"><a href="#a9c4405a5a75ecf64e2ef3d0c6501a9fe">&#9670;&nbsp;</a></span>ucx_map_cstr_remove</h2>
   316 <div class="memitem">
   317 <div class="memproto">
   318       <table class="memname">
   319         <tr>
   320           <td class="memname">#define ucx_map_cstr_remove</td>
   321           <td>(</td>
   322           <td class="paramtype">&#160;</td>
   323           <td class="paramname">map, </td>
   324         </tr>
   325         <tr>
   326           <td class="paramkey"></td>
   327           <td></td>
   328           <td class="paramtype">&#160;</td>
   329           <td class="paramname">key&#160;</td>
   330         </tr>
   331         <tr>
   332           <td></td>
   333           <td>)</td>
   334           <td></td><td>&#160;&#160;&#160;<a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)))</td>
   335         </tr>
   336       </table>
   337 </div><div class="memdoc">
   339 <p>Shorthand for removing data from the map with a C string key. </p>
   340 <dl class="params"><dt>Parameters</dt><dd>
   341   <table class="params">
   342     <tr><td class="paramname">map</td><td>the map </td></tr>
   343     <tr><td class="paramname">key</td><td>the key </td></tr>
   344   </table>
   345   </dd>
   346 </dl>
   347 <dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl>
   348 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa" title="Removes a key/value-pair from the map by using the key. ">ucx_map_remove()</a> </dd></dl>
   350 </div>
   351 </div>
   352 <a id="a940896c4aa1b13e54c55c04c3efc186b"></a>
   353 <h2 class="memtitle"><span class="permalink"><a href="#a940896c4aa1b13e54c55c04c3efc186b">&#9670;&nbsp;</a></span>UCX_MAP_FOREACH</h2>
   355 <div class="memitem">
   356 <div class="memproto">
   357       <table class="memname">
   358         <tr>
   359           <td class="memname">#define UCX_MAP_FOREACH</td>
   360           <td>(</td>
   361           <td class="paramtype">&#160;</td>
   362           <td class="paramname">key, </td>
   363         </tr>
   364         <tr>
   365           <td class="paramkey"></td>
   366           <td></td>
   367           <td class="paramtype">&#160;</td>
   368           <td class="paramname">value, </td>
   369         </tr>
   370         <tr>
   371           <td class="paramkey"></td>
   372           <td></td>
   373           <td class="paramtype">&#160;</td>
   374           <td class="paramname">iter&#160;</td>
   375         </tr>
   376         <tr>
   377           <td></td>
   378           <td>)</td>
   379           <td></td><td>&#160;&#160;&#160;for(<a class="el" href="structUcxKey.html">UcxKey</a> key;<a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a>(&amp;iter,&amp;key, (void**)&amp;value);)</td>
   380         </tr>
   381       </table>
   382 </div><div class="memdoc">
   384 <p>Loop statement for UCX maps. </p>
   385 <p>The <code>key</code> variable is implicitly defined, but the <code>value</code> variable must be already declared as type information cannot be inferred.</p>
   386 <dl class="params"><dt>Parameters</dt><dd>
   387   <table class="params">
   388     <tr><td class="paramname">key</td><td>the variable name for the key </td></tr>
   389     <tr><td class="paramname">value</td><td>the variable name for the value </td></tr>
   390     <tr><td class="paramname">iter</td><td>a <a class="el" href="structUcxMapIterator.html" title="Structure for an iterator over a UcxMap. ">UcxMapIterator</a> </td></tr>
   391   </table>
   392   </dd>
   393 </dl>
   394 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110" title="Creates an iterator for a map. ">ucx_map_iterator()</a> </dd></dl>
   396 </div>
   397 </div>
   398 <a id="aa1681bd2178553cd092fd24c4d681d3c"></a>
   399 <h2 class="memtitle"><span class="permalink"><a href="#aa1681bd2178553cd092fd24c4d681d3c">&#9670;&nbsp;</a></span>ucx_map_int_get</h2>
   401 <div class="memitem">
   402 <div class="memproto">
   403       <table class="memname">
   404         <tr>
   405           <td class="memname">#define ucx_map_int_get</td>
   406           <td>(</td>
   407           <td class="paramtype">&#160;</td>
   408           <td class="paramname">map, </td>
   409         </tr>
   410         <tr>
   411           <td class="paramkey"></td>
   412           <td></td>
   413           <td class="paramtype">&#160;</td>
   414           <td class="paramname">key&#160;</td>
   415         </tr>
   416         <tr>
   417           <td></td>
   418           <td>)</td>
   419           <td></td><td>&#160;&#160;&#160;<a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&amp;key, sizeof(int)))</td>
   420         </tr>
   421       </table>
   422 </div><div class="memdoc">
   424 <p>Shorthand for getting data from the map with an integer key. </p>
   425 <dl class="params"><dt>Parameters</dt><dd>
   426   <table class="params">
   427     <tr><td class="paramname">map</td><td>the map </td></tr>
   428     <tr><td class="paramname">key</td><td>the key </td></tr>
   429   </table>
   430   </dd>
   431 </dl>
   432 <dl class="section return"><dt>Returns</dt><dd>the value </dd></dl>
   433 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6" title="Retrieves a value by using a key. ">ucx_map_get()</a> </dd></dl>
   435 </div>
   436 </div>
   437 <a id="aaa30af79b4068c923895619e83f44367"></a>
   438 <h2 class="memtitle"><span class="permalink"><a href="#aaa30af79b4068c923895619e83f44367">&#9670;&nbsp;</a></span>ucx_map_int_put</h2>
   440 <div class="memitem">
   441 <div class="memproto">
   442       <table class="memname">
   443         <tr>
   444           <td class="memname">#define ucx_map_int_put</td>
   445           <td>(</td>
   446           <td class="paramtype">&#160;</td>
   447           <td class="paramname">map, </td>
   448         </tr>
   449         <tr>
   450           <td class="paramkey"></td>
   451           <td></td>
   452           <td class="paramtype">&#160;</td>
   453           <td class="paramname">key, </td>
   454         </tr>
   455         <tr>
   456           <td class="paramkey"></td>
   457           <td></td>
   458           <td class="paramtype">&#160;</td>
   459           <td class="paramname">value&#160;</td>
   460         </tr>
   461         <tr>
   462           <td></td>
   463           <td>)</td>
   464           <td></td><td>&#160;&#160;&#160;<a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&amp;key, sizeof(key)), (void*)value)</td>
   465         </tr>
   466       </table>
   467 </div><div class="memdoc">
   469 <p>Shorthand for putting data with an integer key into the map. </p>
   470 <dl class="params"><dt>Parameters</dt><dd>
   471   <table class="params">
   472     <tr><td class="paramname">map</td><td>the map </td></tr>
   473     <tr><td class="paramname">key</td><td>the key </td></tr>
   474     <tr><td class="paramname">value</td><td>the value </td></tr>
   475   </table>
   476   </dd>
   477 </dl>
   478 <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl>
   479 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498" title="Puts a key/value-pair into the map. ">ucx_map_put()</a> </dd></dl>
   481 </div>
   482 </div>
   483 <a id="aa767958b5468737755c09f7185b1770c"></a>
   484 <h2 class="memtitle"><span class="permalink"><a href="#aa767958b5468737755c09f7185b1770c">&#9670;&nbsp;</a></span>ucx_map_int_remove</h2>
   486 <div class="memitem">
   487 <div class="memproto">
   488       <table class="memname">
   489         <tr>
   490           <td class="memname">#define ucx_map_int_remove</td>
   491           <td>(</td>
   492           <td class="paramtype">&#160;</td>
   493           <td class="paramname">map, </td>
   494         </tr>
   495         <tr>
   496           <td class="paramkey"></td>
   497           <td></td>
   498           <td class="paramtype">&#160;</td>
   499           <td class="paramname">key&#160;</td>
   500         </tr>
   501         <tr>
   502           <td></td>
   503           <td>)</td>
   504           <td></td><td>&#160;&#160;&#160;<a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&amp;key, sizeof(key)))</td>
   505         </tr>
   506       </table>
   507 </div><div class="memdoc">
   509 <p>Shorthand for removing data from the map with an integer key. </p>
   510 <dl class="params"><dt>Parameters</dt><dd>
   511   <table class="params">
   512     <tr><td class="paramname">map</td><td>the map </td></tr>
   513     <tr><td class="paramname">key</td><td>the key </td></tr>
   514   </table>
   515   </dd>
   516 </dl>
   517 <dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl>
   518 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa" title="Removes a key/value-pair from the map by using the key. ">ucx_map_remove()</a> </dd></dl>
   520 </div>
   521 </div>
   522 <a id="a14d385f6b7f371f0507861cabd2eab4e"></a>
   523 <h2 class="memtitle"><span class="permalink"><a href="#a14d385f6b7f371f0507861cabd2eab4e">&#9670;&nbsp;</a></span>ucx_map_sstr_get</h2>
   525 <div class="memitem">
   526 <div class="memproto">
   527       <table class="memname">
   528         <tr>
   529           <td class="memname">#define ucx_map_sstr_get</td>
   530           <td>(</td>
   531           <td class="paramtype">&#160;</td>
   532           <td class="paramname">map, </td>
   533         </tr>
   534         <tr>
   535           <td class="paramkey"></td>
   536           <td></td>
   537           <td class="paramtype">&#160;</td>
   538           <td class="paramname">key&#160;</td>
   539         </tr>
   540         <tr>
   541           <td></td>
   542           <td>)</td>
   543           <td></td><td>&#160;&#160;&#160;<a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length))</td>
   544         </tr>
   545       </table>
   546 </div><div class="memdoc">
   548 <p>Shorthand for getting data from the map with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key. </p>
   549 <dl class="params"><dt>Parameters</dt><dd>
   550   <table class="params">
   551     <tr><td class="paramname">map</td><td>the map </td></tr>
   552     <tr><td class="paramname">key</td><td>the key </td></tr>
   553   </table>
   554   </dd>
   555 </dl>
   556 <dl class="section return"><dt>Returns</dt><dd>the value </dd></dl>
   557 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6" title="Retrieves a value by using a key. ">ucx_map_get()</a> </dd></dl>
   559 </div>
   560 </div>
   561 <a id="ac26a8615bfc8f47ee9eaceb47645f98e"></a>
   562 <h2 class="memtitle"><span class="permalink"><a href="#ac26a8615bfc8f47ee9eaceb47645f98e">&#9670;&nbsp;</a></span>ucx_map_sstr_put</h2>
   564 <div class="memitem">
   565 <div class="memproto">
   566       <table class="memname">
   567         <tr>
   568           <td class="memname">#define ucx_map_sstr_put</td>
   569           <td>(</td>
   570           <td class="paramtype">&#160;</td>
   571           <td class="paramname">map, </td>
   572         </tr>
   573         <tr>
   574           <td class="paramkey"></td>
   575           <td></td>
   576           <td class="paramtype">&#160;</td>
   577           <td class="paramname">key, </td>
   578         </tr>
   579         <tr>
   580           <td class="paramkey"></td>
   581           <td></td>
   582           <td class="paramtype">&#160;</td>
   583           <td class="paramname">value&#160;</td>
   584         </tr>
   585         <tr>
   586           <td></td>
   587           <td>)</td>
   588           <td></td><td>&#160;&#160;&#160;<a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length), (void*)value)</td>
   589         </tr>
   590       </table>
   591 </div><div class="memdoc">
   593 <p>Shorthand for putting data with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key into the map. </p>
   594 <dl class="params"><dt>Parameters</dt><dd>
   595   <table class="params">
   596     <tr><td class="paramname">map</td><td>the map </td></tr>
   597     <tr><td class="paramname">key</td><td>the key </td></tr>
   598     <tr><td class="paramname">value</td><td>the value </td></tr>
   599   </table>
   600   </dd>
   601 </dl>
   602 <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl>
   603 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498" title="Puts a key/value-pair into the map. ">ucx_map_put()</a> </dd></dl>
   605 </div>
   606 </div>
   607 <a id="a48700ea86fadb9ea54d13010f9124df2"></a>
   608 <h2 class="memtitle"><span class="permalink"><a href="#a48700ea86fadb9ea54d13010f9124df2">&#9670;&nbsp;</a></span>ucx_map_sstr_remove</h2>
   610 <div class="memitem">
   611 <div class="memproto">
   612       <table class="memname">
   613         <tr>
   614           <td class="memname">#define ucx_map_sstr_remove</td>
   615           <td>(</td>
   616           <td class="paramtype">&#160;</td>
   617           <td class="paramname">map, </td>
   618         </tr>
   619         <tr>
   620           <td class="paramkey"></td>
   621           <td></td>
   622           <td class="paramtype">&#160;</td>
   623           <td class="paramname">key&#160;</td>
   624         </tr>
   625         <tr>
   626           <td></td>
   627           <td>)</td>
   628           <td></td><td>&#160;&#160;&#160;<a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length))</td>
   629         </tr>
   630       </table>
   631 </div><div class="memdoc">
   633 <p>Shorthand for removing data from the map with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key. </p>
   634 <dl class="params"><dt>Parameters</dt><dd>
   635   <table class="params">
   636     <tr><td class="paramname">map</td><td>the map </td></tr>
   637     <tr><td class="paramname">key</td><td>the key </td></tr>
   638   </table>
   639   </dd>
   640 </dl>
   641 <dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl>
   642 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa" title="Removes a key/value-pair from the map by using the key. ">ucx_map_remove()</a> </dd></dl>
   644 </div>
   645 </div>
   646 <h2 class="groupheader">Typedef Documentation</h2>
   647 <a id="ad63828bb23123fc01a5315a2bac3b142"></a>
   648 <h2 class="memtitle"><span class="permalink"><a href="#ad63828bb23123fc01a5315a2bac3b142">&#9670;&nbsp;</a></span>UcxKey</h2>
   650 <div class="memitem">
   651 <div class="memproto">
   652       <table class="memname">
   653         <tr>
   654           <td class="memname">typedef struct <a class="el" href="structUcxKey.html">UcxKey</a> <a class="el" href="structUcxKey.html">UcxKey</a></td>
   655         </tr>
   656       </table>
   657 </div><div class="memdoc">
   659 <p>Type for a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p>
   660 <dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxKey.html" title="Structure to publicly denote a key of a UcxMap. ">UcxKey</a> </dd></dl>
   662 </div>
   663 </div>
   664 <a id="a18e21948725b2da68c35da587a722033"></a>
   665 <h2 class="memtitle"><span class="permalink"><a href="#a18e21948725b2da68c35da587a722033">&#9670;&nbsp;</a></span>UcxMap</h2>
   667 <div class="memitem">
   668 <div class="memproto">
   669       <table class="memname">
   670         <tr>
   671           <td class="memname">typedef struct <a class="el" href="structUcxMap.html">UcxMap</a> <a class="el" href="structUcxMap.html">UcxMap</a></td>
   672         </tr>
   673       </table>
   674 </div><div class="memdoc">
   676 <p>Type for the UCX map. </p>
   677 <dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a> </dd></dl>
   679 </div>
   680 </div>
   681 <a id="ad7d7a910a32113eb93eae11c3dc97b4b"></a>
   682 <h2 class="memtitle"><span class="permalink"><a href="#ad7d7a910a32113eb93eae11c3dc97b4b">&#9670;&nbsp;</a></span>UcxMapElement</h2>
   684 <div class="memitem">
   685 <div class="memproto">
   686       <table class="memname">
   687         <tr>
   688           <td class="memname">typedef struct <a class="el" href="structUcxMapElement.html">UcxMapElement</a> <a class="el" href="structUcxMapElement.html">UcxMapElement</a></td>
   689         </tr>
   690       </table>
   691 </div><div class="memdoc">
   693 <p>Type for an element of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p>
   694 <dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxMapElement.html" title="Structure for an element of a UcxMap. ">UcxMapElement</a> </dd></dl>
   696 </div>
   697 </div>
   698 <a id="ae36aff5f645948c54f51578b11fd87fb"></a>
   699 <h2 class="memtitle"><span class="permalink"><a href="#ae36aff5f645948c54f51578b11fd87fb">&#9670;&nbsp;</a></span>UcxMapIterator</h2>
   701 <div class="memitem">
   702 <div class="memproto">
   703       <table class="memname">
   704         <tr>
   705           <td class="memname">typedef struct <a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> <a class="el" href="structUcxMapIterator.html">UcxMapIterator</a></td>
   706         </tr>
   707       </table>
   708 </div><div class="memdoc">
   710 <p>Type for an iterator over a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p>
   711 <dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxMapIterator.html" title="Structure for an iterator over a UcxMap. ">UcxMapIterator</a> </dd></dl>
   713 </div>
   714 </div>
   715 <h2 class="groupheader">Function Documentation</h2>
   716 <a id="aea3be97254c05595d986ef6a9faae87b"></a>
   717 <h2 class="memtitle"><span class="permalink"><a href="#aea3be97254c05595d986ef6a9faae87b">&#9670;&nbsp;</a></span>ucx_hash()</h2>
   719 <div class="memitem">
   720 <div class="memproto">
   721       <table class="memname">
   722         <tr>
   723           <td class="memname">int ucx_hash </td>
   724           <td>(</td>
   725           <td class="paramtype">const char *&#160;</td>
   726           <td class="paramname"><em>data</em>, </td>
   727         </tr>
   728         <tr>
   729           <td class="paramkey"></td>
   730           <td></td>
   731           <td class="paramtype">size_t&#160;</td>
   732           <td class="paramname"><em>len</em>&#160;</td>
   733         </tr>
   734         <tr>
   735           <td></td>
   736           <td>)</td>
   737           <td></td><td></td>
   738         </tr>
   739       </table>
   740 </div><div class="memdoc">
   742 <p>Computes a murmur hash-2. </p>
   743 <dl class="params"><dt>Parameters</dt><dd>
   744   <table class="params">
   745     <tr><td class="paramname">data</td><td>the data to hash </td></tr>
   746     <tr><td class="paramname">len</td><td>the length of the data </td></tr>
   747   </table>
   748   </dd>
   749 </dl>
   750 <dl class="section return"><dt>Returns</dt><dd>the murmur hash-2 of the data </dd></dl>
   752 </div>
   753 </div>
   754 <a id="a3e540bb46b8ee19789aed63fd8919200"></a>
   755 <h2 class="memtitle"><span class="permalink"><a href="#a3e540bb46b8ee19789aed63fd8919200">&#9670;&nbsp;</a></span>ucx_key()</h2>
   757 <div class="memitem">
   758 <div class="memproto">
   759       <table class="memname">
   760         <tr>
   761           <td class="memname"><a class="el" href="structUcxKey.html">UcxKey</a> ucx_key </td>
   762           <td>(</td>
   763           <td class="paramtype">const void *&#160;</td>
   764           <td class="paramname"><em>data</em>, </td>
   765         </tr>
   766         <tr>
   767           <td class="paramkey"></td>
   768           <td></td>
   769           <td class="paramtype">size_t&#160;</td>
   770           <td class="paramname"><em>len</em>&#160;</td>
   771         </tr>
   772         <tr>
   773           <td></td>
   774           <td>)</td>
   775           <td></td><td></td>
   776         </tr>
   777       </table>
   778 </div><div class="memdoc">
   780 <p>Creates a <a class="el" href="structUcxKey.html" title="Structure to publicly denote a key of a UcxMap. ">UcxKey</a> based on the given data. </p>
   781 <p>This function implicitly computes the hash.</p>
   782 <dl class="params"><dt>Parameters</dt><dd>
   783   <table class="params">
   784     <tr><td class="paramname">data</td><td>the data for the key </td></tr>
   785     <tr><td class="paramname">len</td><td>the length of the data </td></tr>
   786   </table>
   787   </dd>
   788 </dl>
   789 <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structUcxKey.html" title="Structure to publicly denote a key of a UcxMap. ">UcxKey</a> with implicitly computed hash </dd></dl>
   790 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#aea3be97254c05595d986ef6a9faae87b" title="Computes a murmur hash-2. ">ucx_hash()</a> </dd></dl>
   792 </div>
   793 </div>
   794 <a id="a285e90e40681c6d9631c935dda0967f2"></a>
   795 <h2 class="memtitle"><span class="permalink"><a href="#a285e90e40681c6d9631c935dda0967f2">&#9670;&nbsp;</a></span>ucx_map_clear()</h2>
   797 <div class="memitem">
   798 <div class="memproto">
   799       <table class="memname">
   800         <tr>
   801           <td class="memname">void ucx_map_clear </td>
   802           <td>(</td>
   803           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
   804           <td class="paramname"><em>map</em></td><td>)</td>
   805           <td></td>
   806         </tr>
   807       </table>
   808 </div><div class="memdoc">
   810 <p>Clears a hash map. </p>
   811 <p><b>Note:</b> the contents are <b>not</b> freed, use <a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618" title="Frees the contents of a hash map. ">ucx_map_free_content()</a> before calling this function to achieve that.</p>
   812 <dl class="params"><dt>Parameters</dt><dd>
   813   <table class="params">
   814     <tr><td class="paramname">map</td><td>the map to be cleared </td></tr>
   815   </table>
   816   </dd>
   817 </dl>
   818 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618" title="Frees the contents of a hash map. ">ucx_map_free_content()</a> </dd></dl>
   820 </div>
   821 </div>
   822 <a id="a62c6c30cbb0d824ba710f5030ff9a4e4"></a>
   823 <h2 class="memtitle"><span class="permalink"><a href="#a62c6c30cbb0d824ba710f5030ff9a4e4">&#9670;&nbsp;</a></span>ucx_map_clone()</h2>
   825 <div class="memitem">
   826 <div class="memproto">
   827       <table class="memname">
   828         <tr>
   829           <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_clone </td>
   830           <td>(</td>
   831           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const *&#160;</td>
   832           <td class="paramname"><em>map</em>, </td>
   833         </tr>
   834         <tr>
   835           <td class="paramkey"></td>
   836           <td></td>
   837           <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
   838           <td class="paramname"><em>fnc</em>, </td>
   839         </tr>
   840         <tr>
   841           <td class="paramkey"></td>
   842           <td></td>
   843           <td class="paramtype">void *&#160;</td>
   844           <td class="paramname"><em>data</em>&#160;</td>
   845         </tr>
   846         <tr>
   847           <td></td>
   848           <td>)</td>
   849           <td></td><td></td>
   850         </tr>
   851       </table>
   852 </div><div class="memdoc">
   854 <p>Clones the map and rehashes if necessary. </p>
   855 <p><b>Note:</b> In contrast to <a class="el" href="map_8h.html#a174bce9fad554dd92b8da354e0d32512" title="Increases size of the hash map, if necessary. ">ucx_map_rehash()</a> the load factor is irrelevant. This function <em>always</em> ensures a new <a class="el" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838" title="The size of the map is the length of the element list array. ">UcxMap.size</a> of at least 2.5*UcxMap.count.</p>
   856 <dl class="params"><dt>Parameters</dt><dd>
   857   <table class="params">
   858     <tr><td class="paramname">map</td><td>the map to clone </td></tr>
   859     <tr><td class="paramname">fnc</td><td>the copy function to use or <code>NULL</code> if the new and the old map shall share the data pointers </td></tr>
   860     <tr><td class="paramname">data</td><td>additional data for the copy function </td></tr>
   861   </table>
   862   </dd>
   863 </dl>
   864 <dl class="section return"><dt>Returns</dt><dd>the cloned map </dd></dl>
   865 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425" title="Copies contents from a map to another map using a copy function. ">ucx_map_copy()</a> </dd></dl>
   867 </div>
   868 </div>
   869 <a id="a9aea9103703d5c168420bb6bf85549ea"></a>
   870 <h2 class="memtitle"><span class="permalink"><a href="#a9aea9103703d5c168420bb6bf85549ea">&#9670;&nbsp;</a></span>ucx_map_clone_a()</h2>
   872 <div class="memitem">
   873 <div class="memproto">
   874       <table class="memname">
   875         <tr>
   876           <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_clone_a </td>
   877           <td>(</td>
   878           <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
   879           <td class="paramname"><em>allocator</em>, </td>
   880         </tr>
   881         <tr>
   882           <td class="paramkey"></td>
   883           <td></td>
   884           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const *&#160;</td>
   885           <td class="paramname"><em>map</em>, </td>
   886         </tr>
   887         <tr>
   888           <td class="paramkey"></td>
   889           <td></td>
   890           <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
   891           <td class="paramname"><em>fnc</em>, </td>
   892         </tr>
   893         <tr>
   894           <td class="paramkey"></td>
   895           <td></td>
   896           <td class="paramtype">void *&#160;</td>
   897           <td class="paramname"><em>data</em>&#160;</td>
   898         </tr>
   899         <tr>
   900           <td></td>
   901           <td>)</td>
   902           <td></td><td></td>
   903         </tr>
   904       </table>
   905 </div><div class="memdoc">
   907 <p>Clones the map and rehashes if necessary. </p>
   908 <p><b>Note:</b> In contrast to <a class="el" href="map_8h.html#a174bce9fad554dd92b8da354e0d32512" title="Increases size of the hash map, if necessary. ">ucx_map_rehash()</a> the load factor is irrelevant. This function <em>always</em> ensures a new <a class="el" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838" title="The size of the map is the length of the element list array. ">UcxMap.size</a> of at least 2.5*UcxMap.count.</p>
   909 <dl class="params"><dt>Parameters</dt><dd>
   910   <table class="params">
   911     <tr><td class="paramname">allocator</td><td>the allocator to use for the cloned map </td></tr>
   912     <tr><td class="paramname">map</td><td>the map to clone </td></tr>
   913     <tr><td class="paramname">fnc</td><td>the copy function to use or <code>NULL</code> if the new and the old map shall share the data pointers </td></tr>
   914     <tr><td class="paramname">data</td><td>additional data for the copy function </td></tr>
   915   </table>
   916   </dd>
   917 </dl>
   918 <dl class="section return"><dt>Returns</dt><dd>the cloned map </dd></dl>
   919 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425" title="Copies contents from a map to another map using a copy function. ">ucx_map_copy()</a> </dd></dl>
   921 </div>
   922 </div>
   923 <a id="adfeb2d61003fd2896bcfdc9a57f36425"></a>
   924 <h2 class="memtitle"><span class="permalink"><a href="#adfeb2d61003fd2896bcfdc9a57f36425">&#9670;&nbsp;</a></span>ucx_map_copy()</h2>
   926 <div class="memitem">
   927 <div class="memproto">
   928       <table class="memname">
   929         <tr>
   930           <td class="memname">int ucx_map_copy </td>
   931           <td>(</td>
   932           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const *&#160;</td>
   933           <td class="paramname"><em>from</em>, </td>
   934         </tr>
   935         <tr>
   936           <td class="paramkey"></td>
   937           <td></td>
   938           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
   939           <td class="paramname"><em>to</em>, </td>
   940         </tr>
   941         <tr>
   942           <td class="paramkey"></td>
   943           <td></td>
   944           <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
   945           <td class="paramname"><em>fnc</em>, </td>
   946         </tr>
   947         <tr>
   948           <td class="paramkey"></td>
   949           <td></td>
   950           <td class="paramtype">void *&#160;</td>
   951           <td class="paramname"><em>data</em>&#160;</td>
   952         </tr>
   953         <tr>
   954           <td></td>
   955           <td>)</td>
   956           <td></td><td></td>
   957         </tr>
   958       </table>
   959 </div><div class="memdoc">
   961 <p>Copies contents from a map to another map using a copy function. </p>
   962 <p><b>Note:</b> The destination map does not need to be empty. However, if it contains data with keys that are also present in the source map, the contents are overwritten.</p>
   963 <dl class="params"><dt>Parameters</dt><dd>
   964   <table class="params">
   965     <tr><td class="paramname">from</td><td>the source map </td></tr>
   966     <tr><td class="paramname">to</td><td>the destination map </td></tr>
   967     <tr><td class="paramname">fnc</td><td>the copy function or <code>NULL</code> if the pointer address shall be copied </td></tr>
   968     <tr><td class="paramname">data</td><td>additional data for the copy function </td></tr>
   969   </table>
   970   </dd>
   971 </dl>
   972 <dl class="section return"><dt>Returns</dt><dd>0 on success or a non-zero value on memory allocation errors </dd></dl>
   974 </div>
   975 </div>
   976 <a id="a774fcff87d1e58b6c5af77dd19a8c3dc"></a>
   977 <h2 class="memtitle"><span class="permalink"><a href="#a774fcff87d1e58b6c5af77dd19a8c3dc">&#9670;&nbsp;</a></span>ucx_map_difference()</h2>
   979 <div class="memitem">
   980 <div class="memproto">
   981       <table class="memname">
   982         <tr>
   983           <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_difference </td>
   984           <td>(</td>
   985           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
   986           <td class="paramname"><em>first</em>, </td>
   987         </tr>
   988         <tr>
   989           <td class="paramkey"></td>
   990           <td></td>
   991           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
   992           <td class="paramname"><em>second</em>, </td>
   993         </tr>
   994         <tr>
   995           <td class="paramkey"></td>
   996           <td></td>
   997           <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
   998           <td class="paramname"><em>cpfnc</em>, </td>
   999         </tr>
  1000         <tr>
  1001           <td class="paramkey"></td>
  1002           <td></td>
  1003           <td class="paramtype">void *&#160;</td>
  1004           <td class="paramname"><em>cpdata</em>&#160;</td>
  1005         </tr>
  1006         <tr>
  1007           <td></td>
  1008           <td>)</td>
  1009           <td></td><td></td>
  1010         </tr>
  1011       </table>
  1012 </div><div class="memdoc">
  1014 <p>Returns the difference of two maps. </p>
  1015 <p>The difference contains a copy of all elements of the first map for which the corresponding keys cannot be found in the second map.</p>
  1016 <dl class="params"><dt>Parameters</dt><dd>
  1017   <table class="params">
  1018     <tr><td class="paramname">first</td><td>the first source map </td></tr>
  1019     <tr><td class="paramname">second</td><td>the second source map </td></tr>
  1020     <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
  1021     <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
  1022   </table>
  1023   </dd>
  1024 </dl>
  1025 <dl class="section return"><dt>Returns</dt><dd>a new list containing the difference </dd></dl>
  1027 </div>
  1028 </div>
  1029 <a id="ad0ba103494247d798ac3037c50fc8831"></a>
  1030 <h2 class="memtitle"><span class="permalink"><a href="#ad0ba103494247d798ac3037c50fc8831">&#9670;&nbsp;</a></span>ucx_map_difference_a()</h2>
  1032 <div class="memitem">
  1033 <div class="memproto">
  1034       <table class="memname">
  1035         <tr>
  1036           <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_difference_a </td>
  1037           <td>(</td>
  1038           <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
  1039           <td class="paramname"><em>allocator</em>, </td>
  1040         </tr>
  1041         <tr>
  1042           <td class="paramkey"></td>
  1043           <td></td>
  1044           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1045           <td class="paramname"><em>first</em>, </td>
  1046         </tr>
  1047         <tr>
  1048           <td class="paramkey"></td>
  1049           <td></td>
  1050           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1051           <td class="paramname"><em>second</em>, </td>
  1052         </tr>
  1053         <tr>
  1054           <td class="paramkey"></td>
  1055           <td></td>
  1056           <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
  1057           <td class="paramname"><em>cpfnc</em>, </td>
  1058         </tr>
  1059         <tr>
  1060           <td class="paramkey"></td>
  1061           <td></td>
  1062           <td class="paramtype">void *&#160;</td>
  1063           <td class="paramname"><em>cpdata</em>&#160;</td>
  1064         </tr>
  1065         <tr>
  1066           <td></td>
  1067           <td>)</td>
  1068           <td></td><td></td>
  1069         </tr>
  1070       </table>
  1071 </div><div class="memdoc">
  1073 <p>Returns the difference of two maps. </p>
  1074 <p>The difference contains a copy of all elements of the first map for which the corresponding keys cannot be found in the second map.</p>
  1075 <dl class="params"><dt>Parameters</dt><dd>
  1076   <table class="params">
  1077     <tr><td class="paramname">allocator</td><td>the allocator that shall be used by the new map </td></tr>
  1078     <tr><td class="paramname">first</td><td>the first source map </td></tr>
  1079     <tr><td class="paramname">second</td><td>the second source map </td></tr>
  1080     <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
  1081     <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
  1082   </table>
  1083   </dd>
  1084 </dl>
  1085 <dl class="section return"><dt>Returns</dt><dd>a new list containing the difference </dd></dl>
  1087 </div>
  1088 </div>
  1089 <a id="abe3d9688e4224bf7bb962abf25ff8c2e"></a>
  1090 <h2 class="memtitle"><span class="permalink"><a href="#abe3d9688e4224bf7bb962abf25ff8c2e">&#9670;&nbsp;</a></span>ucx_map_free()</h2>
  1092 <div class="memitem">
  1093 <div class="memproto">
  1094       <table class="memname">
  1095         <tr>
  1096           <td class="memname">void ucx_map_free </td>
  1097           <td>(</td>
  1098           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1099           <td class="paramname"><em>map</em></td><td>)</td>
  1100           <td></td>
  1101         </tr>
  1102       </table>
  1103 </div><div class="memdoc">
  1105 <p>Frees a hash map. </p>
  1106 <p><b>Note:</b> the contents are <b>not</b> freed, use <a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618" title="Frees the contents of a hash map. ">ucx_map_free_content()</a> before calling this function to achieve that.</p>
  1107 <dl class="params"><dt>Parameters</dt><dd>
  1108   <table class="params">
  1109     <tr><td class="paramname">map</td><td>the map to be freed </td></tr>
  1110   </table>
  1111   </dd>
  1112 </dl>
  1113 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618" title="Frees the contents of a hash map. ">ucx_map_free_content()</a> </dd></dl>
  1115 </div>
  1116 </div>
  1117 <a id="a750f3d9d83e2f3788a14c17a9d160618"></a>
  1118 <h2 class="memtitle"><span class="permalink"><a href="#a750f3d9d83e2f3788a14c17a9d160618">&#9670;&nbsp;</a></span>ucx_map_free_content()</h2>
  1120 <div class="memitem">
  1121 <div class="memproto">
  1122       <table class="memname">
  1123         <tr>
  1124           <td class="memname">void ucx_map_free_content </td>
  1125           <td>(</td>
  1126           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1127           <td class="paramname"><em>map</em>, </td>
  1128         </tr>
  1129         <tr>
  1130           <td class="paramkey"></td>
  1131           <td></td>
  1132           <td class="paramtype"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a>&#160;</td>
  1133           <td class="paramname"><em>destr</em>&#160;</td>
  1134         </tr>
  1135         <tr>
  1136           <td></td>
  1137           <td>)</td>
  1138           <td></td><td></td>
  1139         </tr>
  1140       </table>
  1141 </div><div class="memdoc">
  1143 <p>Frees the contents of a hash map. </p>
  1144 <p>This is a convenience function that iterates over the map and passes all values to the specified destructor function.</p>
  1145 <p>If no destructor is specified (<code>NULL</code>), the free() function of the map's own allocator is used.</p>
  1146 <p>You must ensure, that it is valid to pass each value in the map to the same destructor function.</p>
  1147 <p>You should free or clear the map afterwards, as the contents will be invalid.</p>
  1148 <dl class="params"><dt>Parameters</dt><dd>
  1149   <table class="params">
  1150     <tr><td class="paramname">map</td><td>for which the contents shall be freed </td></tr>
  1151     <tr><td class="paramname">destr</td><td>optional pointer to a destructor function </td></tr>
  1152   </table>
  1153   </dd>
  1154 </dl>
  1155 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e" title="Frees a hash map. ">ucx_map_free()</a> </dd>
  1156 <dd>
  1157 <a class="el" href="map_8h.html#a285e90e40681c6d9631c935dda0967f2" title="Clears a hash map. ">ucx_map_clear()</a> </dd></dl>
  1159 </div>
  1160 </div>
  1161 <a id="ab61192c5af2e06ecb9ad73880d1c95a6"></a>
  1162 <h2 class="memtitle"><span class="permalink"><a href="#ab61192c5af2e06ecb9ad73880d1c95a6">&#9670;&nbsp;</a></span>ucx_map_get()</h2>
  1164 <div class="memitem">
  1165 <div class="memproto">
  1166       <table class="memname">
  1167         <tr>
  1168           <td class="memname">void* ucx_map_get </td>
  1169           <td>(</td>
  1170           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const *&#160;</td>
  1171           <td class="paramname"><em>map</em>, </td>
  1172         </tr>
  1173         <tr>
  1174           <td class="paramkey"></td>
  1175           <td></td>
  1176           <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a>&#160;</td>
  1177           <td class="paramname"><em>key</em>&#160;</td>
  1178         </tr>
  1179         <tr>
  1180           <td></td>
  1181           <td>)</td>
  1182           <td></td><td></td>
  1183         </tr>
  1184       </table>
  1185 </div><div class="memdoc">
  1187 <p>Retrieves a value by using a key. </p>
  1188 <dl class="params"><dt>Parameters</dt><dd>
  1189   <table class="params">
  1190     <tr><td class="paramname">map</td><td>the map </td></tr>
  1191     <tr><td class="paramname">key</td><td>the key </td></tr>
  1192   </table>
  1193   </dd>
  1194 </dl>
  1195 <dl class="section return"><dt>Returns</dt><dd>the value </dd></dl>
  1197 </div>
  1198 </div>
  1199 <a id="aa594d7a5afebc3bed6bb265348cf6b0d"></a>
  1200 <h2 class="memtitle"><span class="permalink"><a href="#aa594d7a5afebc3bed6bb265348cf6b0d">&#9670;&nbsp;</a></span>ucx_map_intersection()</h2>
  1202 <div class="memitem">
  1203 <div class="memproto">
  1204       <table class="memname">
  1205         <tr>
  1206           <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_intersection </td>
  1207           <td>(</td>
  1208           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1209           <td class="paramname"><em>first</em>, </td>
  1210         </tr>
  1211         <tr>
  1212           <td class="paramkey"></td>
  1213           <td></td>
  1214           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1215           <td class="paramname"><em>second</em>, </td>
  1216         </tr>
  1217         <tr>
  1218           <td class="paramkey"></td>
  1219           <td></td>
  1220           <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
  1221           <td class="paramname"><em>cpfnc</em>, </td>
  1222         </tr>
  1223         <tr>
  1224           <td class="paramkey"></td>
  1225           <td></td>
  1226           <td class="paramtype">void *&#160;</td>
  1227           <td class="paramname"><em>cpdata</em>&#160;</td>
  1228         </tr>
  1229         <tr>
  1230           <td></td>
  1231           <td>)</td>
  1232           <td></td><td></td>
  1233         </tr>
  1234       </table>
  1235 </div><div class="memdoc">
  1237 <p>Returns the intersection of two maps. </p>
  1238 <p>The intersection is defined as a copy of the first map with every element removed that has no valid key in the second map.</p>
  1239 <dl class="params"><dt>Parameters</dt><dd>
  1240   <table class="params">
  1241     <tr><td class="paramname">first</td><td>the first source map </td></tr>
  1242     <tr><td class="paramname">second</td><td>the second source map </td></tr>
  1243     <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
  1244     <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
  1245   </table>
  1246   </dd>
  1247 </dl>
  1248 <dl class="section return"><dt>Returns</dt><dd>a new map containing the intersection </dd></dl>
  1250 </div>
  1251 </div>
  1252 <a id="a169e0470a20484dd76425fdf77e3651e"></a>
  1253 <h2 class="memtitle"><span class="permalink"><a href="#a169e0470a20484dd76425fdf77e3651e">&#9670;&nbsp;</a></span>ucx_map_intersection_a()</h2>
  1255 <div class="memitem">
  1256 <div class="memproto">
  1257       <table class="memname">
  1258         <tr>
  1259           <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_intersection_a </td>
  1260           <td>(</td>
  1261           <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
  1262           <td class="paramname"><em>allocator</em>, </td>
  1263         </tr>
  1264         <tr>
  1265           <td class="paramkey"></td>
  1266           <td></td>
  1267           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1268           <td class="paramname"><em>first</em>, </td>
  1269         </tr>
  1270         <tr>
  1271           <td class="paramkey"></td>
  1272           <td></td>
  1273           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1274           <td class="paramname"><em>second</em>, </td>
  1275         </tr>
  1276         <tr>
  1277           <td class="paramkey"></td>
  1278           <td></td>
  1279           <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
  1280           <td class="paramname"><em>cpfnc</em>, </td>
  1281         </tr>
  1282         <tr>
  1283           <td class="paramkey"></td>
  1284           <td></td>
  1285           <td class="paramtype">void *&#160;</td>
  1286           <td class="paramname"><em>cpdata</em>&#160;</td>
  1287         </tr>
  1288         <tr>
  1289           <td></td>
  1290           <td>)</td>
  1291           <td></td><td></td>
  1292         </tr>
  1293       </table>
  1294 </div><div class="memdoc">
  1296 <p>Returns the intersection of two maps. </p>
  1297 <p>The intersection is defined as a copy of the first map with every element removed that has no valid key in the second map.</p>
  1298 <dl class="params"><dt>Parameters</dt><dd>
  1299   <table class="params">
  1300     <tr><td class="paramname">allocator</td><td>the allocator that shall be used by the new map </td></tr>
  1301     <tr><td class="paramname">first</td><td>the first source map </td></tr>
  1302     <tr><td class="paramname">second</td><td>the second source map </td></tr>
  1303     <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
  1304     <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
  1305   </table>
  1306   </dd>
  1307 </dl>
  1308 <dl class="section return"><dt>Returns</dt><dd>a new map containing the intersection </dd></dl>
  1310 </div>
  1311 </div>
  1312 <a id="aceb8675abf44860b4bbc301bbada5b91"></a>
  1313 <h2 class="memtitle"><span class="permalink"><a href="#aceb8675abf44860b4bbc301bbada5b91">&#9670;&nbsp;</a></span>ucx_map_iter_next()</h2>
  1315 <div class="memitem">
  1316 <div class="memproto">
  1317       <table class="memname">
  1318         <tr>
  1319           <td class="memname">int ucx_map_iter_next </td>
  1320           <td>(</td>
  1321           <td class="paramtype"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> *&#160;</td>
  1322           <td class="paramname"><em>iterator</em>, </td>
  1323         </tr>
  1324         <tr>
  1325           <td class="paramkey"></td>
  1326           <td></td>
  1327           <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a> *&#160;</td>
  1328           <td class="paramname"><em>key</em>, </td>
  1329         </tr>
  1330         <tr>
  1331           <td class="paramkey"></td>
  1332           <td></td>
  1333           <td class="paramtype">void **&#160;</td>
  1334           <td class="paramname"><em>value</em>&#160;</td>
  1335         </tr>
  1336         <tr>
  1337           <td></td>
  1338           <td>)</td>
  1339           <td></td><td></td>
  1340         </tr>
  1341       </table>
  1342 </div><div class="memdoc">
  1344 <p>Proceeds to the next element of the map (if any). </p>
  1345 <p>Subsequent calls on the same iterator proceed to the next element and store the key/value-pair into the memory specified as arguments of this function.</p>
  1346 <p>If no further elements are found, this function returns zero and leaves the last found key/value-pair in memory.</p>
  1347 <dl class="params"><dt>Parameters</dt><dd>
  1348   <table class="params">
  1349     <tr><td class="paramname">iterator</td><td>the iterator to use </td></tr>
  1350     <tr><td class="paramname">key</td><td>a pointer to the memory where to store the key </td></tr>
  1351     <tr><td class="paramname">value</td><td>a pointer to the memory where to store the value </td></tr>
  1352   </table>
  1353   </dd>
  1354 </dl>
  1355 <dl class="section return"><dt>Returns</dt><dd>1, if another element was found, 0 if all elements has been processed </dd></dl>
  1356 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110" title="Creates an iterator for a map. ">ucx_map_iterator()</a> </dd></dl>
  1358 </div>
  1359 </div>
  1360 <a id="a9150e9c64fdf4dfcc2cad106b91aa110"></a>
  1361 <h2 class="memtitle"><span class="permalink"><a href="#a9150e9c64fdf4dfcc2cad106b91aa110">&#9670;&nbsp;</a></span>ucx_map_iterator()</h2>
  1363 <div class="memitem">
  1364 <div class="memproto">
  1365       <table class="memname">
  1366         <tr>
  1367           <td class="memname"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> ucx_map_iterator </td>
  1368           <td>(</td>
  1369           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const *&#160;</td>
  1370           <td class="paramname"><em>map</em></td><td>)</td>
  1371           <td></td>
  1372         </tr>
  1373       </table>
  1374 </div><div class="memdoc">
  1376 <p>Creates an iterator for a map. </p>
  1377 <p><b>Note:</b> A <a class="el" href="structUcxMapIterator.html" title="Structure for an iterator over a UcxMap. ">UcxMapIterator</a> iterates over all elements in all element lists successively. Therefore the order highly depends on the key hashes and may vary under different map sizes. So generally you may <b>NOT</b> rely on the iteration order.</p>
  1378 <p><b>Note:</b> The iterator is <b>NOT</b> initialized. You need to call <a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91" title="Proceeds to the next element of the map (if any). ">ucx_map_iter_next()</a> at least once before accessing any information. However, it is not recommended to access the fields of a <a class="el" href="structUcxMapIterator.html" title="Structure for an iterator over a UcxMap. ">UcxMapIterator</a> directly.</p>
  1379 <dl class="params"><dt>Parameters</dt><dd>
  1380   <table class="params">
  1381     <tr><td class="paramname">map</td><td>the map to create the iterator for </td></tr>
  1382   </table>
  1383   </dd>
  1384 </dl>
  1385 <dl class="section return"><dt>Returns</dt><dd>an iterator initialized on the first element of the first element list </dd></dl>
  1386 <dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91" title="Proceeds to the next element of the map (if any). ">ucx_map_iter_next()</a> </dd></dl>
  1388 </div>
  1389 </div>
  1390 <a id="a79f31de8b93814493759dbc8b940cf0c"></a>
  1391 <h2 class="memtitle"><span class="permalink"><a href="#a79f31de8b93814493759dbc8b940cf0c">&#9670;&nbsp;</a></span>ucx_map_new()</h2>
  1393 <div class="memitem">
  1394 <div class="memproto">
  1395       <table class="memname">
  1396         <tr>
  1397           <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_new </td>
  1398           <td>(</td>
  1399           <td class="paramtype">size_t&#160;</td>
  1400           <td class="paramname"><em>size</em></td><td>)</td>
  1401           <td></td>
  1402         </tr>
  1403       </table>
  1404 </div><div class="memdoc">
  1406 <p>Creates a new hash map with the specified size. </p>
  1407 <dl class="params"><dt>Parameters</dt><dd>
  1408   <table class="params">
  1409     <tr><td class="paramname">size</td><td>the size of the hash map </td></tr>
  1410   </table>
  1411   </dd>
  1412 </dl>
  1413 <dl class="section return"><dt>Returns</dt><dd>a pointer to the new hash map </dd></dl>
  1415 </div>
  1416 </div>
  1417 <a id="aed508a94c66cc15372503c64b70eb03e"></a>
  1418 <h2 class="memtitle"><span class="permalink"><a href="#aed508a94c66cc15372503c64b70eb03e">&#9670;&nbsp;</a></span>ucx_map_new_a()</h2>
  1420 <div class="memitem">
  1421 <div class="memproto">
  1422       <table class="memname">
  1423         <tr>
  1424           <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_new_a </td>
  1425           <td>(</td>
  1426           <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
  1427           <td class="paramname"><em>allocator</em>, </td>
  1428         </tr>
  1429         <tr>
  1430           <td class="paramkey"></td>
  1431           <td></td>
  1432           <td class="paramtype">size_t&#160;</td>
  1433           <td class="paramname"><em>size</em>&#160;</td>
  1434         </tr>
  1435         <tr>
  1436           <td></td>
  1437           <td>)</td>
  1438           <td></td><td></td>
  1439         </tr>
  1440       </table>
  1441 </div><div class="memdoc">
  1443 <p>Creates a new hash map with the specified size using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p>
  1444 <dl class="params"><dt>Parameters</dt><dd>
  1445   <table class="params">
  1446     <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr>
  1447     <tr><td class="paramname">size</td><td>the size of the hash map </td></tr>
  1448   </table>
  1449   </dd>
  1450 </dl>
  1451 <dl class="section return"><dt>Returns</dt><dd>a pointer to the new hash map </dd></dl>
  1453 </div>
  1454 </div>
  1455 <a id="ac04a08b604217070254d4c58f0e82498"></a>
  1456 <h2 class="memtitle"><span class="permalink"><a href="#ac04a08b604217070254d4c58f0e82498">&#9670;&nbsp;</a></span>ucx_map_put()</h2>
  1458 <div class="memitem">
  1459 <div class="memproto">
  1460       <table class="memname">
  1461         <tr>
  1462           <td class="memname">int ucx_map_put </td>
  1463           <td>(</td>
  1464           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1465           <td class="paramname"><em>map</em>, </td>
  1466         </tr>
  1467         <tr>
  1468           <td class="paramkey"></td>
  1469           <td></td>
  1470           <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a>&#160;</td>
  1471           <td class="paramname"><em>key</em>, </td>
  1472         </tr>
  1473         <tr>
  1474           <td class="paramkey"></td>
  1475           <td></td>
  1476           <td class="paramtype">void *&#160;</td>
  1477           <td class="paramname"><em>value</em>&#160;</td>
  1478         </tr>
  1479         <tr>
  1480           <td></td>
  1481           <td>)</td>
  1482           <td></td><td></td>
  1483         </tr>
  1484       </table>
  1485 </div><div class="memdoc">
  1487 <p>Puts a key/value-pair into the map. </p>
  1488 <dl class="params"><dt>Parameters</dt><dd>
  1489   <table class="params">
  1490     <tr><td class="paramname">map</td><td>the map </td></tr>
  1491     <tr><td class="paramname">key</td><td>the key </td></tr>
  1492     <tr><td class="paramname">value</td><td>the value </td></tr>
  1493   </table>
  1494   </dd>
  1495 </dl>
  1496 <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl>
  1498 </div>
  1499 </div>
  1500 <a id="a174bce9fad554dd92b8da354e0d32512"></a>
  1501 <h2 class="memtitle"><span class="permalink"><a href="#a174bce9fad554dd92b8da354e0d32512">&#9670;&nbsp;</a></span>ucx_map_rehash()</h2>
  1503 <div class="memitem">
  1504 <div class="memproto">
  1505       <table class="memname">
  1506         <tr>
  1507           <td class="memname">int ucx_map_rehash </td>
  1508           <td>(</td>
  1509           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1510           <td class="paramname"><em>map</em></td><td>)</td>
  1511           <td></td>
  1512         </tr>
  1513       </table>
  1514 </div><div class="memdoc">
  1516 <p>Increases size of the hash map, if necessary. </p>
  1517 <p>The load value is 0.75*UcxMap.size. If the element count exceeds the load value, the map needs to be rehashed. Otherwise no action is performed and this function simply returns 0.</p>
  1518 <p>The rehashing process ensures, that the <a class="el" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838" title="The size of the map is the length of the element list array. ">UcxMap.size</a> is at least 2.5*UcxMap.count. So there is enough room for additional elements without the need of another soon rehashing.</p>
  1519 <p>You can use this function to dramatically increase access performance.</p>
  1520 <dl class="params"><dt>Parameters</dt><dd>
  1521   <table class="params">
  1522     <tr><td class="paramname">map</td><td>the map to rehash </td></tr>
  1523   </table>
  1524   </dd>
  1525 </dl>
  1526 <dl class="section return"><dt>Returns</dt><dd>1, if a memory allocation error occurred, 0 otherwise </dd></dl>
  1528 </div>
  1529 </div>
  1530 <a id="a17248a4888eb8f9ae18be522d64632aa"></a>
  1531 <h2 class="memtitle"><span class="permalink"><a href="#a17248a4888eb8f9ae18be522d64632aa">&#9670;&nbsp;</a></span>ucx_map_remove()</h2>
  1533 <div class="memitem">
  1534 <div class="memproto">
  1535       <table class="memname">
  1536         <tr>
  1537           <td class="memname">void* ucx_map_remove </td>
  1538           <td>(</td>
  1539           <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1540           <td class="paramname"><em>map</em>, </td>
  1541         </tr>
  1542         <tr>
  1543           <td class="paramkey"></td>
  1544           <td></td>
  1545           <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a>&#160;</td>
  1546           <td class="paramname"><em>key</em>&#160;</td>
  1547         </tr>
  1548         <tr>
  1549           <td></td>
  1550           <td>)</td>
  1551           <td></td><td></td>
  1552         </tr>
  1553       </table>
  1554 </div><div class="memdoc">
  1556 <p>Removes a key/value-pair from the map by using the key. </p>
  1557 <dl class="params"><dt>Parameters</dt><dd>
  1558   <table class="params">
  1559     <tr><td class="paramname">map</td><td>the map </td></tr>
  1560     <tr><td class="paramname">key</td><td>the key </td></tr>
  1561   </table>
  1562   </dd>
  1563 </dl>
  1564 <dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl>
  1566 </div>
  1567 </div>
  1568 <a id="a3f65978c481af7f637cad021d93522d5"></a>
  1569 <h2 class="memtitle"><span class="permalink"><a href="#a3f65978c481af7f637cad021d93522d5">&#9670;&nbsp;</a></span>ucx_map_union()</h2>
  1571 <div class="memitem">
  1572 <div class="memproto">
  1573       <table class="memname">
  1574         <tr>
  1575           <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_union </td>
  1576           <td>(</td>
  1577           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1578           <td class="paramname"><em>first</em>, </td>
  1579         </tr>
  1580         <tr>
  1581           <td class="paramkey"></td>
  1582           <td></td>
  1583           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1584           <td class="paramname"><em>second</em>, </td>
  1585         </tr>
  1586         <tr>
  1587           <td class="paramkey"></td>
  1588           <td></td>
  1589           <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
  1590           <td class="paramname"><em>cpfnc</em>, </td>
  1591         </tr>
  1592         <tr>
  1593           <td class="paramkey"></td>
  1594           <td></td>
  1595           <td class="paramtype">void *&#160;</td>
  1596           <td class="paramname"><em>cpdata</em>&#160;</td>
  1597         </tr>
  1598         <tr>
  1599           <td></td>
  1600           <td>)</td>
  1601           <td></td><td></td>
  1602         </tr>
  1603       </table>
  1604 </div><div class="memdoc">
  1606 <p>Returns the union of two maps. </p>
  1607 <p>The union is a fresh map which is filled by two successive calls of <a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425" title="Copies contents from a map to another map using a copy function. ">ucx_map_copy()</a> on the two input maps.</p>
  1608 <dl class="params"><dt>Parameters</dt><dd>
  1609   <table class="params">
  1610     <tr><td class="paramname">first</td><td>the first source map </td></tr>
  1611     <tr><td class="paramname">second</td><td>the second source map </td></tr>
  1612     <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
  1613     <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
  1614   </table>
  1615   </dd>
  1616 </dl>
  1617 <dl class="section return"><dt>Returns</dt><dd>a new map containing the union </dd></dl>
  1619 </div>
  1620 </div>
  1621 <a id="ab6370c3fa8113fdad593ce4b0460c9c6"></a>
  1622 <h2 class="memtitle"><span class="permalink"><a href="#ab6370c3fa8113fdad593ce4b0460c9c6">&#9670;&nbsp;</a></span>ucx_map_union_a()</h2>
  1624 <div class="memitem">
  1625 <div class="memproto">
  1626       <table class="memname">
  1627         <tr>
  1628           <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_union_a </td>
  1629           <td>(</td>
  1630           <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
  1631           <td class="paramname"><em>allocator</em>, </td>
  1632         </tr>
  1633         <tr>
  1634           <td class="paramkey"></td>
  1635           <td></td>
  1636           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1637           <td class="paramname"><em>first</em>, </td>
  1638         </tr>
  1639         <tr>
  1640           <td class="paramkey"></td>
  1641           <td></td>
  1642           <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> *&#160;</td>
  1643           <td class="paramname"><em>second</em>, </td>
  1644         </tr>
  1645         <tr>
  1646           <td class="paramkey"></td>
  1647           <td></td>
  1648           <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
  1649           <td class="paramname"><em>cpfnc</em>, </td>
  1650         </tr>
  1651         <tr>
  1652           <td class="paramkey"></td>
  1653           <td></td>
  1654           <td class="paramtype">void *&#160;</td>
  1655           <td class="paramname"><em>cpdata</em>&#160;</td>
  1656         </tr>
  1657         <tr>
  1658           <td></td>
  1659           <td>)</td>
  1660           <td></td><td></td>
  1661         </tr>
  1662       </table>
  1663 </div><div class="memdoc">
  1665 <p>Returns the union of two maps. </p>
  1666 <p>The union is a fresh map which is filled by two successive calls of <a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425" title="Copies contents from a map to another map using a copy function. ">ucx_map_copy()</a> on the two input maps.</p>
  1667 <dl class="params"><dt>Parameters</dt><dd>
  1668   <table class="params">
  1669     <tr><td class="paramname">allocator</td><td>the allocator that shall be used by the new map </td></tr>
  1670     <tr><td class="paramname">first</td><td>the first source map </td></tr>
  1671     <tr><td class="paramname">second</td><td>the second source map </td></tr>
  1672     <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
  1673     <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
  1674   </table>
  1675   </dd>
  1676 </dl>
  1677 <dl class="section return"><dt>Returns</dt><dd>a new map containing the union </dd></dl>
  1679 </div>
  1680 </div>
  1681 </div><!-- contents -->
  1682 <!-- start footer part -->
  1683 <hr class="footer"/><address class="footer"><small>
  1684 Generated on Thu Dec 19 2019 19:58:24 for ucx by &#160;<a href="http://www.doxygen.org/index.html">
  1685 <img class="footer" src="doxygen.png" alt="doxygen"/>
  1686 </a> 1.8.13
  1687 </small></address>
  1688 </body>
  1689 </html>

mercurial