Mon, 08 Aug 2022 17:12:00 +0200
#201 - remove dangerous allocator config
There is no plausible use case, except using the testing
allocator in the test case, and having the possibility to
specify any allocator (including another mempool) causes
more harm than good.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.13"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>ucx: /home/mike/workspace/c/ucx/src/ucx/map.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">ucx </div> <div id="projectbrief">UAP Common Extensions</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.13 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); </script> <div id="main-nav"></div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#define-members">Macros</a> | <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">map.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>Hash map implementation. <a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> <code>#include "<a class="el" href="string_8h_source.html">string.h</a>"</code><br /> <code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> <code>#include <stdio.h></code><br /> </div> <p><a href="map_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMap.html">UcxMap</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Structure for the UCX map. <a href="structUcxMap.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxKey.html">UcxKey</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </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> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapKey.html">UcxMapKey</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </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> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapElement.html">UcxMapElement</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </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> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </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> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:a940896c4aa1b13e54c55c04c3efc186b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a940896c4aa1b13e54c55c04c3efc186b">UCX_MAP_FOREACH</a>(key, value, iter)   for(<a class="el" href="structUcxKey.html">UcxKey</a> key;<a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a>(&iter,&key, (void**)&value);)</td></tr> <tr class="memdesc:a940896c4aa1b13e54c55c04c3efc186b"><td class="mdescLeft"> </td><td class="mdescRight">Loop statement for UCX maps. <a href="#a940896c4aa1b13e54c55c04c3efc186b">More...</a><br /></td></tr> <tr class="separator:a940896c4aa1b13e54c55c04c3efc186b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac26a8615bfc8f47ee9eaceb47645f98e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ac26a8615bfc8f47ee9eaceb47645f98e">ucx_map_sstr_put</a>(map, key, value)   <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> <tr class="memdesc:ac26a8615bfc8f47ee9eaceb47645f98e"><td class="mdescLeft"> </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> <tr class="separator:ac26a8615bfc8f47ee9eaceb47645f98e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad9356b01425b934ab237b52339ac0cc3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad9356b01425b934ab237b52339ac0cc3">ucx_map_cstr_put</a>(map, key, value)   <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> <tr class="memdesc:ad9356b01425b934ab237b52339ac0cc3"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for putting data with a C string key into the map. <a href="#ad9356b01425b934ab237b52339ac0cc3">More...</a><br /></td></tr> <tr class="separator:ad9356b01425b934ab237b52339ac0cc3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aaa30af79b4068c923895619e83f44367"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aaa30af79b4068c923895619e83f44367">ucx_map_int_put</a>(map, key, value)   <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, sizeof(key)), (void*)value)</td></tr> <tr class="memdesc:aaa30af79b4068c923895619e83f44367"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for putting data with an integer key into the map. <a href="#aaa30af79b4068c923895619e83f44367">More...</a><br /></td></tr> <tr class="separator:aaa30af79b4068c923895619e83f44367"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a14d385f6b7f371f0507861cabd2eab4e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a14d385f6b7f371f0507861cabd2eab4e">ucx_map_sstr_get</a>(map, key)   <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> <tr class="memdesc:a14d385f6b7f371f0507861cabd2eab4e"><td class="mdescLeft"> </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> <tr class="separator:a14d385f6b7f371f0507861cabd2eab4e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a64e1fb55498fa502dd2ed8ed69062cdd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a64e1fb55498fa502dd2ed8ed69062cdd">ucx_map_cstr_get</a>(map, key)   <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> <tr class="memdesc:a64e1fb55498fa502dd2ed8ed69062cdd"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for getting data from the map with a C string key. <a href="#a64e1fb55498fa502dd2ed8ed69062cdd">More...</a><br /></td></tr> <tr class="separator:a64e1fb55498fa502dd2ed8ed69062cdd"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa1681bd2178553cd092fd24c4d681d3c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aa1681bd2178553cd092fd24c4d681d3c">ucx_map_int_get</a>(map, key)   <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, sizeof(int)))</td></tr> <tr class="memdesc:aa1681bd2178553cd092fd24c4d681d3c"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for getting data from the map with an integer key. <a href="#aa1681bd2178553cd092fd24c4d681d3c">More...</a><br /></td></tr> <tr class="separator:aa1681bd2178553cd092fd24c4d681d3c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a48700ea86fadb9ea54d13010f9124df2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a48700ea86fadb9ea54d13010f9124df2">ucx_map_sstr_remove</a>(map, key)   <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> <tr class="memdesc:a48700ea86fadb9ea54d13010f9124df2"><td class="mdescLeft"> </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> <tr class="separator:a48700ea86fadb9ea54d13010f9124df2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9c4405a5a75ecf64e2ef3d0c6501a9fe"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a9c4405a5a75ecf64e2ef3d0c6501a9fe">ucx_map_cstr_remove</a>(map, key)   <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> <tr class="memdesc:a9c4405a5a75ecf64e2ef3d0c6501a9fe"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for removing data from the map with a C string key. <a href="#a9c4405a5a75ecf64e2ef3d0c6501a9fe">More...</a><br /></td></tr> <tr class="separator:a9c4405a5a75ecf64e2ef3d0c6501a9fe"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa767958b5468737755c09f7185b1770c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aa767958b5468737755c09f7185b1770c">ucx_map_int_remove</a>(map, key)   <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, sizeof(key)))</td></tr> <tr class="memdesc:aa767958b5468737755c09f7185b1770c"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for removing data from the map with an integer key. <a href="#aa767958b5468737755c09f7185b1770c">More...</a><br /></td></tr> <tr class="separator:aa767958b5468737755c09f7185b1770c"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:a18e21948725b2da68c35da587a722033"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxMap.html">UcxMap</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a18e21948725b2da68c35da587a722033">UcxMap</a></td></tr> <tr class="memdesc:a18e21948725b2da68c35da587a722033"><td class="mdescLeft"> </td><td class="mdescRight">Type for the UCX map. <a href="#a18e21948725b2da68c35da587a722033">More...</a><br /></td></tr> <tr class="separator:a18e21948725b2da68c35da587a722033"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad63828bb23123fc01a5315a2bac3b142"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxKey.html">UcxKey</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad63828bb23123fc01a5315a2bac3b142">UcxKey</a></td></tr> <tr class="memdesc:ad63828bb23123fc01a5315a2bac3b142"><td class="mdescLeft"> </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> <tr class="separator:ad63828bb23123fc01a5315a2bac3b142"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad7d7a910a32113eb93eae11c3dc97b4b"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxMapElement.html">UcxMapElement</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad7d7a910a32113eb93eae11c3dc97b4b">UcxMapElement</a></td></tr> <tr class="memdesc:ad7d7a910a32113eb93eae11c3dc97b4b"><td class="mdescLeft"> </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> <tr class="separator:ad7d7a910a32113eb93eae11c3dc97b4b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae36aff5f645948c54f51578b11fd87fb"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ae36aff5f645948c54f51578b11fd87fb">UcxMapIterator</a></td></tr> <tr class="memdesc:ae36aff5f645948c54f51578b11fd87fb"><td class="mdescLeft"> </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> <tr class="separator:ae36aff5f645948c54f51578b11fd87fb"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:a79f31de8b93814493759dbc8b940cf0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a79f31de8b93814493759dbc8b940cf0c">ucx_map_new</a> (size_t size)</td></tr> <tr class="memdesc:a79f31de8b93814493759dbc8b940cf0c"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new hash map with the specified size. <a href="#a79f31de8b93814493759dbc8b940cf0c">More...</a><br /></td></tr> <tr class="separator:a79f31de8b93814493759dbc8b940cf0c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aed508a94c66cc15372503c64b70eb03e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </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> <tr class="memdesc:aed508a94c66cc15372503c64b70eb03e"><td class="mdescLeft"> </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> <tr class="separator:aed508a94c66cc15372503c64b70eb03e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abe3d9688e4224bf7bb962abf25ff8c2e"><td class="memItemLeft" align="right" valign="top">void </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> <tr class="memdesc:abe3d9688e4224bf7bb962abf25ff8c2e"><td class="mdescLeft"> </td><td class="mdescRight">Frees a hash map. <a href="#abe3d9688e4224bf7bb962abf25ff8c2e">More...</a><br /></td></tr> <tr class="separator:abe3d9688e4224bf7bb962abf25ff8c2e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a750f3d9d83e2f3788a14c17a9d160618"><td class="memItemLeft" align="right" valign="top">void </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> <tr class="memdesc:a750f3d9d83e2f3788a14c17a9d160618"><td class="mdescLeft"> </td><td class="mdescRight">Frees the contents of a hash map. <a href="#a750f3d9d83e2f3788a14c17a9d160618">More...</a><br /></td></tr> <tr class="separator:a750f3d9d83e2f3788a14c17a9d160618"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a285e90e40681c6d9631c935dda0967f2"><td class="memItemLeft" align="right" valign="top">void </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> <tr class="memdesc:a285e90e40681c6d9631c935dda0967f2"><td class="mdescLeft"> </td><td class="mdescRight">Clears a hash map. <a href="#a285e90e40681c6d9631c935dda0967f2">More...</a><br /></td></tr> <tr class="separator:a285e90e40681c6d9631c935dda0967f2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adfeb2d61003fd2896bcfdc9a57f36425"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:adfeb2d61003fd2896bcfdc9a57f36425"><td class="mdescLeft"> </td><td class="mdescRight">Copies contents from a map to another map using a copy function. <a href="#adfeb2d61003fd2896bcfdc9a57f36425">More...</a><br /></td></tr> <tr class="separator:adfeb2d61003fd2896bcfdc9a57f36425"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a62c6c30cbb0d824ba710f5030ff9a4e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </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> <tr class="memdesc:a62c6c30cbb0d824ba710f5030ff9a4e4"><td class="mdescLeft"> </td><td class="mdescRight">Clones the map and rehashes if necessary. <a href="#a62c6c30cbb0d824ba710f5030ff9a4e4">More...</a><br /></td></tr> <tr class="separator:a62c6c30cbb0d824ba710f5030ff9a4e4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9aea9103703d5c168420bb6bf85549ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </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> <tr class="memdesc:a9aea9103703d5c168420bb6bf85549ea"><td class="mdescLeft"> </td><td class="mdescRight">Clones the map and rehashes if necessary. <a href="#a9aea9103703d5c168420bb6bf85549ea">More...</a><br /></td></tr> <tr class="separator:a9aea9103703d5c168420bb6bf85549ea"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a174bce9fad554dd92b8da354e0d32512"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:a174bce9fad554dd92b8da354e0d32512"><td class="mdescLeft"> </td><td class="mdescRight">Increases size of the hash map, if necessary. <a href="#a174bce9fad554dd92b8da354e0d32512">More...</a><br /></td></tr> <tr class="separator:a174bce9fad554dd92b8da354e0d32512"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac04a08b604217070254d4c58f0e82498"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:ac04a08b604217070254d4c58f0e82498"><td class="mdescLeft"> </td><td class="mdescRight">Puts a key/value-pair into the map. <a href="#ac04a08b604217070254d4c58f0e82498">More...</a><br /></td></tr> <tr class="separator:ac04a08b604217070254d4c58f0e82498"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab61192c5af2e06ecb9ad73880d1c95a6"><td class="memItemLeft" align="right" valign="top">void * </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> <tr class="memdesc:ab61192c5af2e06ecb9ad73880d1c95a6"><td class="mdescLeft"> </td><td class="mdescRight">Retrieves a value by using a key. <a href="#ab61192c5af2e06ecb9ad73880d1c95a6">More...</a><br /></td></tr> <tr class="separator:ab61192c5af2e06ecb9ad73880d1c95a6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a17248a4888eb8f9ae18be522d64632aa"><td class="memItemLeft" align="right" valign="top">void * </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> <tr class="memdesc:a17248a4888eb8f9ae18be522d64632aa"><td class="mdescLeft"> </td><td class="mdescRight">Removes a key/value-pair from the map by using the key. <a href="#a17248a4888eb8f9ae18be522d64632aa">More...</a><br /></td></tr> <tr class="separator:a17248a4888eb8f9ae18be522d64632aa"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3e540bb46b8ee19789aed63fd8919200"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxKey.html">UcxKey</a> </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> <tr class="memdesc:a3e540bb46b8ee19789aed63fd8919200"><td class="mdescLeft"> </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> <tr class="separator:a3e540bb46b8ee19789aed63fd8919200"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aea3be97254c05595d986ef6a9faae87b"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:aea3be97254c05595d986ef6a9faae87b"><td class="mdescLeft"> </td><td class="mdescRight">Computes a murmur hash-2. <a href="#aea3be97254c05595d986ef6a9faae87b">More...</a><br /></td></tr> <tr class="separator:aea3be97254c05595d986ef6a9faae87b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9150e9c64fdf4dfcc2cad106b91aa110"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> </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> <tr class="memdesc:a9150e9c64fdf4dfcc2cad106b91aa110"><td class="mdescLeft"> </td><td class="mdescRight">Creates an iterator for a map. <a href="#a9150e9c64fdf4dfcc2cad106b91aa110">More...</a><br /></td></tr> <tr class="separator:a9150e9c64fdf4dfcc2cad106b91aa110"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aceb8675abf44860b4bbc301bbada5b91"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:aceb8675abf44860b4bbc301bbada5b91"><td class="mdescLeft"> </td><td class="mdescRight">Proceeds to the next element of the map (if any). <a href="#aceb8675abf44860b4bbc301bbada5b91">More...</a><br /></td></tr> <tr class="separator:aceb8675abf44860b4bbc301bbada5b91"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3f65978c481af7f637cad021d93522d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </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> <tr class="memdesc:a3f65978c481af7f637cad021d93522d5"><td class="mdescLeft"> </td><td class="mdescRight">Returns the union of two maps. <a href="#a3f65978c481af7f637cad021d93522d5">More...</a><br /></td></tr> <tr class="separator:a3f65978c481af7f637cad021d93522d5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab6370c3fa8113fdad593ce4b0460c9c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </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> <tr class="memdesc:ab6370c3fa8113fdad593ce4b0460c9c6"><td class="mdescLeft"> </td><td class="mdescRight">Returns the union of two maps. <a href="#ab6370c3fa8113fdad593ce4b0460c9c6">More...</a><br /></td></tr> <tr class="separator:ab6370c3fa8113fdad593ce4b0460c9c6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa594d7a5afebc3bed6bb265348cf6b0d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </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> <tr class="memdesc:aa594d7a5afebc3bed6bb265348cf6b0d"><td class="mdescLeft"> </td><td class="mdescRight">Returns the intersection of two maps. <a href="#aa594d7a5afebc3bed6bb265348cf6b0d">More...</a><br /></td></tr> <tr class="separator:aa594d7a5afebc3bed6bb265348cf6b0d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a169e0470a20484dd76425fdf77e3651e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </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> <tr class="memdesc:a169e0470a20484dd76425fdf77e3651e"><td class="mdescLeft"> </td><td class="mdescRight">Returns the intersection of two maps. <a href="#a169e0470a20484dd76425fdf77e3651e">More...</a><br /></td></tr> <tr class="separator:a169e0470a20484dd76425fdf77e3651e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a774fcff87d1e58b6c5af77dd19a8c3dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </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> <tr class="memdesc:a774fcff87d1e58b6c5af77dd19a8c3dc"><td class="mdescLeft"> </td><td class="mdescRight">Returns the difference of two maps. <a href="#a774fcff87d1e58b6c5af77dd19a8c3dc">More...</a><br /></td></tr> <tr class="separator:a774fcff87d1e58b6c5af77dd19a8c3dc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad0ba103494247d798ac3037c50fc8831"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </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> <tr class="memdesc:ad0ba103494247d798ac3037c50fc8831"><td class="mdescLeft"> </td><td class="mdescRight">Returns the difference of two maps. <a href="#ad0ba103494247d798ac3037c50fc8831">More...</a><br /></td></tr> <tr class="separator:ad0ba103494247d798ac3037c50fc8831"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>Hash map implementation. </p> <p>This implementation uses murmur hash 2 and separate chaining with linked lists.</p> <dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> <dd> Olaf Wintermann </dd></dl> </div><h2 class="groupheader">Macro Definition Documentation</h2> <a id="a64e1fb55498fa502dd2ed8ed69062cdd"></a> <h2 class="memtitle"><span class="permalink"><a href="#a64e1fb55498fa502dd2ed8ed69062cdd">◆ </a></span>ucx_map_cstr_get</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_map_cstr_get</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">map, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Shorthand for getting data from the map with a C string key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the value </dd></dl> <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> </div> </div> <a id="ad9356b01425b934ab237b52339ac0cc3"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad9356b01425b934ab237b52339ac0cc3">◆ </a></span>ucx_map_cstr_put</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_map_cstr_put</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">map, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">value </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Shorthand for putting data with a C string key into the map. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> <tr><td class="paramname">value</td><td>the value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl> <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> </div> </div> <a id="a9c4405a5a75ecf64e2ef3d0c6501a9fe"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9c4405a5a75ecf64e2ef3d0c6501a9fe">◆ </a></span>ucx_map_cstr_remove</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_map_cstr_remove</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">map, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Shorthand for removing data from the map with a C string key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl> <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> </div> </div> <a id="a940896c4aa1b13e54c55c04c3efc186b"></a> <h2 class="memtitle"><span class="permalink"><a href="#a940896c4aa1b13e54c55c04c3efc186b">◆ </a></span>UCX_MAP_FOREACH</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define UCX_MAP_FOREACH</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">key, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">value, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">iter </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   for(<a class="el" href="structUcxKey.html">UcxKey</a> key;<a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a>(&iter,&key, (void**)&value);)</td> </tr> </table> </div><div class="memdoc"> <p>Loop statement for UCX maps. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key</td><td>the variable name for the key </td></tr> <tr><td class="paramname">value</td><td>the variable name for the value </td></tr> <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> </table> </dd> </dl> <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> </div> </div> <a id="aa1681bd2178553cd092fd24c4d681d3c"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa1681bd2178553cd092fd24c4d681d3c">◆ </a></span>ucx_map_int_get</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_map_int_get</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">map, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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, sizeof(int)))</td> </tr> </table> </div><div class="memdoc"> <p>Shorthand for getting data from the map with an integer key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the value </dd></dl> <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> </div> </div> <a id="aaa30af79b4068c923895619e83f44367"></a> <h2 class="memtitle"><span class="permalink"><a href="#aaa30af79b4068c923895619e83f44367">◆ </a></span>ucx_map_int_put</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_map_int_put</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">map, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">value </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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, sizeof(key)), (void*)value)</td> </tr> </table> </div><div class="memdoc"> <p>Shorthand for putting data with an integer key into the map. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> <tr><td class="paramname">value</td><td>the value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl> <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> </div> </div> <a id="aa767958b5468737755c09f7185b1770c"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa767958b5468737755c09f7185b1770c">◆ </a></span>ucx_map_int_remove</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_map_int_remove</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">map, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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, sizeof(key)))</td> </tr> </table> </div><div class="memdoc"> <p>Shorthand for removing data from the map with an integer key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl> <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> </div> </div> <a id="a14d385f6b7f371f0507861cabd2eab4e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a14d385f6b7f371f0507861cabd2eab4e">◆ </a></span>ucx_map_sstr_get</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_map_sstr_get</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">map, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the value </dd></dl> <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> </div> </div> <a id="ac26a8615bfc8f47ee9eaceb47645f98e"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac26a8615bfc8f47ee9eaceb47645f98e">◆ </a></span>ucx_map_sstr_put</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_map_sstr_put</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">map, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">value </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> <tr><td class="paramname">value</td><td>the value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl> <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> </div> </div> <a id="a48700ea86fadb9ea54d13010f9124df2"></a> <h2 class="memtitle"><span class="permalink"><a href="#a48700ea86fadb9ea54d13010f9124df2">◆ </a></span>ucx_map_sstr_remove</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_map_sstr_remove</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">map, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">key </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl> <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> </div> </div> <h2 class="groupheader">Typedef Documentation</h2> <a id="ad63828bb23123fc01a5315a2bac3b142"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad63828bb23123fc01a5315a2bac3b142">◆ </a></span>UcxKey</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct <a class="el" href="structUcxKey.html">UcxKey</a> <a class="el" href="structUcxKey.html">UcxKey</a></td> </tr> </table> </div><div class="memdoc"> <p>Type for a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> <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> </div> </div> <a id="a18e21948725b2da68c35da587a722033"></a> <h2 class="memtitle"><span class="permalink"><a href="#a18e21948725b2da68c35da587a722033">◆ </a></span>UcxMap</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct <a class="el" href="structUcxMap.html">UcxMap</a> <a class="el" href="structUcxMap.html">UcxMap</a></td> </tr> </table> </div><div class="memdoc"> <p>Type for the UCX map. </p> <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> </div> </div> <a id="ad7d7a910a32113eb93eae11c3dc97b4b"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad7d7a910a32113eb93eae11c3dc97b4b">◆ </a></span>UcxMapElement</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct <a class="el" href="structUcxMapElement.html">UcxMapElement</a> <a class="el" href="structUcxMapElement.html">UcxMapElement</a></td> </tr> </table> </div><div class="memdoc"> <p>Type for an element of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> <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> </div> </div> <a id="ae36aff5f645948c54f51578b11fd87fb"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae36aff5f645948c54f51578b11fd87fb">◆ </a></span>UcxMapIterator</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct <a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> <a class="el" href="structUcxMapIterator.html">UcxMapIterator</a></td> </tr> </table> </div><div class="memdoc"> <p>Type for an iterator over a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> <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> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a id="aea3be97254c05595d986ef6a9faae87b"></a> <h2 class="memtitle"><span class="permalink"><a href="#aea3be97254c05595d986ef6a9faae87b">◆ </a></span>ucx_hash()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_hash </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>len</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Computes a murmur hash-2. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">data</td><td>the data to hash </td></tr> <tr><td class="paramname">len</td><td>the length of the data </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the murmur hash-2 of the data </dd></dl> </div> </div> <a id="a3e540bb46b8ee19789aed63fd8919200"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3e540bb46b8ee19789aed63fd8919200">◆ </a></span>ucx_key()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxKey.html">UcxKey</a> ucx_key </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>len</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <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> <p>This function implicitly computes the hash.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">data</td><td>the data for the key </td></tr> <tr><td class="paramname">len</td><td>the length of the data </td></tr> </table> </dd> </dl> <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> <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> </div> </div> <a id="a285e90e40681c6d9631c935dda0967f2"></a> <h2 class="memtitle"><span class="permalink"><a href="#a285e90e40681c6d9631c935dda0967f2">◆ </a></span>ucx_map_clear()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucx_map_clear </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>map</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Clears a hash map. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map to be cleared </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="a62c6c30cbb0d824ba710f5030ff9a4e4"></a> <h2 class="memtitle"><span class="permalink"><a href="#a62c6c30cbb0d824ba710f5030ff9a4e4">◆ </a></span>ucx_map_clone()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_clone </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td> <td class="paramname"><em>map</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> <td class="paramname"><em>fnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Clones the map and rehashes if necessary. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map to clone </td></tr> <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> <tr><td class="paramname">data</td><td>additional data for the copy function </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the cloned map </dd></dl> <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> </div> </div> <a id="a9aea9103703d5c168420bb6bf85549ea"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9aea9103703d5c168420bb6bf85549ea">◆ </a></span>ucx_map_clone_a()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_clone_a </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td> <td class="paramname"><em>map</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> <td class="paramname"><em>fnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Clones the map and rehashes if necessary. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the allocator to use for the cloned map </td></tr> <tr><td class="paramname">map</td><td>the map to clone </td></tr> <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> <tr><td class="paramname">data</td><td>additional data for the copy function </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the cloned map </dd></dl> <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> </div> </div> <a id="adfeb2d61003fd2896bcfdc9a57f36425"></a> <h2 class="memtitle"><span class="permalink"><a href="#adfeb2d61003fd2896bcfdc9a57f36425">◆ </a></span>ucx_map_copy()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_map_copy </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td> <td class="paramname"><em>from</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>to</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> <td class="paramname"><em>fnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Copies contents from a map to another map using a copy function. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">from</td><td>the source map </td></tr> <tr><td class="paramname">to</td><td>the destination map </td></tr> <tr><td class="paramname">fnc</td><td>the copy function or <code>NULL</code> if the pointer address shall be copied </td></tr> <tr><td class="paramname">data</td><td>additional data for the copy function </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success or a non-zero value on memory allocation errors </dd></dl> </div> </div> <a id="a774fcff87d1e58b6c5af77dd19a8c3dc"></a> <h2 class="memtitle"><span class="permalink"><a href="#a774fcff87d1e58b6c5af77dd19a8c3dc">◆ </a></span>ucx_map_difference()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_difference </td> <td>(</td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>second</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> <td class="paramname"><em>cpfnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>cpdata</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the difference of two maps. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">first</td><td>the first source map </td></tr> <tr><td class="paramname">second</td><td>the second source map </td></tr> <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a new list containing the difference </dd></dl> </div> </div> <a id="ad0ba103494247d798ac3037c50fc8831"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad0ba103494247d798ac3037c50fc8831">◆ </a></span>ucx_map_difference_a()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_difference_a </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>second</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> <td class="paramname"><em>cpfnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>cpdata</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the difference of two maps. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the allocator that shall be used by the new map </td></tr> <tr><td class="paramname">first</td><td>the first source map </td></tr> <tr><td class="paramname">second</td><td>the second source map </td></tr> <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a new list containing the difference </dd></dl> </div> </div> <a id="abe3d9688e4224bf7bb962abf25ff8c2e"></a> <h2 class="memtitle"><span class="permalink"><a href="#abe3d9688e4224bf7bb962abf25ff8c2e">◆ </a></span>ucx_map_free()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucx_map_free </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>map</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Frees a hash map. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map to be freed </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="a750f3d9d83e2f3788a14c17a9d160618"></a> <h2 class="memtitle"><span class="permalink"><a href="#a750f3d9d83e2f3788a14c17a9d160618">◆ </a></span>ucx_map_free_content()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucx_map_free_content </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>map</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> </td> <td class="paramname"><em>destr</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Frees the contents of a hash map. </p> <p>This is a convenience function that iterates over the map and passes all values to the specified destructor function.</p> <p>If no destructor is specified (<code>NULL</code>), the free() function of the map's own allocator is used.</p> <p>You must ensure, that it is valid to pass each value in the map to the same destructor function.</p> <p>You should free or clear the map afterwards, as the contents will be invalid.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>for which the contents shall be freed </td></tr> <tr><td class="paramname">destr</td><td>optional pointer to a destructor function </td></tr> </table> </dd> </dl> <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> <dd> <a class="el" href="map_8h.html#a285e90e40681c6d9631c935dda0967f2" title="Clears a hash map. ">ucx_map_clear()</a> </dd></dl> </div> </div> <a id="ab61192c5af2e06ecb9ad73880d1c95a6"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab61192c5af2e06ecb9ad73880d1c95a6">◆ </a></span>ucx_map_get()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* ucx_map_get </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td> <td class="paramname"><em>map</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a> </td> <td class="paramname"><em>key</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Retrieves a value by using a key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the value </dd></dl> </div> </div> <a id="aa594d7a5afebc3bed6bb265348cf6b0d"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa594d7a5afebc3bed6bb265348cf6b0d">◆ </a></span>ucx_map_intersection()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_intersection </td> <td>(</td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>second</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> <td class="paramname"><em>cpfnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>cpdata</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the intersection of two maps. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">first</td><td>the first source map </td></tr> <tr><td class="paramname">second</td><td>the second source map </td></tr> <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a new map containing the intersection </dd></dl> </div> </div> <a id="a169e0470a20484dd76425fdf77e3651e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a169e0470a20484dd76425fdf77e3651e">◆ </a></span>ucx_map_intersection_a()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_intersection_a </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>second</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> <td class="paramname"><em>cpfnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>cpdata</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the intersection of two maps. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the allocator that shall be used by the new map </td></tr> <tr><td class="paramname">first</td><td>the first source map </td></tr> <tr><td class="paramname">second</td><td>the second source map </td></tr> <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a new map containing the intersection </dd></dl> </div> </div> <a id="aceb8675abf44860b4bbc301bbada5b91"></a> <h2 class="memtitle"><span class="permalink"><a href="#aceb8675abf44860b4bbc301bbada5b91">◆ </a></span>ucx_map_iter_next()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_map_iter_next </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> * </td> <td class="paramname"><em>iterator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a> * </td> <td class="paramname"><em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void ** </td> <td class="paramname"><em>value</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Proceeds to the next element of the map (if any). </p> <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> <p>If no further elements are found, this function returns zero and leaves the last found key/value-pair in memory.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">iterator</td><td>the iterator to use </td></tr> <tr><td class="paramname">key</td><td>a pointer to the memory where to store the key </td></tr> <tr><td class="paramname">value</td><td>a pointer to the memory where to store the value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1, if another element was found, 0 if all elements has been processed </dd></dl> <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> </div> </div> <a id="a9150e9c64fdf4dfcc2cad106b91aa110"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9150e9c64fdf4dfcc2cad106b91aa110">◆ </a></span>ucx_map_iterator()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> ucx_map_iterator </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td> <td class="paramname"><em>map</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Creates an iterator for a map. </p> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map to create the iterator for </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>an iterator initialized on the first element of the first element list </dd></dl> <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> </div> </div> <a id="a79f31de8b93814493759dbc8b940cf0c"></a> <h2 class="memtitle"><span class="permalink"><a href="#a79f31de8b93814493759dbc8b940cf0c">◆ </a></span>ucx_map_new()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_new </td> <td>(</td> <td class="paramtype">size_t </td> <td class="paramname"><em>size</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Creates a new hash map with the specified size. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">size</td><td>the size of the hash map </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a pointer to the new hash map </dd></dl> </div> </div> <a id="aed508a94c66cc15372503c64b70eb03e"></a> <h2 class="memtitle"><span class="permalink"><a href="#aed508a94c66cc15372503c64b70eb03e">◆ </a></span>ucx_map_new_a()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_new_a </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>size</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> <tr><td class="paramname">size</td><td>the size of the hash map </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a pointer to the new hash map </dd></dl> </div> </div> <a id="ac04a08b604217070254d4c58f0e82498"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac04a08b604217070254d4c58f0e82498">◆ </a></span>ucx_map_put()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_map_put </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>map</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a> </td> <td class="paramname"><em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>value</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Puts a key/value-pair into the map. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> <tr><td class="paramname">value</td><td>the value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl> </div> </div> <a id="a174bce9fad554dd92b8da354e0d32512"></a> <h2 class="memtitle"><span class="permalink"><a href="#a174bce9fad554dd92b8da354e0d32512">◆ </a></span>ucx_map_rehash()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_map_rehash </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>map</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Increases size of the hash map, if necessary. </p> <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> <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> <p>You can use this function to dramatically increase access performance.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map to rehash </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1, if a memory allocation error occurred, 0 otherwise </dd></dl> </div> </div> <a id="a17248a4888eb8f9ae18be522d64632aa"></a> <h2 class="memtitle"><span class="permalink"><a href="#a17248a4888eb8f9ae18be522d64632aa">◆ </a></span>ucx_map_remove()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* ucx_map_remove </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>map</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a> </td> <td class="paramname"><em>key</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Removes a key/value-pair from the map by using the key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">map</td><td>the map </td></tr> <tr><td class="paramname">key</td><td>the key </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl> </div> </div> <a id="a3f65978c481af7f637cad021d93522d5"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3f65978c481af7f637cad021d93522d5">◆ </a></span>ucx_map_union()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_union </td> <td>(</td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>second</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> <td class="paramname"><em>cpfnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>cpdata</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the union of two maps. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">first</td><td>the first source map </td></tr> <tr><td class="paramname">second</td><td>the second source map </td></tr> <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a new map containing the union </dd></dl> </div> </div> <a id="ab6370c3fa8113fdad593ce4b0460c9c6"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab6370c3fa8113fdad593ce4b0460c9c6">◆ </a></span>ucx_map_union_a()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_union_a </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> <td class="paramname"><em>second</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> <td class="paramname"><em>cpfnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>cpdata</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the union of two maps. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the allocator that shall be used by the new map </td></tr> <tr><td class="paramname">first</td><td>the first source map </td></tr> <tr><td class="paramname">second</td><td>the second source map </td></tr> <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a new map containing the union </dd></dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.13 </small></address> </body> </html>