Files
entt/emitter_8hpp_source.html
2025-03-19 15:49:42 +01:00

260 lines
35 KiB
HTML

<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>EnTT: src/entt/signal/emitter.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>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.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-awesome.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 id="projectrow">
<td id="projectalign">
<div id="projectname">EnTT<span id="projectnumber">&#160;3.15.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search',false);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</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_a53318306f6ac0f7fe657839abd543ab.html">signal</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">emitter.hpp</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef ENTT_SIGNAL_EMITTER_HPP</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define ENTT_SIGNAL_EMITTER_HPP</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &quot;../container/dense_map.hpp&quot;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &quot;../core/compressed_pair.hpp&quot;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;../core/fwd.hpp&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &quot;../core/type_info.hpp&quot;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &quot;../core/utility.hpp&quot;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &quot;fwd.hpp&quot;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceentt.html">entt</a> {</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Derived, <span class="keyword">typename</span> Allocator&gt;</div>
<div class="foldopen" id="foldopen00036" data-start="{" data-end="};">
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html"> 36</a></span><span class="keyword">class </span><a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a> {</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">using </span>key_type = <a class="code hl_typedef" href="namespaceentt.html#a620d583c0e6d64acf3d394524bb72303">id_type</a>;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">using </span>mapped_type = std::function&lt;void(<span class="keywordtype">void</span> *)&gt;;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">using </span>alloc_traits = std::allocator_traits&lt;Allocator&gt;;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">using </span>container_allocator = <span class="keyword">typename</span> alloc_traits::template rebind_alloc&lt;std::pair&lt;const key_type, mapped_type&gt;&gt;;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">using </span>container_type = <a class="code hl_class" href="classentt_1_1dense__map.html">dense_map&lt;key_type, mapped_type, identity, std::equal_to&lt;&gt;</a>, container_allocator&gt;;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#a0d22ffe04a17ac2cdd0a216dd17e3b5d"> 46</a></span> <span class="keyword">using </span><a class="code hl_typedef" href="classentt_1_1emitter.html#a0d22ffe04a17ac2cdd0a216dd17e3b5d">allocator_type</a> = Allocator;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#aa72c6b30d4d14c1b954f7ebed3a4f123"> 48</a></span> <span class="keyword">using </span><a class="code hl_typedef" href="classentt_1_1emitter.html#aa72c6b30d4d14c1b954f7ebed3a4f123">size_type</a> = std::size_t;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span></div>
<div class="foldopen" id="foldopen00051" data-start="{" data-end="}">
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9"> 51</a></span> <a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a>()</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> : <a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a>{<a class="code hl_typedef" href="classentt_1_1emitter.html#a0d22ffe04a17ac2cdd0a216dd17e3b5d">allocator_type</a>{}} {}</div>
</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span></div>
<div class="foldopen" id="foldopen00058" data-start="{" data-end="}">
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#a3e03b43a4239091637f18f63645c23a3"> 58</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="classentt_1_1emitter.html#a3e03b43a4239091637f18f63645c23a3">emitter</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="classentt_1_1emitter.html#a0d22ffe04a17ac2cdd0a216dd17e3b5d">allocator_type</a> &amp;allocator)</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> : handlers{allocator, allocator} {}</div>
</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#aadc449fbe689da0e4b0042de805a4a11"> 62</a></span> <a class="code hl_function" href="classentt_1_1emitter.html#aadc449fbe689da0e4b0042de805a4a11">emitter</a>(<span class="keyword">const</span> <a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a> &amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span></div>
<div class="foldopen" id="foldopen00068" data-start="{" data-end="}">
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#a351058758b1fc6840c467a10fd2912c4"> 68</a></span> <a class="code hl_function" href="classentt_1_1emitter.html#a351058758b1fc6840c467a10fd2912c4">emitter</a>(<a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a> &amp;&amp;other) noexcept</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> : handlers{std::move(other.handlers)} {}</div>
</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span></div>
<div class="foldopen" id="foldopen00076" data-start="{" data-end="}">
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#ad6eb001ae6ca77ecc0e78db86b9b5aa8"> 76</a></span> <a class="code hl_function" href="classentt_1_1emitter.html#ad6eb001ae6ca77ecc0e78db86b9b5aa8">emitter</a>(<a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a> &amp;&amp;other, <span class="keyword">const</span> <a class="code hl_typedef" href="classentt_1_1emitter.html#a0d22ffe04a17ac2cdd0a216dd17e3b5d">allocator_type</a> &amp;allocator)</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> : handlers{container_type{std::move(other.handlers.first()), allocator}, allocator} {</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> ENTT_ASSERT(alloc_traits::is_always_equal::value || handlers.second() == other.handlers.second(), <span class="stringliteral">&quot;Copying an emitter is not allowed&quot;</span>);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> }</div>
</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span></div>
<div class="foldopen" id="foldopen00082" data-start="{" data-end="}">
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#ae5dd15e29f22f081b59718866e481aba"> 82</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classentt_1_1emitter.html#ae5dd15e29f22f081b59718866e481aba">~emitter</a>() {</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">static_assert</span>(std::is_base_of_v&lt;emitter&lt;Derived, Allocator&gt;, Derived&gt;, <span class="stringliteral">&quot;Invalid emitter type&quot;</span>);</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> }</div>
</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#a0677221836c6d2625c982d381cc4702f"> 90</a></span> <a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a> &amp;<a class="code hl_function" href="classentt_1_1emitter.html#a0677221836c6d2625c982d381cc4702f">operator=</a>(<span class="keyword">const</span> <a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a> &amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span></div>
<div class="foldopen" id="foldopen00097" data-start="{" data-end="}">
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#a3cf6cad201e76ebbc43d426518928501"> 97</a></span> <a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a> &amp;<a class="code hl_function" href="classentt_1_1emitter.html#a3cf6cad201e76ebbc43d426518928501">operator=</a>(<a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a> &amp;&amp;other) <span class="keyword">noexcept</span> {</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> ENTT_ASSERT(alloc_traits::is_always_equal::value || handlers.second() == other.handlers.second(), <span class="stringliteral">&quot;Copying an emitter is not allowed&quot;</span>);</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <a class="code hl_function" href="classentt_1_1emitter.html#ab5a2f96dfb9dfb780d2b4c4e328174d1">swap</a>(other);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span></div>
<div class="foldopen" id="foldopen00107" data-start="{" data-end="}">
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#ab5a2f96dfb9dfb780d2b4c4e328174d1"> 107</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classentt_1_1emitter.html#ab5a2f96dfb9dfb780d2b4c4e328174d1">swap</a>(<a class="code hl_function" href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">emitter</a> &amp;other) <span class="keyword">noexcept</span> {</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">using </span>std::swap;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <a class="code hl_function" href="classentt_1_1emitter.html#ab5a2f96dfb9dfb780d2b4c4e328174d1">swap</a>(handlers, other.handlers);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> }</div>
</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span></div>
<div class="foldopen" id="foldopen00116" data-start="{" data-end="}">
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#ae7a4a02a33a8b4c0fb6014f32a793dd9"> 116</a></span> [[nodiscard]] <span class="keyword">constexpr</span> <a class="code hl_typedef" href="classentt_1_1emitter.html#a0d22ffe04a17ac2cdd0a216dd17e3b5d">allocator_type</a> <a class="code hl_function" href="classentt_1_1emitter.html#ae7a4a02a33a8b4c0fb6014f32a793dd9">get_allocator</a>() const noexcept {</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">return</span> handlers.second();</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Type&gt;</div>
<div class="foldopen" id="foldopen00126" data-start="{" data-end="}">
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#af8d32b1f07b24db8b1b1fbb20dda89c2"> 126</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classentt_1_1emitter.html#af8d32b1f07b24db8b1b1fbb20dda89c2">publish</a>(Type value) {</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <span class="keyword">auto</span> <span class="keywordtype">id</span> = <a class="code hl_function" href="namespaceentt.html#adb9682d476edbbe4434680363f9c0eb3">type_id&lt;Type&gt;</a>().hash(); handlers.first().<a class="code hl_function" href="classentt_1_1emitter.html#a6bced239a3a07f86dc759ebc1a71813a">contains</a>(<span class="keywordtype">id</span>)) {</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> handlers.first()[id](&amp;value);</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> }</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> }</div>
</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Type&gt;</div>
<div class="foldopen" id="foldopen00138" data-start="{" data-end="}">
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#ad620441c088f7e4d1cc4f852f4ec4bad"> 138</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classentt_1_1emitter.html#ad620441c088f7e4d1cc4f852f4ec4bad">on</a>(std::function&lt;<span class="keywordtype">void</span>(Type &amp;, Derived &amp;)&gt; func) {</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> handlers.first().insert_or_assign(<a class="code hl_function" href="namespaceentt.html#adb9682d476edbbe4434680363f9c0eb3">type_id&lt;Type&gt;</a>().hash(), [func = std::move(func), <span class="keyword">this</span>](<span class="keywordtype">void</span> *value) {</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> func(*<span class="keyword">static_cast&lt;</span>Type *<span class="keyword">&gt;</span>(value), <span class="keyword">static_cast&lt;</span>Derived &amp;<span class="keyword">&gt;</span>(*<span class="keyword">this</span>));</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> });</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> }</div>
</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Type&gt;</div>
<div class="foldopen" id="foldopen00149" data-start="{" data-end="}">
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#aa1c5ac5f75740ebb9fa3eb9f533ba23c"> 149</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classentt_1_1emitter.html#aa1c5ac5f75740ebb9fa3eb9f533ba23c">erase</a>() {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> handlers.first().erase(<a class="code hl_struct" href="structentt_1_1type__hash.html">type_hash</a>&lt;std::remove_cv_t&lt;std::remove_reference_t&lt;Type&gt;&gt;&gt;::value());</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> }</div>
</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span></div>
<div class="foldopen" id="foldopen00154" data-start="{" data-end="}">
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#a5222e50d997a70afcdfc678a26d59ca4"> 154</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classentt_1_1emitter.html#a5222e50d997a70afcdfc678a26d59ca4">clear</a>() noexcept {</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> handlers.first().clear();</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> }</div>
</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Type&gt;</div>
<div class="foldopen" id="foldopen00164" data-start="{" data-end="}">
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#a6bced239a3a07f86dc759ebc1a71813a"> 164</a></span> [[nodiscard]] <span class="keywordtype">bool</span> <a class="code hl_function" href="classentt_1_1emitter.html#a6bced239a3a07f86dc759ebc1a71813a">contains</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">return</span> handlers.first().contains(<a class="code hl_struct" href="structentt_1_1type__hash.html">type_hash</a>&lt;std::remove_cv_t&lt;std::remove_reference_t&lt;Type&gt;&gt;&gt;::value());</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> }</div>
</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span></div>
<div class="foldopen" id="foldopen00172" data-start="{" data-end="}">
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"><a class="line" href="classentt_1_1emitter.html#ac9fe97c008e4923e4e784faddc9f4eca"> 172</a></span> [[nodiscard]] <span class="keywordtype">bool</span> <a class="code hl_function" href="classentt_1_1emitter.html#ac9fe97c008e4923e4e784faddc9f4eca">empty</a>() const noexcept {</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">return</span> handlers.first().empty();</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> }</div>
</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <a class="code hl_class" href="classentt_1_1compressed__pair.html">compressed_pair&lt;container_type, allocator_type&gt;</a> handlers;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span>};</div>
</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span>} <span class="comment">// namespace entt</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclassentt_1_1compressed__pair_html"><div class="ttname"><a href="classentt_1_1compressed__pair.html">entt::compressed_pair</a></div><div class="ttdoc">A compressed pair.</div><div class="ttdef"><b>Definition</b> <a href="compressed__pair_8hpp_source.html#l00085">compressed_pair.hpp:87</a></div></div>
<div class="ttc" id="aclassentt_1_1dense__map_html"><div class="ttname"><a href="classentt_1_1dense__map.html">entt::dense_map</a></div><div class="ttdoc">Associative container for key-value pairs with unique keys.</div><div class="ttdef"><b>Definition</b> <a href="dense__map_8hpp_source.html#l00260">dense_map.hpp:260</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_a0677221836c6d2625c982d381cc4702f"><div class="ttname"><a href="classentt_1_1emitter.html#a0677221836c6d2625c982d381cc4702f">entt::emitter::operator=</a></div><div class="ttdeci">emitter &amp; operator=(const emitter &amp;)=delete</div><div class="ttdoc">Default copy assignment operator, deleted on purpose.</div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_a0d22ffe04a17ac2cdd0a216dd17e3b5d"><div class="ttname"><a href="classentt_1_1emitter.html#a0d22ffe04a17ac2cdd0a216dd17e3b5d">entt::emitter::allocator_type</a></div><div class="ttdeci">Allocator allocator_type</div><div class="ttdoc">Allocator type.</div><div class="ttdef"><b>Definition</b> <a href="#l00046">emitter.hpp:46</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_a351058758b1fc6840c467a10fd2912c4"><div class="ttname"><a href="classentt_1_1emitter.html#a351058758b1fc6840c467a10fd2912c4">entt::emitter::emitter</a></div><div class="ttdeci">emitter(emitter &amp;&amp;other) noexcept</div><div class="ttdoc">Move constructor.</div><div class="ttdef"><b>Definition</b> <a href="#l00068">emitter.hpp:68</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_a3cf6cad201e76ebbc43d426518928501"><div class="ttname"><a href="classentt_1_1emitter.html#a3cf6cad201e76ebbc43d426518928501">entt::emitter::operator=</a></div><div class="ttdeci">emitter &amp; operator=(emitter &amp;&amp;other) noexcept</div><div class="ttdoc">Move assignment operator.</div><div class="ttdef"><b>Definition</b> <a href="#l00097">emitter.hpp:97</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_a3e03b43a4239091637f18f63645c23a3"><div class="ttname"><a href="classentt_1_1emitter.html#a3e03b43a4239091637f18f63645c23a3">entt::emitter::emitter</a></div><div class="ttdeci">emitter(const allocator_type &amp;allocator)</div><div class="ttdoc">Constructs an emitter with a given allocator.</div><div class="ttdef"><b>Definition</b> <a href="#l00058">emitter.hpp:58</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_a5222e50d997a70afcdfc678a26d59ca4"><div class="ttname"><a href="classentt_1_1emitter.html#a5222e50d997a70afcdfc678a26d59ca4">entt::emitter::clear</a></div><div class="ttdeci">void clear() noexcept</div><div class="ttdoc">Disconnects all the listeners.</div><div class="ttdef"><b>Definition</b> <a href="#l00154">emitter.hpp:154</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_a685882e0f6b442759dd109f88e5b18a9"><div class="ttname"><a href="classentt_1_1emitter.html#a685882e0f6b442759dd109f88e5b18a9">entt::emitter::emitter</a></div><div class="ttdeci">emitter()</div><div class="ttdoc">Default constructor.</div><div class="ttdef"><b>Definition</b> <a href="#l00051">emitter.hpp:51</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_a6bced239a3a07f86dc759ebc1a71813a"><div class="ttname"><a href="classentt_1_1emitter.html#a6bced239a3a07f86dc759ebc1a71813a">entt::emitter::contains</a></div><div class="ttdeci">bool contains() const</div><div class="ttdoc">Checks if there are listeners registered for the specific event.</div><div class="ttdef"><b>Definition</b> <a href="#l00164">emitter.hpp:164</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_aa1c5ac5f75740ebb9fa3eb9f533ba23c"><div class="ttname"><a href="classentt_1_1emitter.html#aa1c5ac5f75740ebb9fa3eb9f533ba23c">entt::emitter::erase</a></div><div class="ttdeci">void erase()</div><div class="ttdoc">Disconnects a listener from the event emitter.</div><div class="ttdef"><b>Definition</b> <a href="#l00149">emitter.hpp:149</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_aa72c6b30d4d14c1b954f7ebed3a4f123"><div class="ttname"><a href="classentt_1_1emitter.html#aa72c6b30d4d14c1b954f7ebed3a4f123">entt::emitter::size_type</a></div><div class="ttdeci">std::size_t size_type</div><div class="ttdoc">Unsigned integer type.</div><div class="ttdef"><b>Definition</b> <a href="#l00048">emitter.hpp:48</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_aadc449fbe689da0e4b0042de805a4a11"><div class="ttname"><a href="classentt_1_1emitter.html#aadc449fbe689da0e4b0042de805a4a11">entt::emitter::emitter</a></div><div class="ttdeci">emitter(const emitter &amp;)=delete</div><div class="ttdoc">Default copy constructor, deleted on purpose.</div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_ab5a2f96dfb9dfb780d2b4c4e328174d1"><div class="ttname"><a href="classentt_1_1emitter.html#ab5a2f96dfb9dfb780d2b4c4e328174d1">entt::emitter::swap</a></div><div class="ttdeci">void swap(emitter &amp;other) noexcept</div><div class="ttdoc">Exchanges the contents with those of a given emitter.</div><div class="ttdef"><b>Definition</b> <a href="#l00107">emitter.hpp:107</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_ac9fe97c008e4923e4e784faddc9f4eca"><div class="ttname"><a href="classentt_1_1emitter.html#ac9fe97c008e4923e4e784faddc9f4eca">entt::emitter::empty</a></div><div class="ttdeci">bool empty() const noexcept</div><div class="ttdoc">Checks if there are listeners registered with the event emitter.</div><div class="ttdef"><b>Definition</b> <a href="#l00172">emitter.hpp:172</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_ad620441c088f7e4d1cc4f852f4ec4bad"><div class="ttname"><a href="classentt_1_1emitter.html#ad620441c088f7e4d1cc4f852f4ec4bad">entt::emitter::on</a></div><div class="ttdeci">void on(std::function&lt; void(Type &amp;, Derived &amp;)&gt; func)</div><div class="ttdoc">Registers a listener with the event emitter.</div><div class="ttdef"><b>Definition</b> <a href="#l00138">emitter.hpp:138</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_ad6eb001ae6ca77ecc0e78db86b9b5aa8"><div class="ttname"><a href="classentt_1_1emitter.html#ad6eb001ae6ca77ecc0e78db86b9b5aa8">entt::emitter::emitter</a></div><div class="ttdeci">emitter(emitter &amp;&amp;other, const allocator_type &amp;allocator)</div><div class="ttdoc">Allocator-extended move constructor.</div><div class="ttdef"><b>Definition</b> <a href="#l00076">emitter.hpp:76</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_ae5dd15e29f22f081b59718866e481aba"><div class="ttname"><a href="classentt_1_1emitter.html#ae5dd15e29f22f081b59718866e481aba">entt::emitter::~emitter</a></div><div class="ttdeci">virtual ~emitter()</div><div class="ttdoc">Default destructor.</div><div class="ttdef"><b>Definition</b> <a href="#l00082">emitter.hpp:82</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_ae7a4a02a33a8b4c0fb6014f32a793dd9"><div class="ttname"><a href="classentt_1_1emitter.html#ae7a4a02a33a8b4c0fb6014f32a793dd9">entt::emitter::get_allocator</a></div><div class="ttdeci">constexpr allocator_type get_allocator() const noexcept</div><div class="ttdoc">Returns the associated allocator.</div><div class="ttdef"><b>Definition</b> <a href="#l00116">emitter.hpp:116</a></div></div>
<div class="ttc" id="aclassentt_1_1emitter_html_af8d32b1f07b24db8b1b1fbb20dda89c2"><div class="ttname"><a href="classentt_1_1emitter.html#af8d32b1f07b24db8b1b1fbb20dda89c2">entt::emitter::publish</a></div><div class="ttdeci">void publish(Type value)</div><div class="ttdoc">Publishes a given event.</div><div class="ttdef"><b>Definition</b> <a href="#l00126">emitter.hpp:126</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="dense__map_8hpp_source.html#l00022">dense_map.hpp:22</a></div></div>
<div class="ttc" id="anamespaceentt_html_a620d583c0e6d64acf3d394524bb72303"><div class="ttname"><a href="namespaceentt.html#a620d583c0e6d64acf3d394524bb72303">entt::id_type</a></div><div class="ttdeci">std::uint32_t id_type</div><div class="ttdoc">Alias declaration for type identifiers.</div><div class="ttdef"><b>Definition</b> <a href="core_2fwd_8hpp_source.html#l00029">fwd.hpp:29</a></div></div>
<div class="ttc" id="anamespaceentt_html_adb9682d476edbbe4434680363f9c0eb3"><div class="ttname"><a href="namespaceentt.html#adb9682d476edbbe4434680363f9c0eb3">entt::type_id</a></div><div class="ttdeci">const type_info &amp; type_id() noexcept</div><div class="ttdoc">Returns the type info object associated to a given type.</div><div class="ttdef"><b>Definition</b> <a href="type__info_8hpp_source.html#l00251">type_info.hpp:251</a></div></div>
<div class="ttc" id="astructentt_1_1type__hash_html"><div class="ttname"><a href="structentt_1_1type__hash.html">entt::type_hash</a></div><div class="ttdoc">Type hash.</div><div class="ttdef"><b>Definition</b> <a href="type__info_8hpp_source.html#l00092">type_info.hpp:92</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2
</small></address>
</div><!-- doc-content -->
</body>
</html>