class_lock_free_hash_map.html 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=11"/>
  6. <meta name="generator" content="Doxygen 1.12.0"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>Jolt Physics: LockFreeHashMap&lt; Key, Value &gt; Class Template 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. <script type="text/javascript" src="clipboard.js"></script>
  13. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  14. <script type="text/javascript" src="navtreedata.js"></script>
  15. <script type="text/javascript" src="navtree.js"></script>
  16. <script type="text/javascript" src="resize.js"></script>
  17. <script type="text/javascript" src="cookie.js"></script>
  18. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  19. <script type="text/javascript" src="search/searchdata.js"></script>
  20. <script type="text/javascript" src="search/search.js"></script>
  21. <script type="text/x-mathjax-config">
  22. MathJax.Hub.Config({
  23. extensions: ["tex2jax.js"],
  24. jax: ["input/TeX","output/HTML-CSS"],
  25. });
  26. </script>
  27. <script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
  28. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  29. </head>
  30. <body>
  31. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  32. <div id="titlearea">
  33. <table cellspacing="0" cellpadding="0">
  34. <tbody>
  35. <tr id="projectrow">
  36. <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
  37. <td id="projectalign">
  38. <div id="projectname">Jolt Physics
  39. </div>
  40. <div id="projectbrief">A multi core friendly Game Physics Engine</div>
  41. </td>
  42. </tr>
  43. </tbody>
  44. </table>
  45. </div>
  46. <!-- end header part -->
  47. <!-- Generated by Doxygen 1.12.0 -->
  48. <script type="text/javascript">
  49. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  50. var searchBox = new SearchBox("searchBox", "search/",'.html');
  51. /* @license-end */
  52. </script>
  53. <script type="text/javascript">
  54. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  55. $(function() { codefold.init(0); });
  56. /* @license-end */
  57. </script>
  58. <script type="text/javascript" src="menudata.js"></script>
  59. <script type="text/javascript" src="menu.js"></script>
  60. <script type="text/javascript">
  61. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  62. $(function() {
  63. initMenu('',true,false,'search.php','Search',true);
  64. $(function() { init_search(); });
  65. });
  66. /* @license-end */
  67. </script>
  68. <div id="main-nav"></div>
  69. </div><!-- top -->
  70. <div id="side-nav" class="ui-resizable side-nav-resizable">
  71. <div id="nav-tree">
  72. <div id="nav-tree-contents">
  73. <div id="nav-sync" class="sync"></div>
  74. </div>
  75. </div>
  76. <div id="splitbar" style="-moz-user-select:none;"
  77. class="ui-resizable-handle">
  78. </div>
  79. </div>
  80. <script type="text/javascript">
  81. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  82. $(function(){initNavTree('class_lock_free_hash_map.html',''); initResizable(true); });
  83. /* @license-end */
  84. </script>
  85. <div id="doc-content">
  86. <!-- window showing the filter options -->
  87. <div id="MSearchSelectWindow"
  88. onmouseover="return searchBox.OnSearchSelectShow()"
  89. onmouseout="return searchBox.OnSearchSelectHide()"
  90. onkeydown="return searchBox.OnSearchSelectKey(event)">
  91. </div>
  92. <!-- iframe showing the search results (closed by default) -->
  93. <div id="MSearchResultsWindow">
  94. <div id="MSearchResults">
  95. <div class="SRPage">
  96. <div id="SRIndex">
  97. <div id="SRResults"></div>
  98. <div class="SRStatus" id="Loading">Loading...</div>
  99. <div class="SRStatus" id="Searching">Searching...</div>
  100. <div class="SRStatus" id="NoMatches">No Matches</div>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. <div class="header">
  106. <div class="summary">
  107. <a href="#nested-classes">Classes</a> &#124;
  108. <a href="#pub-types">Public Types</a> &#124;
  109. <a href="#pub-methods">Public Member Functions</a> &#124;
  110. <a href="#pub-static-attribs">Static Public Attributes</a> &#124;
  111. <a href="class_lock_free_hash_map-members.html">List of all members</a> </div>
  112. <div class="headertitle"><div class="title">LockFreeHashMap&lt; Key, Value &gt; Class Template Reference</div></div>
  113. </div><!--header-->
  114. <div class="contents">
  115. <p><code>#include &lt;<a class="el" href="_lock_free_hash_map_8h_source.html">LockFreeHashMap.h</a>&gt;</code></p>
  116. <div class="dynheader">
  117. Inheritance diagram for LockFreeHashMap&lt; Key, Value &gt;:</div>
  118. <div class="dyncontent">
  119. <div class="center">
  120. <img src="class_lock_free_hash_map.png" usemap="#LockFreeHashMap_3C_20Key_2C_20Value_20_3E_map" alt=""/>
  121. <map id="LockFreeHashMap_3C_20Key_2C_20Value_20_3E_map" name="LockFreeHashMap_3C_20Key_2C_20Value_20_3E_map">
  122. <area href="class_non_copyable.html" title="Class that makes another class non-copyable. Usage: Inherit from NonCopyable." alt="NonCopyable" shape="rect" coords="0,0,208,24"/>
  123. </map>
  124. </div></div>
  125. <table class="memberdecls">
  126. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
  127. Classes</h2></td></tr>
  128. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_lock_free_hash_map_1_1_iterator.html">Iterator</a></td></tr>
  129. <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-const iterator. <a href="struct_lock_free_hash_map_1_1_iterator.html#details">More...</a><br /></td></tr>
  130. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  131. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lock_free_hash_map_1_1_key_value.html">KeyValue</a></td></tr>
  132. <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A key / value pair that is inserted in the map. <a href="class_lock_free_hash_map_1_1_key_value.html#details">More...</a><br /></td></tr>
  133. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  134. </table><table class="memberdecls">
  135. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
  136. Public Types</h2></td></tr>
  137. <tr class="memitem:a638496ae9d7758bfb0f12b6e477647dc" id="r_a638496ae9d7758bfb0f12b6e477647dc"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a638496ae9d7758bfb0f12b6e477647dc">MapType</a> = <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt;Key, Value&gt;</td></tr>
  138. <tr class="separator:a638496ae9d7758bfb0f12b6e477647dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
  139. </table><table class="memberdecls">
  140. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
  141. Public Member Functions</h2></td></tr>
  142. <tr class="memitem:a99cc8576eb24e276e64a720f51516d62" id="r_a99cc8576eb24e276e64a720f51516d62"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a99cc8576eb24e276e64a720f51516d62">LockFreeHashMap</a> (<a class="el" href="class_l_f_h_m_allocator.html">LFHMAllocator</a> &amp;inAllocator)</td></tr>
  143. <tr class="memdesc:a99cc8576eb24e276e64a720f51516d62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
  144. <tr class="separator:a99cc8576eb24e276e64a720f51516d62"><td class="memSeparator" colspan="2">&#160;</td></tr>
  145. <tr class="memitem:a9b01ab8548173830e9a1652cd7c16172" id="r_a9b01ab8548173830e9a1652cd7c16172"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9b01ab8548173830e9a1652cd7c16172">~LockFreeHashMap</a> ()</td></tr>
  146. <tr class="separator:a9b01ab8548173830e9a1652cd7c16172"><td class="memSeparator" colspan="2">&#160;</td></tr>
  147. <tr class="memitem:a64add1094aa66c55413b2488e8ae8d16" id="r_a64add1094aa66c55413b2488e8ae8d16"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a64add1094aa66c55413b2488e8ae8d16">Init</a> (<a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> inMaxBuckets)</td></tr>
  148. <tr class="separator:a64add1094aa66c55413b2488e8ae8d16"><td class="memSeparator" colspan="2">&#160;</td></tr>
  149. <tr class="memitem:afe0dc35025cb64372c9aef71ee997a0d" id="r_afe0dc35025cb64372c9aef71ee997a0d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afe0dc35025cb64372c9aef71ee997a0d">Clear</a> ()</td></tr>
  150. <tr class="separator:afe0dc35025cb64372c9aef71ee997a0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  151. <tr class="memitem:ab0b1ca4bac3c00813a024ed4b462e44d" id="r_ab0b1ca4bac3c00813a024ed4b462e44d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab0b1ca4bac3c00813a024ed4b462e44d">GetNumBuckets</a> () const</td></tr>
  152. <tr class="memdesc:ab0b1ca4bac3c00813a024ed4b462e44d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the current amount of buckets that the map is using. <br /></td></tr>
  153. <tr class="separator:ab0b1ca4bac3c00813a024ed4b462e44d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  154. <tr class="memitem:a99097bb01c8c980e4fe1be3bc63c8415" id="r_a99097bb01c8c980e4fe1be3bc63c8415"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a99097bb01c8c980e4fe1be3bc63c8415">GetMaxBuckets</a> () const</td></tr>
  155. <tr class="memdesc:a99097bb01c8c980e4fe1be3bc63c8415"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum amount of buckets that this map supports. <br /></td></tr>
  156. <tr class="separator:a99097bb01c8c980e4fe1be3bc63c8415"><td class="memSeparator" colspan="2">&#160;</td></tr>
  157. <tr class="memitem:a7c6ead3c7440e19213eac4119236964d" id="r_a7c6ead3c7440e19213eac4119236964d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7c6ead3c7440e19213eac4119236964d">SetNumBuckets</a> (<a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> inNumBuckets)</td></tr>
  158. <tr class="separator:a7c6ead3c7440e19213eac4119236964d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  159. <tr class="memitem:a9a758f6a4dbf7bb4e25bac764a948266" id="r_a9a758f6a4dbf7bb4e25bac764a948266"><td class="memTemplParams" colspan="2">template&lt;class... Params&gt; </td></tr>
  160. <tr class="memitem:a9a758f6a4dbf7bb4e25bac764a948266"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="class_lock_free_hash_map_1_1_key_value.html">KeyValue</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a9a758f6a4dbf7bb4e25bac764a948266">Create</a> (<a class="el" href="class_l_f_h_m_allocator_context.html">LFHMAllocatorContext</a> &amp;ioContext, const Key &amp;inKey, <a class="el" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inKeyHash, int inExtraBytes, Params &amp;&amp;... inConstructorParams)</td></tr>
  161. <tr class="separator:a9a758f6a4dbf7bb4e25bac764a948266"><td class="memSeparator" colspan="2">&#160;</td></tr>
  162. <tr class="memitem:abf0f1e866eba5975400db74cc3da6913" id="r_abf0f1e866eba5975400db74cc3da6913"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="class_lock_free_hash_map_1_1_key_value.html">KeyValue</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abf0f1e866eba5975400db74cc3da6913">Find</a> (const Key &amp;inKey, <a class="el" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inKeyHash) const</td></tr>
  163. <tr class="memdesc:abf0f1e866eba5975400db74cc3da6913"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find an element, returns null if not found. <br /></td></tr>
  164. <tr class="separator:abf0f1e866eba5975400db74cc3da6913"><td class="memSeparator" colspan="2">&#160;</td></tr>
  165. <tr class="memitem:ae1a2bd3a51575e8353470750d0ea9f4b" id="r_ae1a2bd3a51575e8353470750d0ea9f4b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae1a2bd3a51575e8353470750d0ea9f4b">ToHandle</a> (const <a class="el" href="class_lock_free_hash_map_1_1_key_value.html">KeyValue</a> *inKeyValue) const</td></tr>
  166. <tr class="memdesc:ae1a2bd3a51575e8353470750d0ea9f4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get convert key value pair to uint32 handle. <br /></td></tr>
  167. <tr class="separator:ae1a2bd3a51575e8353470750d0ea9f4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
  168. <tr class="memitem:a0705a68e432c61be72d5f6fdfffb2d85" id="r_a0705a68e432c61be72d5f6fdfffb2d85"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="class_lock_free_hash_map_1_1_key_value.html">KeyValue</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0705a68e432c61be72d5f6fdfffb2d85">FromHandle</a> (<a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> inHandle) const</td></tr>
  169. <tr class="memdesc:a0705a68e432c61be72d5f6fdfffb2d85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert uint32 handle back to key and value. <br /></td></tr>
  170. <tr class="separator:a0705a68e432c61be72d5f6fdfffb2d85"><td class="memSeparator" colspan="2">&#160;</td></tr>
  171. <tr class="memitem:a483d330f8722f8ad6f6398b1d4d81653" id="r_a483d330f8722f8ad6f6398b1d4d81653"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a483d330f8722f8ad6f6398b1d4d81653">GetAllKeyValues</a> (<a class="el" href="class_array.html">Array</a>&lt; const <a class="el" href="class_lock_free_hash_map_1_1_key_value.html">KeyValue</a> * &gt; &amp;outAll) const</td></tr>
  172. <tr class="memdesc:a483d330f8722f8ad6f6398b1d4d81653"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get all key/value pairs. <br /></td></tr>
  173. <tr class="separator:a483d330f8722f8ad6f6398b1d4d81653"><td class="memSeparator" colspan="2">&#160;</td></tr>
  174. <tr class="memitem:a0ecc7b5f560d02210a707b1099f8b99e" id="r_a0ecc7b5f560d02210a707b1099f8b99e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_lock_free_hash_map_1_1_iterator.html">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0ecc7b5f560d02210a707b1099f8b99e">begin</a> ()</td></tr>
  175. <tr class="separator:a0ecc7b5f560d02210a707b1099f8b99e"><td class="memSeparator" colspan="2">&#160;</td></tr>
  176. <tr class="memitem:af90c81d993eb139aded4c89bff98998d" id="r_af90c81d993eb139aded4c89bff98998d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_lock_free_hash_map_1_1_iterator.html">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af90c81d993eb139aded4c89bff98998d">end</a> ()</td></tr>
  177. <tr class="separator:af90c81d993eb139aded4c89bff98998d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  178. <tr class="inherit_header pub_methods_class_non_copyable"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_class_non_copyable')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_non_copyable.html">NonCopyable</a></td></tr>
  179. <tr class="memitem:a809b6e4ade7ae32f6d248f2a3b783d45 inherit pub_methods_class_non_copyable" id="r_a809b6e4ade7ae32f6d248f2a3b783d45"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#a809b6e4ade7ae32f6d248f2a3b783d45">NonCopyable</a> ()=default</td></tr>
  180. <tr class="separator:a809b6e4ade7ae32f6d248f2a3b783d45 inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2">&#160;</td></tr>
  181. <tr class="memitem:a501d34ffcc34b30de6d541887a901057 inherit pub_methods_class_non_copyable" id="r_a501d34ffcc34b30de6d541887a901057"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#a501d34ffcc34b30de6d541887a901057">NonCopyable</a> (const <a class="el" href="class_non_copyable.html">NonCopyable</a> &amp;)=delete</td></tr>
  182. <tr class="separator:a501d34ffcc34b30de6d541887a901057 inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2">&#160;</td></tr>
  183. <tr class="memitem:aaf9b12dcaae80c9d304df7a941d4e21f inherit pub_methods_class_non_copyable" id="r_aaf9b12dcaae80c9d304df7a941d4e21f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#aaf9b12dcaae80c9d304df7a941d4e21f">operator=</a> (const <a class="el" href="class_non_copyable.html">NonCopyable</a> &amp;)=delete</td></tr>
  184. <tr class="separator:aaf9b12dcaae80c9d304df7a941d4e21f inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2">&#160;</td></tr>
  185. </table><table class="memberdecls">
  186. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
  187. Static Public Attributes</h2></td></tr>
  188. <tr class="memitem:afba2f355a6948c3c97ed5183c0b704e9" id="r_afba2f355a6948c3c97ed5183c0b704e9"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afba2f355a6948c3c97ed5183c0b704e9">cInvalidHandle</a> = <a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>(-1)</td></tr>
  189. <tr class="memdesc:afba2f355a6948c3c97ed5183c0b704e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value of an invalid handle. <br /></td></tr>
  190. <tr class="separator:afba2f355a6948c3c97ed5183c0b704e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
  191. </table>
  192. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  193. <div class="textblock"><div class="compoundTemplParams">template&lt;class Key, class Value&gt;<br />
  194. class LockFreeHashMap&lt; Key, Value &gt;</div><p>Very simple lock free hash map that only allows insertion, retrieval and provides a fixed amount of buckets and fixed storage. Note: This class currently assumes key and value are simple types that need no calls to the destructor. </p>
  195. </div><h2 class="groupheader">Member Typedef Documentation</h2>
  196. <a id="a638496ae9d7758bfb0f12b6e477647dc" name="a638496ae9d7758bfb0f12b6e477647dc"></a>
  197. <h2 class="memtitle"><span class="permalink"><a href="#a638496ae9d7758bfb0f12b6e477647dc">&#9670;&#160;</a></span>MapType</h2>
  198. <div class="memitem">
  199. <div class="memproto">
  200. <div class="memtemplate">
  201. template&lt;class Key , class Value &gt; </div>
  202. <table class="memname">
  203. <tr>
  204. <td class="memname">using <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::MapType = <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt;Key, Value&gt;</td>
  205. </tr>
  206. </table>
  207. </div><div class="memdoc">
  208. </div>
  209. </div>
  210. <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
  211. <a id="a99cc8576eb24e276e64a720f51516d62" name="a99cc8576eb24e276e64a720f51516d62"></a>
  212. <h2 class="memtitle"><span class="permalink"><a href="#a99cc8576eb24e276e64a720f51516d62">&#9670;&#160;</a></span>LockFreeHashMap()</h2>
  213. <div class="memitem">
  214. <div class="memproto">
  215. <div class="memtemplate">
  216. template&lt;class Key , class Value &gt; </div>
  217. <table class="mlabels">
  218. <tr>
  219. <td class="mlabels-left">
  220. <table class="memname">
  221. <tr>
  222. <td class="memname"><a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;<a class="el" href="class_lock_free_hash_map.html">::LockFreeHashMap</a> </td>
  223. <td>(</td>
  224. <td class="paramtype"><a class="el" href="class_l_f_h_m_allocator.html">LFHMAllocator</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inAllocator</em></span></td><td>)</td>
  225. <td></td>
  226. </tr>
  227. </table>
  228. </td>
  229. <td class="mlabels-right">
  230. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
  231. </tr>
  232. </table>
  233. </div><div class="memdoc">
  234. <p>Destructor. </p>
  235. </div>
  236. </div>
  237. <a id="a9b01ab8548173830e9a1652cd7c16172" name="a9b01ab8548173830e9a1652cd7c16172"></a>
  238. <h2 class="memtitle"><span class="permalink"><a href="#a9b01ab8548173830e9a1652cd7c16172">&#9670;&#160;</a></span>~LockFreeHashMap()</h2>
  239. <div class="memitem">
  240. <div class="memproto">
  241. <div class="memtemplate">
  242. template&lt;class Key , class Value &gt; </div>
  243. <table class="memname">
  244. <tr>
  245. <td class="memname"><a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::~<a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a> </td>
  246. <td>(</td>
  247. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  248. <td></td>
  249. </tr>
  250. </table>
  251. </div><div class="memdoc">
  252. </div>
  253. </div>
  254. <h2 class="groupheader">Member Function Documentation</h2>
  255. <a id="a0ecc7b5f560d02210a707b1099f8b99e" name="a0ecc7b5f560d02210a707b1099f8b99e"></a>
  256. <h2 class="memtitle"><span class="permalink"><a href="#a0ecc7b5f560d02210a707b1099f8b99e">&#9670;&#160;</a></span>begin()</h2>
  257. <div class="memitem">
  258. <div class="memproto">
  259. <div class="memtemplate">
  260. template&lt;class Key , class Value &gt; </div>
  261. <table class="memname">
  262. <tr>
  263. <td class="memname"><a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::Iterator <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::begin </td>
  264. <td>(</td>
  265. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  266. <td></td>
  267. </tr>
  268. </table>
  269. </div><div class="memdoc">
  270. <p>Iterate over the map, note that it is not safe to do this in parallel to <a class="el" href="#afe0dc35025cb64372c9aef71ee997a0d">Clear()</a>. It is safe to do this while adding elements to the map, but newly added elements may or may not be returned by the iterator. </p>
  271. </div>
  272. </div>
  273. <a id="afe0dc35025cb64372c9aef71ee997a0d" name="afe0dc35025cb64372c9aef71ee997a0d"></a>
  274. <h2 class="memtitle"><span class="permalink"><a href="#afe0dc35025cb64372c9aef71ee997a0d">&#9670;&#160;</a></span>Clear()</h2>
  275. <div class="memitem">
  276. <div class="memproto">
  277. <div class="memtemplate">
  278. template&lt;class Key , class Value &gt; </div>
  279. <table class="memname">
  280. <tr>
  281. <td class="memname">void <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::Clear </td>
  282. <td>(</td>
  283. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  284. <td></td>
  285. </tr>
  286. </table>
  287. </div><div class="memdoc">
  288. <p>Remove all elements. Note that this cannot happen simultaneously with adding new elements. </p>
  289. </div>
  290. </div>
  291. <a id="a9a758f6a4dbf7bb4e25bac764a948266" name="a9a758f6a4dbf7bb4e25bac764a948266"></a>
  292. <h2 class="memtitle"><span class="permalink"><a href="#a9a758f6a4dbf7bb4e25bac764a948266">&#9670;&#160;</a></span>Create()</h2>
  293. <div class="memitem">
  294. <div class="memproto">
  295. <div class="memtemplate">
  296. template&lt;class Key , class Value &gt; </div>
  297. <div class="memtemplate">
  298. template&lt;class... Params&gt; </div>
  299. <table class="mlabels">
  300. <tr>
  301. <td class="mlabels-left">
  302. <table class="memname">
  303. <tr>
  304. <td class="memname"><a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::KeyValue * <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::Create </td>
  305. <td>(</td>
  306. <td class="paramtype"><a class="el" href="class_l_f_h_m_allocator_context.html">LFHMAllocatorContext</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioContext</em></span>, </td>
  307. </tr>
  308. <tr>
  309. <td class="paramkey"></td>
  310. <td></td>
  311. <td class="paramtype">const Key &amp;</td> <td class="paramname"><span class="paramname"><em>inKey</em></span>, </td>
  312. </tr>
  313. <tr>
  314. <td class="paramkey"></td>
  315. <td></td>
  316. <td class="paramtype"><a class="el" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></td> <td class="paramname"><span class="paramname"><em>inKeyHash</em></span>, </td>
  317. </tr>
  318. <tr>
  319. <td class="paramkey"></td>
  320. <td></td>
  321. <td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>inExtraBytes</em></span>, </td>
  322. </tr>
  323. <tr>
  324. <td class="paramkey"></td>
  325. <td></td>
  326. <td class="paramtype">Params &amp;&amp;...</td> <td class="paramname"><span class="paramname"><em>inConstructorParams</em></span>&#160;)</td>
  327. </tr>
  328. </table>
  329. </td>
  330. <td class="mlabels-right">
  331. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  332. </tr>
  333. </table>
  334. </div><div class="memdoc">
  335. <p>Insert a new element, returns null if map full. Multiple threads can be inserting in the map at the same time. </p>
  336. </div>
  337. </div>
  338. <a id="af90c81d993eb139aded4c89bff98998d" name="af90c81d993eb139aded4c89bff98998d"></a>
  339. <h2 class="memtitle"><span class="permalink"><a href="#af90c81d993eb139aded4c89bff98998d">&#9670;&#160;</a></span>end()</h2>
  340. <div class="memitem">
  341. <div class="memproto">
  342. <div class="memtemplate">
  343. template&lt;class Key , class Value &gt; </div>
  344. <table class="memname">
  345. <tr>
  346. <td class="memname"><a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::Iterator <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::end </td>
  347. <td>(</td>
  348. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  349. <td></td>
  350. </tr>
  351. </table>
  352. </div><div class="memdoc">
  353. </div>
  354. </div>
  355. <a id="abf0f1e866eba5975400db74cc3da6913" name="abf0f1e866eba5975400db74cc3da6913"></a>
  356. <h2 class="memtitle"><span class="permalink"><a href="#abf0f1e866eba5975400db74cc3da6913">&#9670;&#160;</a></span>Find()</h2>
  357. <div class="memitem">
  358. <div class="memproto">
  359. <div class="memtemplate">
  360. template&lt;class Key , class Value &gt; </div>
  361. <table class="mlabels">
  362. <tr>
  363. <td class="mlabels-left">
  364. <table class="memname">
  365. <tr>
  366. <td class="memname">const <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::KeyValue * <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::Find </td>
  367. <td>(</td>
  368. <td class="paramtype">const Key &amp;</td> <td class="paramname"><span class="paramname"><em>inKey</em></span>, </td>
  369. </tr>
  370. <tr>
  371. <td class="paramkey"></td>
  372. <td></td>
  373. <td class="paramtype"><a class="el" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></td> <td class="paramname"><span class="paramname"><em>inKeyHash</em></span>&#160;) const</td>
  374. </tr>
  375. </table>
  376. </td>
  377. <td class="mlabels-right">
  378. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  379. </tr>
  380. </table>
  381. </div><div class="memdoc">
  382. <p>Find an element, returns null if not found. </p>
  383. </div>
  384. </div>
  385. <a id="a0705a68e432c61be72d5f6fdfffb2d85" name="a0705a68e432c61be72d5f6fdfffb2d85"></a>
  386. <h2 class="memtitle"><span class="permalink"><a href="#a0705a68e432c61be72d5f6fdfffb2d85">&#9670;&#160;</a></span>FromHandle()</h2>
  387. <div class="memitem">
  388. <div class="memproto">
  389. <div class="memtemplate">
  390. template&lt;class Key , class Value &gt; </div>
  391. <table class="mlabels">
  392. <tr>
  393. <td class="mlabels-left">
  394. <table class="memname">
  395. <tr>
  396. <td class="memname">const <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::KeyValue * <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::FromHandle </td>
  397. <td>(</td>
  398. <td class="paramtype"><a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a></td> <td class="paramname"><span class="paramname"><em>inHandle</em></span></td><td>)</td>
  399. <td> const</td>
  400. </tr>
  401. </table>
  402. </td>
  403. <td class="mlabels-right">
  404. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  405. </tr>
  406. </table>
  407. </div><div class="memdoc">
  408. <p>Convert uint32 handle back to key and value. </p>
  409. </div>
  410. </div>
  411. <a id="a483d330f8722f8ad6f6398b1d4d81653" name="a483d330f8722f8ad6f6398b1d4d81653"></a>
  412. <h2 class="memtitle"><span class="permalink"><a href="#a483d330f8722f8ad6f6398b1d4d81653">&#9670;&#160;</a></span>GetAllKeyValues()</h2>
  413. <div class="memitem">
  414. <div class="memproto">
  415. <div class="memtemplate">
  416. template&lt;class Key , class Value &gt; </div>
  417. <table class="mlabels">
  418. <tr>
  419. <td class="mlabels-left">
  420. <table class="memname">
  421. <tr>
  422. <td class="memname">void <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::GetAllKeyValues </td>
  423. <td>(</td>
  424. <td class="paramtype"><a class="el" href="class_array.html">Array</a>&lt; const <a class="el" href="class_lock_free_hash_map_1_1_key_value.html">KeyValue</a> * &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>outAll</em></span></td><td>)</td>
  425. <td> const</td>
  426. </tr>
  427. </table>
  428. </td>
  429. <td class="mlabels-right">
  430. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  431. </tr>
  432. </table>
  433. </div><div class="memdoc">
  434. <p>Get all key/value pairs. </p>
  435. </div>
  436. </div>
  437. <a id="a99097bb01c8c980e4fe1be3bc63c8415" name="a99097bb01c8c980e4fe1be3bc63c8415"></a>
  438. <h2 class="memtitle"><span class="permalink"><a href="#a99097bb01c8c980e4fe1be3bc63c8415">&#9670;&#160;</a></span>GetMaxBuckets()</h2>
  439. <div class="memitem">
  440. <div class="memproto">
  441. <div class="memtemplate">
  442. template&lt;class Key , class Value &gt; </div>
  443. <table class="mlabels">
  444. <tr>
  445. <td class="mlabels-left">
  446. <table class="memname">
  447. <tr>
  448. <td class="memname"><a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::GetMaxBuckets </td>
  449. <td>(</td>
  450. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  451. <td> const</td>
  452. </tr>
  453. </table>
  454. </td>
  455. <td class="mlabels-right">
  456. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  457. </tr>
  458. </table>
  459. </div><div class="memdoc">
  460. <p>Get the maximum amount of buckets that this map supports. </p>
  461. </div>
  462. </div>
  463. <a id="ab0b1ca4bac3c00813a024ed4b462e44d" name="ab0b1ca4bac3c00813a024ed4b462e44d"></a>
  464. <h2 class="memtitle"><span class="permalink"><a href="#ab0b1ca4bac3c00813a024ed4b462e44d">&#9670;&#160;</a></span>GetNumBuckets()</h2>
  465. <div class="memitem">
  466. <div class="memproto">
  467. <div class="memtemplate">
  468. template&lt;class Key , class Value &gt; </div>
  469. <table class="mlabels">
  470. <tr>
  471. <td class="mlabels-left">
  472. <table class="memname">
  473. <tr>
  474. <td class="memname"><a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::GetNumBuckets </td>
  475. <td>(</td>
  476. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  477. <td> const</td>
  478. </tr>
  479. </table>
  480. </td>
  481. <td class="mlabels-right">
  482. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  483. </tr>
  484. </table>
  485. </div><div class="memdoc">
  486. <p>Get the current amount of buckets that the map is using. </p>
  487. </div>
  488. </div>
  489. <a id="a64add1094aa66c55413b2488e8ae8d16" name="a64add1094aa66c55413b2488e8ae8d16"></a>
  490. <h2 class="memtitle"><span class="permalink"><a href="#a64add1094aa66c55413b2488e8ae8d16">&#9670;&#160;</a></span>Init()</h2>
  491. <div class="memitem">
  492. <div class="memproto">
  493. <div class="memtemplate">
  494. template&lt;class Key , class Value &gt; </div>
  495. <table class="memname">
  496. <tr>
  497. <td class="memname">void <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::Init </td>
  498. <td>(</td>
  499. <td class="paramtype"><a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a></td> <td class="paramname"><span class="paramname"><em>inMaxBuckets</em></span></td><td>)</td>
  500. <td></td>
  501. </tr>
  502. </table>
  503. </div><div class="memdoc">
  504. <p>Initialization </p><dl class="params"><dt>Parameters</dt><dd>
  505. <table class="params">
  506. <tr><td class="paramname">inMaxBuckets</td><td>Max amount of buckets to use in the hashmap. Must be power of 2. </td></tr>
  507. </table>
  508. </dd>
  509. </dl>
  510. </div>
  511. </div>
  512. <a id="a7c6ead3c7440e19213eac4119236964d" name="a7c6ead3c7440e19213eac4119236964d"></a>
  513. <h2 class="memtitle"><span class="permalink"><a href="#a7c6ead3c7440e19213eac4119236964d">&#9670;&#160;</a></span>SetNumBuckets()</h2>
  514. <div class="memitem">
  515. <div class="memproto">
  516. <div class="memtemplate">
  517. template&lt;class Key , class Value &gt; </div>
  518. <table class="memname">
  519. <tr>
  520. <td class="memname">void <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::SetNumBuckets </td>
  521. <td>(</td>
  522. <td class="paramtype"><a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a></td> <td class="paramname"><span class="paramname"><em>inNumBuckets</em></span></td><td>)</td>
  523. <td></td>
  524. </tr>
  525. </table>
  526. </div><div class="memdoc">
  527. <p>Update the number of buckets. This must be done after clearing the map and cannot be done concurrently with any other operations on the map. Note that the number of buckets can never become bigger than the specified max buckets during initialization and that it must be a power of 2. </p>
  528. </div>
  529. </div>
  530. <a id="ae1a2bd3a51575e8353470750d0ea9f4b" name="ae1a2bd3a51575e8353470750d0ea9f4b"></a>
  531. <h2 class="memtitle"><span class="permalink"><a href="#ae1a2bd3a51575e8353470750d0ea9f4b">&#9670;&#160;</a></span>ToHandle()</h2>
  532. <div class="memitem">
  533. <div class="memproto">
  534. <div class="memtemplate">
  535. template&lt;class Key , class Value &gt; </div>
  536. <table class="mlabels">
  537. <tr>
  538. <td class="mlabels-left">
  539. <table class="memname">
  540. <tr>
  541. <td class="memname"><a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::ToHandle </td>
  542. <td>(</td>
  543. <td class="paramtype">const <a class="el" href="class_lock_free_hash_map_1_1_key_value.html">KeyValue</a> *</td> <td class="paramname"><span class="paramname"><em>inKeyValue</em></span></td><td>)</td>
  544. <td> const</td>
  545. </tr>
  546. </table>
  547. </td>
  548. <td class="mlabels-right">
  549. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  550. </tr>
  551. </table>
  552. </div><div class="memdoc">
  553. <p>Get convert key value pair to uint32 handle. </p>
  554. </div>
  555. </div>
  556. <h2 class="groupheader">Member Data Documentation</h2>
  557. <a id="afba2f355a6948c3c97ed5183c0b704e9" name="afba2f355a6948c3c97ed5183c0b704e9"></a>
  558. <h2 class="memtitle"><span class="permalink"><a href="#afba2f355a6948c3c97ed5183c0b704e9">&#9670;&#160;</a></span>cInvalidHandle</h2>
  559. <div class="memitem">
  560. <div class="memproto">
  561. <div class="memtemplate">
  562. template&lt;class Key , class Value &gt; </div>
  563. <table class="mlabels">
  564. <tr>
  565. <td class="mlabels-left">
  566. <table class="memname">
  567. <tr>
  568. <td class="memname">const <a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> <a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a>&lt; Key, Value &gt;::cInvalidHandle = <a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>(-1)</td>
  569. </tr>
  570. </table>
  571. </td>
  572. <td class="mlabels-right">
  573. <span class="mlabels"><span class="mlabel">static</span></span> </td>
  574. </tr>
  575. </table>
  576. </div><div class="memdoc">
  577. <p>Value of an invalid handle. </p>
  578. </div>
  579. </div>
  580. <hr/>The documentation for this class was generated from the following files:<ul>
  581. <li>Jolt/Core/<a class="el" href="_lock_free_hash_map_8h_source.html">LockFreeHashMap.h</a></li>
  582. <li>Jolt/Core/<a class="el" href="_lock_free_hash_map_8inl_source.html">LockFreeHashMap.inl</a></li>
  583. </ul>
  584. </div><!-- contents -->
  585. </div><!-- doc-content -->
  586. <!-- start footer part -->
  587. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  588. <ul>
  589. <li class="navelem"><a class="el" href="class_lock_free_hash_map.html">LockFreeHashMap</a></li>
  590. <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
  591. </ul>
  592. </div>
  593. </body>
  594. </html>