Files
entt/hashed__string_8hpp_source.html
2020-02-22 15:45:18 +01:00

241 lines
34 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>EnTT: src/entt/core/hashed_string.hpp Source File</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="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.3.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</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_66e9674e8206a335795995fa32a03c91.html">entt</a></li><li class="navelem"><a class="el" href="dir_de8f4e6ba3f54a2a21309f742e93a373.html">core</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">hashed_string.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef ENTT_CORE_HASHED_STRING_HPP</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define ENTT_CORE_HASHED_STRING_HPP</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;../config/config.h&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; </div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceentt.html">entt</a> {</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">namespace </span>internal {</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span>&gt;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">struct </span>fnv1a_traits;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">struct </span>fnv1a_traits&lt;std::uint32_t&gt; {</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">using</span> type = std::uint32_t;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">static</span> constexpr std::uint32_t offset = 2166136261;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">static</span> constexpr std::uint32_t prime = 16777619;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;};</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">struct </span>fnv1a_traits&lt;std::uint64_t&gt; {</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">using</span> type = std::uint64_t;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">static</span> constexpr std::uint64_t offset = 14695981039346656037ull;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">static</span> constexpr std::uint64_t prime = 1099511628211ull;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;};</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;}</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Char&gt;</div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html"> 63</a></span>&#160;<span class="keyword">class </span><a class="code" href="classentt_1_1basic__hashed__string.html">basic_hashed_string</a> {</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">using</span> traits_type = internal::fnv1a_traits&lt;ENTT_ID_TYPE&gt;;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">struct </span>const_wrapper {</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// non-explicit constructor on purpose</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; constexpr const_wrapper(<span class="keyword">const</span> Char *curr) ENTT_NOEXCEPT: str{curr} {}</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> Char *str;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; };</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">// FowlerNollVo hash function v. 1a - the good</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">static</span> constexpr ENTT_ID_TYPE helper(<span class="keyword">const</span> Char *curr) ENTT_NOEXCEPT {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">auto</span> <a class="code" href="classentt_1_1basic__hashed__string.html#afb3a92282e81fb50af66953f39671f3c">value</a> = traits_type::offset;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">while</span>(*curr != 0) {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classentt_1_1basic__hashed__string.html#afb3a92282e81fb50af66953f39671f3c">value</a> = (<a class="code" href="classentt_1_1basic__hashed__string.html#afb3a92282e81fb50af66953f39671f3c">value</a> ^ static_cast&lt;traits_type::type&gt;(*(curr++))) * traits_type::prime;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classentt_1_1basic__hashed__string.html#afb3a92282e81fb50af66953f39671f3c">value</a>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#ad4e8f181e92b9218747ac43fe24c4cbc"> 85</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classentt_1_1basic__hashed__string.html#ad4e8f181e92b9218747ac43fe24c4cbc">value_type</a> = Char;</div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd"> 87</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd">hash_type</a> = ENTT_ID_TYPE;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">template</span>&lt;std::<span class="keywordtype">size_t</span> N&gt;</div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#abbd837edf6b152c7b46bfd619241264c"> 105</a></span>&#160; <span class="keyword">static</span> constexpr <a class="code" href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd">hash_type</a> <a class="code" href="classentt_1_1basic__hashed__string.html#abbd837edf6b152c7b46bfd619241264c">value</a>(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__hashed__string.html#ad4e8f181e92b9218747ac43fe24c4cbc">value_type</a> (&amp;str)[N]) ENTT_NOEXCEPT {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> helper(str);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#a9c29491d20b14d8815229604d3580d3e"> 114</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd">hash_type</a> <a class="code" href="classentt_1_1basic__hashed__string.html#a9c29491d20b14d8815229604d3580d3e">value</a>(const_wrapper wrapper) ENTT_NOEXCEPT {</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> helper(wrapper.str);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#a7ccb9802c4f1077537df9b56e33e1f46"> 124</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd">hash_type</a> <a class="code" href="classentt_1_1basic__hashed__string.html#a7ccb9802c4f1077537df9b56e33e1f46">value</a>(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__hashed__string.html#ad4e8f181e92b9218747ac43fe24c4cbc">value_type</a> *str, std::size_t size) ENTT_NOEXCEPT {</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; ENTT_ID_TYPE partial{traits_type::offset};</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">while</span>(size--) { partial = (partial^(str++)[0])*traits_type::prime; }</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> partial;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; </div>
<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#a2c75763872c028b062701523e0314f29"> 131</a></span>&#160; constexpr <a class="code" href="classentt_1_1basic__hashed__string.html#a2c75763872c028b062701523e0314f29">basic_hashed_string</a>() ENTT_NOEXCEPT</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; : str{<span class="keyword">nullptr</span>}, hash{}</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {}</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">template</span>&lt;std::<span class="keywordtype">size_t</span> N&gt;</div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#aac422f04d11c1e5573f04809c1e1c106"> 150</a></span>&#160; constexpr <a class="code" href="classentt_1_1basic__hashed__string.html#aac422f04d11c1e5573f04809c1e1c106">basic_hashed_string</a>(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__hashed__string.html#ad4e8f181e92b9218747ac43fe24c4cbc">value_type</a> (&amp;curr)[N]) ENTT_NOEXCEPT</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; : str{curr}, hash{helper(curr)}</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {}</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#a7ab5e09f3e552436872bcaaf9ca2c1ac"> 159</a></span>&#160; <span class="keyword">explicit</span> constexpr <a class="code" href="classentt_1_1basic__hashed__string.html#a7ab5e09f3e552436872bcaaf9ca2c1ac">basic_hashed_string</a>(const_wrapper wrapper) ENTT_NOEXCEPT</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; : str{wrapper.str}, hash{helper(wrapper.str)}</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {}</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#a7ef3ad96865551846e584780146d3d24"> 167</a></span>&#160; constexpr <span class="keyword">const</span> <a class="code" href="classentt_1_1basic__hashed__string.html#ad4e8f181e92b9218747ac43fe24c4cbc">value_type</a> * <a class="code" href="classentt_1_1basic__hashed__string.html#a7ef3ad96865551846e584780146d3d24">data</a>() const ENTT_NOEXCEPT {</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> str;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#afb3a92282e81fb50af66953f39671f3c"> 175</a></span>&#160; constexpr <a class="code" href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd">hash_type</a> <a class="code" href="classentt_1_1basic__hashed__string.html#afb3a92282e81fb50af66953f39671f3c">value</a>() const ENTT_NOEXCEPT {</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> hash;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#ad0cc0b27f0dd52a07e25f5014ba426fc"> 180</a></span>&#160; constexpr <span class="keyword">operator</span> <span class="keyword">const</span> <a class="code" href="classentt_1_1basic__hashed__string.html#ad4e8f181e92b9218747ac43fe24c4cbc">value_type</a> *() <span class="keyword">const</span> ENTT_NOEXCEPT { <span class="keywordflow">return</span> <a class="code" href="classentt_1_1basic__hashed__string.html#a7ef3ad96865551846e584780146d3d24">data</a>(); }</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; </div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#aa2009a1ac648d8bdaeac642a6476f2bd"> 186</a></span>&#160; constexpr <span class="keyword">operator</span> <a class="code" href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd">hash_type</a>() const ENTT_NOEXCEPT { <span class="keywordflow">return</span> <a class="code" href="classentt_1_1basic__hashed__string.html#afb3a92282e81fb50af66953f39671f3c">value</a>(); }</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; </div>
<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classentt_1_1basic__hashed__string.html#a51311d6903443296ce076536df2b46da"> 193</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classentt_1_1basic__hashed__string.html#a51311d6903443296ce076536df2b46da">operator==</a>(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__hashed__string.html">basic_hashed_string</a> &amp;other) <span class="keyword">const</span> ENTT_NOEXCEPT {</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> hash == other.hash;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; </div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keyword">const</span> <a class="code" href="classentt_1_1basic__hashed__string.html#ad4e8f181e92b9218747ac43fe24c4cbc">value_type</a> *str;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd">hash_type</a> hash;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;};</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; </div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Char, std::<span class="keywordtype">size_t</span> N&gt;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<a class="code" href="namespaceentt.html#a32ab4306d014ba95869e88be161145b0">basic_hashed_string</a>(<span class="keyword">const</span> Char (&amp;str)[N]) ENTT_NOEXCEPT</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;-&gt; basic_hashed_string&lt;Char&gt;;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; </div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; </div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Char&gt;</div>
<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="namespaceentt.html#a1a211752d12273a08015c524133e27c3"> 226</a></span>&#160;constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceentt.html#a1a211752d12273a08015c524133e27c3">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__hashed__string.html">basic_hashed_string&lt;Char&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classentt_1_1basic__hashed__string.html">basic_hashed_string&lt;Char&gt;</a> &amp;rhs) ENTT_NOEXCEPT {</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> !(lhs == rhs);</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;}</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; </div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="namespaceentt.html#a8f9dd22ce26cd7913a294b3fd520649b"> 232</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classentt_1_1basic__hashed__string.html">hashed_string</a> = <a class="code" href="classentt_1_1basic__hashed__string.html">basic_hashed_string&lt;char&gt;</a>;</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; </div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="namespaceentt.html#af2768719b1f5967caf5836b2656d0ed6"> 236</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classentt_1_1basic__hashed__string.html">hashed_wstring</a> = <a class="code" href="classentt_1_1basic__hashed__string.html">basic_hashed_string&lt;wchar_t&gt;</a>;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; </div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;constexpr <a class="code" href="classentt_1_1basic__hashed__string.html">entt::hashed_string</a> <span class="keyword">operator</span><span class="stringliteral">&quot;&quot;</span> ENTT_HS_SUFFIX(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, std::size_t) ENTT_NOEXCEPT {</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classentt_1_1basic__hashed__string.html">entt::hashed_string</a>{str};</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;}</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; </div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;constexpr <a class="code" href="classentt_1_1basic__hashed__string.html">entt::hashed_wstring</a> <span class="keyword">operator</span><span class="stringliteral">&quot;&quot;</span> ENTT_HWS_SUFFIX(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span> *str, std::size_t) ENTT_NOEXCEPT {</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classentt_1_1basic__hashed__string.html">entt::hashed_wstring</a>{str};</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;}</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; </div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; </div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_ad4e8f181e92b9218747ac43fe24c4cbc"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#ad4e8f181e92b9218747ac43fe24c4cbc">entt::basic_hashed_string::value_type</a></div><div class="ttdeci">Char value_type</div><div class="ttdoc">Character type.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00085">hashed_string.hpp:85</a></div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_abbd837edf6b152c7b46bfd619241264c"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#abbd837edf6b152c7b46bfd619241264c">entt::basic_hashed_string::value</a></div><div class="ttdeci">static constexpr hash_type value(const value_type(&amp;str)[N]) ENTT_NOEXCEPT</div><div class="ttdoc">Returns directly the numeric representation of a string.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00105">hashed_string.hpp:105</a></div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_a51311d6903443296ce076536df2b46da"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#a51311d6903443296ce076536df2b46da">entt::basic_hashed_string::operator==</a></div><div class="ttdeci">constexpr bool operator==(const basic_hashed_string &amp;other) const ENTT_NOEXCEPT</div><div class="ttdoc">Compares two hashed strings.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00193">hashed_string.hpp:193</a></div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_aac422f04d11c1e5573f04809c1e1c106"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#aac422f04d11c1e5573f04809c1e1c106">entt::basic_hashed_string::basic_hashed_string</a></div><div class="ttdeci">constexpr basic_hashed_string(const value_type(&amp;curr)[N]) ENTT_NOEXCEPT</div><div class="ttdoc">Constructs a hashed string from an array of const characters.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00150">hashed_string.hpp:150</a></div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_a2c75763872c028b062701523e0314f29"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#a2c75763872c028b062701523e0314f29">entt::basic_hashed_string::basic_hashed_string</a></div><div class="ttdeci">constexpr basic_hashed_string() ENTT_NOEXCEPT</div><div class="ttdoc">Constructs an empty hashed string.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00131">hashed_string.hpp:131</a></div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html">entt::basic_hashed_string</a></div><div class="ttdoc">Zero overhead unique identifier.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00063">hashed_string.hpp:63</a></div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_a7ee7dca5383cf4507949dc1261ca5efd"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd">entt::basic_hashed_string::hash_type</a></div><div class="ttdeci">ENTT_ID_TYPE hash_type</div><div class="ttdoc">Unsigned integer type.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00087">hashed_string.hpp:87</a></div></div>
<div class="ttc" id="anamespaceentt_html"><div class="ttname"><a href="namespaceentt.html">entt</a></div><div class="ttdoc">EnTT default namespace.</div><div class="ttdef"><b>Definition:</b> <a href="algorithm_8hpp_source.html#l00013">algorithm.hpp:13</a></div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_a7ef3ad96865551846e584780146d3d24"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#a7ef3ad96865551846e584780146d3d24">entt::basic_hashed_string::data</a></div><div class="ttdeci">constexpr const value_type * data() const ENTT_NOEXCEPT</div><div class="ttdoc">Returns the human-readable representation of a hashed string.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00167">hashed_string.hpp:167</a></div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_a9c29491d20b14d8815229604d3580d3e"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#a9c29491d20b14d8815229604d3580d3e">entt::basic_hashed_string::value</a></div><div class="ttdeci">static hash_type value(const_wrapper wrapper) ENTT_NOEXCEPT</div><div class="ttdoc">Returns directly the numeric representation of a string.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00114">hashed_string.hpp:114</a></div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_afb3a92282e81fb50af66953f39671f3c"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#afb3a92282e81fb50af66953f39671f3c">entt::basic_hashed_string::value</a></div><div class="ttdeci">constexpr hash_type value() const ENTT_NOEXCEPT</div><div class="ttdoc">Returns the numeric representation of a hashed string.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00175">hashed_string.hpp:175</a></div></div>
<div class="ttc" id="anamespaceentt_html_a1a211752d12273a08015c524133e27c3"><div class="ttname"><a href="namespaceentt.html#a1a211752d12273a08015c524133e27c3">entt::operator!=</a></div><div class="ttdeci">constexpr bool operator!=(const basic_hashed_string&lt; Char &gt; &amp;lhs, const basic_hashed_string&lt; Char &gt; &amp;rhs) ENTT_NOEXCEPT</div><div class="ttdoc">Compares two hashed strings.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00226">hashed_string.hpp:226</a></div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_a7ab5e09f3e552436872bcaaf9ca2c1ac"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#a7ab5e09f3e552436872bcaaf9ca2c1ac">entt::basic_hashed_string::basic_hashed_string</a></div><div class="ttdeci">constexpr basic_hashed_string(const_wrapper wrapper) ENTT_NOEXCEPT</div><div class="ttdoc">Explicit constructor on purpose to avoid constructing a hashed string directly from a const value_typ...</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00159">hashed_string.hpp:159</a></div></div>
<div class="ttc" id="anamespaceentt_html_a32ab4306d014ba95869e88be161145b0"><div class="ttname"><a href="namespaceentt.html#a32ab4306d014ba95869e88be161145b0">entt::basic_hashed_string</a></div><div class="ttdeci">basic_hashed_string(const Char(&amp;str)[N]) ENTT_NOEXCEPT -&gt; basic_hashed_string&lt; Char &gt;</div><div class="ttdoc">Deduction guide.</div></div>
<div class="ttc" id="aclassentt_1_1basic__hashed__string_html_a7ccb9802c4f1077537df9b56e33e1f46"><div class="ttname"><a href="classentt_1_1basic__hashed__string.html#a7ccb9802c4f1077537df9b56e33e1f46">entt::basic_hashed_string::value</a></div><div class="ttdeci">static hash_type value(const value_type *str, std::size_t size) ENTT_NOEXCEPT</div><div class="ttdoc">Returns directly the numeric representation of a string view.</div><div class="ttdef"><b>Definition:</b> <a href="hashed__string_8hpp_source.html#l00124">hashed_string.hpp:124</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>