Files
entt/classentt_1_1Registry.html
2018-07-10 16:37:27 +02:00

3225 lines
184 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>entt: entt::Registry&lt; Entity &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">entt
&#160;<span id="projectnumber">2.7.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceentt.html">entt</a></li><li class="navelem"><a class="el" href="classentt_1_1Registry.html">Registry</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classentt_1_1Registry-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">entt::Registry&lt; Entity &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Fast and reliable entity-component system.
<a href="classentt_1_1Registry.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="registry_8hpp_source.html">registry.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:ad434a1920dd2c6a9a31ab482e2f29038"><td class="memItemLeft" align="right" valign="top"><a id="ad434a1920dd2c6a9a31ab482e2f29038"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> = typename traits_type::entity_type</td></tr>
<tr class="memdesc:ad434a1920dd2c6a9a31ab482e2f29038"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:ad434a1920dd2c6a9a31ab482e2f29038"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82c8996277034df5e72b5f30a70ebb2d"><td class="memItemLeft" align="right" valign="top"><a id="a82c8996277034df5e72b5f30a70ebb2d"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a82c8996277034df5e72b5f30a70ebb2d">version_type</a> = typename traits_type::version_type</td></tr>
<tr class="memdesc:a82c8996277034df5e72b5f30a70ebb2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying version type. <br /></td></tr>
<tr class="separator:a82c8996277034df5e72b5f30a70ebb2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a741ffda6e06838c5593ba97adc7658e2"><td class="memItemLeft" align="right" valign="top"><a id="a741ffda6e06838c5593ba97adc7658e2"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a> = std::size_t</td></tr>
<tr class="memdesc:a741ffda6e06838c5593ba97adc7658e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:a741ffda6e06838c5593ba97adc7658e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a357cfdc1b3c5abc7a36e8eddbd6ce5c7"><td class="memItemLeft" align="right" valign="top"><a id="a357cfdc1b3c5abc7a36e8eddbd6ce5c7"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a357cfdc1b3c5abc7a36e8eddbd6ce5c7">tag_type</a> = typename <a class="el" href="classentt_1_1Family.html#a263330fe09b437d3d91b8769f6a9fc77">tag_family::family_type</a></td></tr>
<tr class="memdesc:a357cfdc1b3c5abc7a36e8eddbd6ce5c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:a357cfdc1b3c5abc7a36e8eddbd6ce5c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefd07a0cdff88ebf1e35e531d58c3077"><td class="memItemLeft" align="right" valign="top"><a id="aefd07a0cdff88ebf1e35e531d58c3077"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aefd07a0cdff88ebf1e35e531d58c3077">component_type</a> = typename <a class="el" href="classentt_1_1Family.html#a263330fe09b437d3d91b8769f6a9fc77">component_family::family_type</a></td></tr>
<tr class="memdesc:aefd07a0cdff88ebf1e35e531d58c3077"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:aefd07a0cdff88ebf1e35e531d58c3077"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada8da3c42b6f37209255eef008581b0b"><td class="memItemLeft" align="right" valign="top"><a id="ada8da3c42b6f37209255eef008581b0b"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#ada8da3c42b6f37209255eef008581b0b">sink_type</a> = typename signal_type::sink_type</td></tr>
<tr class="memdesc:ada8da3c42b6f37209255eef008581b0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of sink for the given component. <br /></td></tr>
<tr class="separator:ada8da3c42b6f37209255eef008581b0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab5022bf3ac71d209cb9b85e686324f28"><td class="memItemLeft" align="right" valign="top"><a id="ab5022bf3ac71d209cb9b85e686324f28"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#ab5022bf3ac71d209cb9b85e686324f28">Registry</a> ()=default</td></tr>
<tr class="memdesc:ab5022bf3ac71d209cb9b85e686324f28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:ab5022bf3ac71d209cb9b85e686324f28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a441dfbc29b39106fbacec0f0c7b07359"><td class="memItemLeft" align="right" valign="top"><a id="a441dfbc29b39106fbacec0f0c7b07359"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a441dfbc29b39106fbacec0f0c7b07359">Registry</a> (const <a class="el" href="classentt_1_1Registry.html">Registry</a> &amp;)=delete</td></tr>
<tr class="memdesc:a441dfbc29b39106fbacec0f0c7b07359"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copying a registry isn't allowed. <br /></td></tr>
<tr class="separator:a441dfbc29b39106fbacec0f0c7b07359"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5340b49833d3e23e28200a4069fe04b0"><td class="memItemLeft" align="right" valign="top"><a id="a5340b49833d3e23e28200a4069fe04b0"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a5340b49833d3e23e28200a4069fe04b0">Registry</a> (<a class="el" href="classentt_1_1Registry.html">Registry</a> &amp;&amp;)=default</td></tr>
<tr class="memdesc:a5340b49833d3e23e28200a4069fe04b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default move constructor. <br /></td></tr>
<tr class="separator:a5340b49833d3e23e28200a4069fe04b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ff250745f1774984a9524d63855f26d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html">Registry</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a6ff250745f1774984a9524d63855f26d">operator=</a> (const <a class="el" href="classentt_1_1Registry.html">Registry</a> &amp;)=delete</td></tr>
<tr class="memdesc:a6ff250745f1774984a9524d63855f26d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copying a registry isn't allowed. <a href="#a6ff250745f1774984a9524d63855f26d">More...</a><br /></td></tr>
<tr class="separator:a6ff250745f1774984a9524d63855f26d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade7432a219317a6912553feb2971188b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html">Registry</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#ade7432a219317a6912553feb2971188b">operator=</a> (<a class="el" href="classentt_1_1Registry.html">Registry</a> &amp;&amp;)=default</td></tr>
<tr class="memdesc:ade7432a219317a6912553feb2971188b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default move assignment operator. <a href="#ade7432a219317a6912553feb2971188b">More...</a><br /></td></tr>
<tr class="separator:ade7432a219317a6912553feb2971188b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88d7621801898d0a551cfd98b29a7cd0"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a88d7621801898d0a551cfd98b29a7cd0"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a88d7621801898d0a551cfd98b29a7cd0">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a88d7621801898d0a551cfd98b29a7cd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of existing components of the given type. <a href="#a88d7621801898d0a551cfd98b29a7cd0">More...</a><br /></td></tr>
<tr class="separator:a88d7621801898d0a551cfd98b29a7cd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1be83159fed73573014e6e2919ecabf3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a1be83159fed73573014e6e2919ecabf3">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a1be83159fed73573014e6e2919ecabf3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of entities still in use. <a href="#a1be83159fed73573014e6e2919ecabf3">More...</a><br /></td></tr>
<tr class="separator:a1be83159fed73573014e6e2919ecabf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d57a57e13ca236a215e332b94852147"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a6d57a57e13ca236a215e332b94852147"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a6d57a57e13ca236a215e332b94852147">reserve</a> (const <a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a> cap)</td></tr>
<tr class="memdesc:a6d57a57e13ca236a215e332b94852147"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increases the capacity of the pool for the given component. <a href="#a6d57a57e13ca236a215e332b94852147">More...</a><br /></td></tr>
<tr class="separator:a6d57a57e13ca236a215e332b94852147"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa927ac552b42e2a0fcc8de08f56510c7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aa927ac552b42e2a0fcc8de08f56510c7">reserve</a> (const <a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a> cap)</td></tr>
<tr class="memdesc:aa927ac552b42e2a0fcc8de08f56510c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increases the capacity of a registry in terms of entities. <a href="#aa927ac552b42e2a0fcc8de08f56510c7">More...</a><br /></td></tr>
<tr class="separator:aa927ac552b42e2a0fcc8de08f56510c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38e5391f9c1b4a8ea814f0abcf7a3323"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a38e5391f9c1b4a8ea814f0abcf7a3323"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a38e5391f9c1b4a8ea814f0abcf7a3323">capacity</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a38e5391f9c1b4a8ea814f0abcf7a3323"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the capacity of the pool for the given component. <a href="#a38e5391f9c1b4a8ea814f0abcf7a3323">More...</a><br /></td></tr>
<tr class="separator:a38e5391f9c1b4a8ea814f0abcf7a3323"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefe4ec26db45257de26da19147a9e3f3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aefe4ec26db45257de26da19147a9e3f3">capacity</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:aefe4ec26db45257de26da19147a9e3f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of entities that a registry has currently allocated space for. <a href="#aefe4ec26db45257de26da19147a9e3f3">More...</a><br /></td></tr>
<tr class="separator:aefe4ec26db45257de26da19147a9e3f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57193f01b75256867ba34342cd46ec13"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a57193f01b75256867ba34342cd46ec13"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a57193f01b75256867ba34342cd46ec13">empty</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a57193f01b75256867ba34342cd46ec13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the pool of the given component is empty. <a href="#a57193f01b75256867ba34342cd46ec13">More...</a><br /></td></tr>
<tr class="separator:a57193f01b75256867ba34342cd46ec13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8735df0baab2fea088e6946e2811e29b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a8735df0baab2fea088e6946e2811e29b">empty</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a8735df0baab2fea088e6946e2811e29b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if there exists at least an entity still in use. <a href="#a8735df0baab2fea088e6946e2811e29b">More...</a><br /></td></tr>
<tr class="separator:a8735df0baab2fea088e6946e2811e29b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa4a9703f583da393101aa91604267e6"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:aaa4a9703f583da393101aa91604267e6"><td class="memTemplItemLeft" align="right" valign="top">const Component *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aaa4a9703f583da393101aa91604267e6">raw</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:aaa4a9703f583da393101aa91604267e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of components of a given pool. <a href="#aaa4a9703f583da393101aa91604267e6">More...</a><br /></td></tr>
<tr class="separator:aaa4a9703f583da393101aa91604267e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1728046f5645bf2ff3f167c40ca29d0e"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a1728046f5645bf2ff3f167c40ca29d0e"><td class="memTemplItemLeft" align="right" valign="top">Component *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a1728046f5645bf2ff3f167c40ca29d0e">raw</a> () ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a1728046f5645bf2ff3f167c40ca29d0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of components of a given pool. <a href="#a1728046f5645bf2ff3f167c40ca29d0e">More...</a><br /></td></tr>
<tr class="separator:a1728046f5645bf2ff3f167c40ca29d0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2bb7899d022c90b2385cad18a31e48dd"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a2bb7899d022c90b2385cad18a31e48dd"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a2bb7899d022c90b2385cad18a31e48dd">data</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a2bb7899d022c90b2385cad18a31e48dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of entities of a given pool. <a href="#a2bb7899d022c90b2385cad18a31e48dd">More...</a><br /></td></tr>
<tr class="separator:a2bb7899d022c90b2385cad18a31e48dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaba72db4ebf99a911b58327063ec8ad9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aaba72db4ebf99a911b58327063ec8ad9">valid</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:aaba72db4ebf99a911b58327063ec8ad9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if an entity identifier refers to a valid entity. <a href="#aaba72db4ebf99a911b58327063ec8ad9">More...</a><br /></td></tr>
<tr class="separator:aaba72db4ebf99a911b58327063ec8ad9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76bf9ca50a3651d3c0c32df0627d8270"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a76bf9ca50a3651d3c0c32df0627d8270">fast</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a76bf9ca50a3651d3c0c32df0627d8270"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if an entity identifier refers to a valid entity. <a href="#a76bf9ca50a3651d3c0c32df0627d8270">More...</a><br /></td></tr>
<tr class="separator:a76bf9ca50a3651d3c0c32df0627d8270"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7467ac1c8a7657062b1b4386dded54e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#a82c8996277034df5e72b5f30a70ebb2d">version_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#ad7467ac1c8a7657062b1b4386dded54e">version</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ad7467ac1c8a7657062b1b4386dded54e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the version stored along with an entity identifier. <a href="#ad7467ac1c8a7657062b1b4386dded54e">More...</a><br /></td></tr>
<tr class="separator:ad7467ac1c8a7657062b1b4386dded54e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e79305f5a066bdc2b272181a08b17ac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#a82c8996277034df5e72b5f30a70ebb2d">version_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a9e79305f5a066bdc2b272181a08b17ac">current</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a9e79305f5a066bdc2b272181a08b17ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the actual version for an entity identifier. <a href="#a9e79305f5a066bdc2b272181a08b17ac">More...</a><br /></td></tr>
<tr class="separator:a9e79305f5a066bdc2b272181a08b17ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a433ac3fc8ea49347f691dd4ad1ccb58b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a433ac3fc8ea49347f691dd4ad1ccb58b">create</a> ()</td></tr>
<tr class="memdesc:a433ac3fc8ea49347f691dd4ad1ccb58b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new entity and returns it. <a href="#a433ac3fc8ea49347f691dd4ad1ccb58b">More...</a><br /></td></tr>
<tr class="separator:a433ac3fc8ea49347f691dd4ad1ccb58b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a140dfdb699d360b7c0e066ae298aab5e"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:a140dfdb699d360b7c0e066ae298aab5e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a140dfdb699d360b7c0e066ae298aab5e">destroy</a> (<a class="el" href="structentt_1_1tag__t.html">tag_t</a>)</td></tr>
<tr class="memdesc:a140dfdb699d360b7c0e066ae298aab5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the entity that owns the given tag, if any. <a href="#a140dfdb699d360b7c0e066ae298aab5e">More...</a><br /></td></tr>
<tr class="separator:a140dfdb699d360b7c0e066ae298aab5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a197afcc6da68df6eb87575284232a3ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a197afcc6da68df6eb87575284232a3ff">destroy</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity)</td></tr>
<tr class="memdesc:a197afcc6da68df6eb87575284232a3ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys an entity and lets the registry recycle the identifier. <a href="#a197afcc6da68df6eb87575284232a3ff">More...</a><br /></td></tr>
<tr class="separator:a197afcc6da68df6eb87575284232a3ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8169422afda942f5915ee68b46636c3b"><td class="memTemplParams" colspan="2">template&lt;typename... Component, typename... Type&gt; </td></tr>
<tr class="memitem:a8169422afda942f5915ee68b46636c3b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a8169422afda942f5915ee68b46636c3b">destroy</a> (Type...)</td></tr>
<tr class="memdesc:a8169422afda942f5915ee68b46636c3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the entities that own he given components, if any. <a href="#a8169422afda942f5915ee68b46636c3b">More...</a><br /></td></tr>
<tr class="separator:a8169422afda942f5915ee68b46636c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93b5717af287a2b97e0ef9695c51ed58"><td class="memTemplParams" colspan="2">template&lt;typename Tag , typename... Args&gt; </td></tr>
<tr class="memitem:a93b5717af287a2b97e0ef9695c51ed58"><td class="memTemplItemLeft" align="right" valign="top">Tag &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a93b5717af287a2b97e0ef9695c51ed58">assign</a> (<a class="el" href="structentt_1_1tag__t.html">tag_t</a>, const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity, Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:a93b5717af287a2b97e0ef9695c51ed58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attaches the given tag to an entity. <a href="#a93b5717af287a2b97e0ef9695c51ed58">More...</a><br /></td></tr>
<tr class="separator:a93b5717af287a2b97e0ef9695c51ed58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01f87450271067dda6c87f0c7c9b80dd"><td class="memTemplParams" colspan="2">template&lt;typename Component , typename... Args&gt; </td></tr>
<tr class="memitem:a01f87450271067dda6c87f0c7c9b80dd"><td class="memTemplItemLeft" align="right" valign="top">Component &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a01f87450271067dda6c87f0c7c9b80dd">assign</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity, Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:a01f87450271067dda6c87f0c7c9b80dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assigns the given component to an entity. <a href="#a01f87450271067dda6c87f0c7c9b80dd">More...</a><br /></td></tr>
<tr class="separator:a01f87450271067dda6c87f0c7c9b80dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a957bcbdbf082f9767e5474a73be6ece4"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:a957bcbdbf082f9767e5474a73be6ece4"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a957bcbdbf082f9767e5474a73be6ece4">remove</a> ()</td></tr>
<tr class="memdesc:a957bcbdbf082f9767e5474a73be6ece4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes the given tag from its owner, if any. <a href="#a957bcbdbf082f9767e5474a73be6ece4">More...</a><br /></td></tr>
<tr class="separator:a957bcbdbf082f9767e5474a73be6ece4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a113ff63724bdb90344984d5dd16995f2"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a113ff63724bdb90344984d5dd16995f2"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a113ff63724bdb90344984d5dd16995f2">remove</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity)</td></tr>
<tr class="memdesc:a113ff63724bdb90344984d5dd16995f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes the given component from an entity. <a href="#a113ff63724bdb90344984d5dd16995f2">More...</a><br /></td></tr>
<tr class="separator:a113ff63724bdb90344984d5dd16995f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2be7a8e1e6216b8a48fa941e9d3fbd6"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:ae2be7a8e1e6216b8a48fa941e9d3fbd6"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#ae2be7a8e1e6216b8a48fa941e9d3fbd6">has</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ae2be7a8e1e6216b8a48fa941e9d3fbd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if the given tag has an owner. <a href="#ae2be7a8e1e6216b8a48fa941e9d3fbd6">More...</a><br /></td></tr>
<tr class="separator:ae2be7a8e1e6216b8a48fa941e9d3fbd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc108dadf41e5080274bcc4e877024e4"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:afc108dadf41e5080274bcc4e877024e4"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#afc108dadf41e5080274bcc4e877024e4">has</a> (<a class="el" href="structentt_1_1tag__t.html">tag_t</a>, const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:afc108dadf41e5080274bcc4e877024e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if an entity owns the given tag. <a href="#afc108dadf41e5080274bcc4e877024e4">More...</a><br /></td></tr>
<tr class="separator:afc108dadf41e5080274bcc4e877024e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ca7a3b46d14db8d917547643b1ab614"><td class="memTemplParams" colspan="2">template&lt;typename... Component&gt; </td></tr>
<tr class="memitem:a1ca7a3b46d14db8d917547643b1ab614"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a1ca7a3b46d14db8d917547643b1ab614">has</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a1ca7a3b46d14db8d917547643b1ab614"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if an entity has all the given components. <a href="#a1ca7a3b46d14db8d917547643b1ab614">More...</a><br /></td></tr>
<tr class="separator:a1ca7a3b46d14db8d917547643b1ab614"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2079fb67093feb86b75e9dede6bb6c4d"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:a2079fb67093feb86b75e9dede6bb6c4d"><td class="memTemplItemLeft" align="right" valign="top">const Tag &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a2079fb67093feb86b75e9dede6bb6c4d">get</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a2079fb67093feb86b75e9dede6bb6c4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a reference to the given tag. <a href="#a2079fb67093feb86b75e9dede6bb6c4d">More...</a><br /></td></tr>
<tr class="separator:a2079fb67093feb86b75e9dede6bb6c4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c71607135bee449a486c8a5241dc70d"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:a3c71607135bee449a486c8a5241dc70d"><td class="memTemplItemLeft" align="right" valign="top">Tag &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a3c71607135bee449a486c8a5241dc70d">get</a> () ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a3c71607135bee449a486c8a5241dc70d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a reference to the given tag. <a href="#a3c71607135bee449a486c8a5241dc70d">More...</a><br /></td></tr>
<tr class="separator:a3c71607135bee449a486c8a5241dc70d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa40aa6a87415b2e88c67b8b9f895bfe8"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:aa40aa6a87415b2e88c67b8b9f895bfe8"><td class="memTemplItemLeft" align="right" valign="top">const Component &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aa40aa6a87415b2e88c67b8b9f895bfe8">get</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:aa40aa6a87415b2e88c67b8b9f895bfe8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a reference to the given component for an entity. <a href="#aa40aa6a87415b2e88c67b8b9f895bfe8">More...</a><br /></td></tr>
<tr class="separator:aa40aa6a87415b2e88c67b8b9f895bfe8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefa861cd4cd2750ddb43f587fc756531"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:aefa861cd4cd2750ddb43f587fc756531"><td class="memTemplItemLeft" align="right" valign="top">Component &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aefa861cd4cd2750ddb43f587fc756531">get</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:aefa861cd4cd2750ddb43f587fc756531"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a reference to the given component for an entity. <a href="#aefa861cd4cd2750ddb43f587fc756531">More...</a><br /></td></tr>
<tr class="separator:aefa861cd4cd2750ddb43f587fc756531"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19e0832f4aceb58f1be1e7540313cec0"><td class="memTemplParams" colspan="2">template&lt;typename... Component&gt; </td></tr>
<tr class="memitem:a19e0832f4aceb58f1be1e7540313cec0"><td class="memTemplItemLeft" align="right" valign="top">std::enable_if_t&lt;(sizeof...(Component) &gt; 1), std::tuple&lt; const Component &amp;... &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a19e0832f4aceb58f1be1e7540313cec0">get</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a19e0832f4aceb58f1be1e7540313cec0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a reference to the given components for an entity. <a href="#a19e0832f4aceb58f1be1e7540313cec0">More...</a><br /></td></tr>
<tr class="separator:a19e0832f4aceb58f1be1e7540313cec0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73f3a68af4e73a74a273cca9ceab68a2"><td class="memTemplParams" colspan="2">template&lt;typename... Component&gt; </td></tr>
<tr class="memitem:a73f3a68af4e73a74a273cca9ceab68a2"><td class="memTemplItemLeft" align="right" valign="top">std::enable_if_t&lt;(sizeof...(Component) &gt; 1), std::tuple&lt; Component &amp;... &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a73f3a68af4e73a74a273cca9ceab68a2">get</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a73f3a68af4e73a74a273cca9ceab68a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a reference to the given components for an entity. <a href="#a73f3a68af4e73a74a273cca9ceab68a2">More...</a><br /></td></tr>
<tr class="separator:a73f3a68af4e73a74a273cca9ceab68a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39b071aa110b8ea38fb71ca471d371b5"><td class="memTemplParams" colspan="2">template&lt;typename Tag , typename... Args&gt; </td></tr>
<tr class="memitem:a39b071aa110b8ea38fb71ca471d371b5"><td class="memTemplItemLeft" align="right" valign="top">Tag &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a39b071aa110b8ea38fb71ca471d371b5">replace</a> (<a class="el" href="structentt_1_1tag__t.html">tag_t</a>, Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:a39b071aa110b8ea38fb71ca471d371b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Replaces the given tag. <a href="#a39b071aa110b8ea38fb71ca471d371b5">More...</a><br /></td></tr>
<tr class="separator:a39b071aa110b8ea38fb71ca471d371b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2482e363a9b4ff9b6a4a0e1385c7b6e1"><td class="memTemplParams" colspan="2">template&lt;typename Component , typename... Args&gt; </td></tr>
<tr class="memitem:a2482e363a9b4ff9b6a4a0e1385c7b6e1"><td class="memTemplItemLeft" align="right" valign="top">Component &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a2482e363a9b4ff9b6a4a0e1385c7b6e1">replace</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity, Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:a2482e363a9b4ff9b6a4a0e1385c7b6e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Replaces the given component for an entity. <a href="#a2482e363a9b4ff9b6a4a0e1385c7b6e1">More...</a><br /></td></tr>
<tr class="separator:a2482e363a9b4ff9b6a4a0e1385c7b6e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a459073e0dfdb4f21519792717f688173"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:a459073e0dfdb4f21519792717f688173"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a459073e0dfdb4f21519792717f688173">move</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a459073e0dfdb4f21519792717f688173"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes the owner of the given tag. <a href="#a459073e0dfdb4f21519792717f688173">More...</a><br /></td></tr>
<tr class="separator:a459073e0dfdb4f21519792717f688173"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af157dcabe4fe027e2f9cd45f4958f3b9"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:af157dcabe4fe027e2f9cd45f4958f3b9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#af157dcabe4fe027e2f9cd45f4958f3b9">attachee</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:af157dcabe4fe027e2f9cd45f4958f3b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the owner of the given tag, if any. <a href="#af157dcabe4fe027e2f9cd45f4958f3b9">More...</a><br /></td></tr>
<tr class="separator:af157dcabe4fe027e2f9cd45f4958f3b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6333a56f3a5a58882963a11bbbcf2ac2"><td class="memTemplParams" colspan="2">template&lt;typename Component , typename... Args&gt; </td></tr>
<tr class="memitem:a6333a56f3a5a58882963a11bbbcf2ac2"><td class="memTemplItemLeft" align="right" valign="top">Component &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a6333a56f3a5a58882963a11bbbcf2ac2">accommodate</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity, Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:a6333a56f3a5a58882963a11bbbcf2ac2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assigns or replaces the given component for an entity. <a href="#a6333a56f3a5a58882963a11bbbcf2ac2">More...</a><br /></td></tr>
<tr class="separator:a6333a56f3a5a58882963a11bbbcf2ac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f6b29268ba11a8526fa3f9d3bdb58e5"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:a6f6b29268ba11a8526fa3f9d3bdb58e5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#ada8da3c42b6f37209255eef008581b0b">sink_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a6f6b29268ba11a8526fa3f9d3bdb58e5">construction</a> (<a class="el" href="structentt_1_1tag__t.html">tag_t</a>) ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a6f6b29268ba11a8526fa3f9d3bdb58e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a sink object for the given tag. <a href="#a6f6b29268ba11a8526fa3f9d3bdb58e5">More...</a><br /></td></tr>
<tr class="separator:a6f6b29268ba11a8526fa3f9d3bdb58e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af43b25946f4cbdec633df25317edc020"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:af43b25946f4cbdec633df25317edc020"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#ada8da3c42b6f37209255eef008581b0b">sink_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#af43b25946f4cbdec633df25317edc020">construction</a> () ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:af43b25946f4cbdec633df25317edc020"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a sink object for the given component. <a href="#af43b25946f4cbdec633df25317edc020">More...</a><br /></td></tr>
<tr class="separator:af43b25946f4cbdec633df25317edc020"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89df80b61b83bc3c4c3ed6d9324aa8b4"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:a89df80b61b83bc3c4c3ed6d9324aa8b4"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#ada8da3c42b6f37209255eef008581b0b">sink_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a89df80b61b83bc3c4c3ed6d9324aa8b4">destruction</a> (<a class="el" href="structentt_1_1tag__t.html">tag_t</a>) ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a89df80b61b83bc3c4c3ed6d9324aa8b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a sink object for the given tag. <a href="#a89df80b61b83bc3c4c3ed6d9324aa8b4">More...</a><br /></td></tr>
<tr class="separator:a89df80b61b83bc3c4c3ed6d9324aa8b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa38dca5bb6875370d50a923cf52fcfb"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:aaa38dca5bb6875370d50a923cf52fcfb"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Registry.html#ada8da3c42b6f37209255eef008581b0b">sink_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aaa38dca5bb6875370d50a923cf52fcfb">destruction</a> () ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:aaa38dca5bb6875370d50a923cf52fcfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a sink object for the given component. <a href="#aaa38dca5bb6875370d50a923cf52fcfb">More...</a><br /></td></tr>
<tr class="separator:aaa38dca5bb6875370d50a923cf52fcfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb72e05f3128b6604b438707eabdfa4a"><td class="memTemplParams" colspan="2">template&lt;typename Component , typename Compare , typename Sort = StdSort, typename... Args&gt; </td></tr>
<tr class="memitem:acb72e05f3128b6604b438707eabdfa4a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#acb72e05f3128b6604b438707eabdfa4a">sort</a> (Compare compare, Sort sort=Sort{}, Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:acb72e05f3128b6604b438707eabdfa4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorts the pool of entities for the given component. <a href="#acb72e05f3128b6604b438707eabdfa4a">More...</a><br /></td></tr>
<tr class="separator:acb72e05f3128b6604b438707eabdfa4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3abb830a7ba342266b62ff1a2965754"><td class="memTemplParams" colspan="2">template&lt;typename To , typename From &gt; </td></tr>
<tr class="memitem:aa3abb830a7ba342266b62ff1a2965754"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aa3abb830a7ba342266b62ff1a2965754">sort</a> ()</td></tr>
<tr class="memdesc:aa3abb830a7ba342266b62ff1a2965754"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorts two pools of components in the same way. <a href="#aa3abb830a7ba342266b62ff1a2965754">More...</a><br /></td></tr>
<tr class="separator:aa3abb830a7ba342266b62ff1a2965754"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af406e83980abc792905ff4a0626b3d02"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:af406e83980abc792905ff4a0626b3d02"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#af406e83980abc792905ff4a0626b3d02">reset</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity)</td></tr>
<tr class="memdesc:af406e83980abc792905ff4a0626b3d02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the given component for an entity. <a href="#af406e83980abc792905ff4a0626b3d02">More...</a><br /></td></tr>
<tr class="separator:af406e83980abc792905ff4a0626b3d02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a613333e0a4acb227d08938ccc594e064"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a613333e0a4acb227d08938ccc594e064"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a613333e0a4acb227d08938ccc594e064">reset</a> ()</td></tr>
<tr class="memdesc:a613333e0a4acb227d08938ccc594e064"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the pool of the given component. <a href="#a613333e0a4acb227d08938ccc594e064">More...</a><br /></td></tr>
<tr class="separator:a613333e0a4acb227d08938ccc594e064"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b6ec743e9a62389cf2bba9a25ee09d7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a1b6ec743e9a62389cf2bba9a25ee09d7">reset</a> ()</td></tr>
<tr class="memdesc:a1b6ec743e9a62389cf2bba9a25ee09d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets a whole registry. <a href="#a1b6ec743e9a62389cf2bba9a25ee09d7">More...</a><br /></td></tr>
<tr class="separator:a1b6ec743e9a62389cf2bba9a25ee09d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d7547f6d8503265480d235fe48dfb1d"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
<tr class="memitem:a1d7547f6d8503265480d235fe48dfb1d"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a1d7547f6d8503265480d235fe48dfb1d">each</a> (Func func) const</td></tr>
<tr class="memdesc:a1d7547f6d8503265480d235fe48dfb1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterates all the entities that are still in use. <a href="#a1d7547f6d8503265480d235fe48dfb1d">More...</a><br /></td></tr>
<tr class="separator:a1d7547f6d8503265480d235fe48dfb1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b4a5341ac0ef79fd2477753e857a9cb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a3b4a5341ac0ef79fd2477753e857a9cb">orphan</a> (const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> entity) const</td></tr>
<tr class="memdesc:a3b4a5341ac0ef79fd2477753e857a9cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if an entity is an orphan. <a href="#a3b4a5341ac0ef79fd2477753e857a9cb">More...</a><br /></td></tr>
<tr class="separator:a3b4a5341ac0ef79fd2477753e857a9cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada2900e50f66573c14821baac03bbd68"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
<tr class="memitem:ada2900e50f66573c14821baac03bbd68"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#ada2900e50f66573c14821baac03bbd68">orphans</a> (Func func) const</td></tr>
<tr class="memdesc:ada2900e50f66573c14821baac03bbd68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterates orphans and applies them the given function object. <a href="#ada2900e50f66573c14821baac03bbd68">More...</a><br /></td></tr>
<tr class="separator:ada2900e50f66573c14821baac03bbd68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed83d4c8f80ae647ee73f2a8440fa09d"><td class="memTemplParams" colspan="2">template&lt;typename... Component&gt; </td></tr>
<tr class="memitem:aed83d4c8f80ae647ee73f2a8440fa09d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1View.html">View</a>&lt; Entity, Component... &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aed83d4c8f80ae647ee73f2a8440fa09d">view</a> ()</td></tr>
<tr class="memdesc:aed83d4c8f80ae647ee73f2a8440fa09d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a standard view for the given components. <a href="#aed83d4c8f80ae647ee73f2a8440fa09d">More...</a><br /></td></tr>
<tr class="separator:aed83d4c8f80ae647ee73f2a8440fa09d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac05c9ccc5fe57df386d8104578fc9675"><td class="memTemplParams" colspan="2">template&lt;typename... Component&gt; </td></tr>
<tr class="memitem:ac05c9ccc5fe57df386d8104578fc9675"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#ac05c9ccc5fe57df386d8104578fc9675">prepare</a> ()</td></tr>
<tr class="memdesc:ac05c9ccc5fe57df386d8104578fc9675"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares the internal data structures used by persistent views. <a href="#ac05c9ccc5fe57df386d8104578fc9675">More...</a><br /></td></tr>
<tr class="separator:ac05c9ccc5fe57df386d8104578fc9675"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9289a7c5d8bed1ba59948311f8fcd3f4"><td class="memTemplParams" colspan="2">template&lt;typename... Component&gt; </td></tr>
<tr class="memitem:a9289a7c5d8bed1ba59948311f8fcd3f4"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a9289a7c5d8bed1ba59948311f8fcd3f4">discard</a> ()</td></tr>
<tr class="memdesc:a9289a7c5d8bed1ba59948311f8fcd3f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Discards all the data structures used for a given persitent view. <a href="#a9289a7c5d8bed1ba59948311f8fcd3f4">More...</a><br /></td></tr>
<tr class="separator:a9289a7c5d8bed1ba59948311f8fcd3f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67a9d1a75fa1f8e29091f1127c0f3a70"><td class="memTemplParams" colspan="2">template&lt;typename... Component&gt; </td></tr>
<tr class="memitem:a67a9d1a75fa1f8e29091f1127c0f3a70"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a67a9d1a75fa1f8e29091f1127c0f3a70">contains</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a67a9d1a75fa1f8e29091f1127c0f3a70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a persistent view has already been prepared. <a href="#a67a9d1a75fa1f8e29091f1127c0f3a70">More...</a><br /></td></tr>
<tr class="separator:a67a9d1a75fa1f8e29091f1127c0f3a70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb1eb5f1a2ec31d14b5b98271ff78f1e"><td class="memTemplParams" colspan="2">template&lt;typename... Component&gt; </td></tr>
<tr class="memitem:abb1eb5f1a2ec31d14b5b98271ff78f1e"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1PersistentView.html">PersistentView</a>&lt; Entity, Component... &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#abb1eb5f1a2ec31d14b5b98271ff78f1e">view</a> (<a class="el" href="structentt_1_1persistent__t.html">persistent_t</a>)</td></tr>
<tr class="memdesc:abb1eb5f1a2ec31d14b5b98271ff78f1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a persistent view for the given components. <a href="#abb1eb5f1a2ec31d14b5b98271ff78f1e">More...</a><br /></td></tr>
<tr class="separator:abb1eb5f1a2ec31d14b5b98271ff78f1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedc2a2344c5d13a0483608d48189a92a"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:aedc2a2344c5d13a0483608d48189a92a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1RawView.html">RawView</a>&lt; Entity, Component &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#aedc2a2344c5d13a0483608d48189a92a">view</a> (<a class="el" href="structentt_1_1raw__t.html">raw_t</a>)</td></tr>
<tr class="memdesc:aedc2a2344c5d13a0483608d48189a92a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a raw view for the given component. <a href="#aedc2a2344c5d13a0483608d48189a92a">More...</a><br /></td></tr>
<tr class="separator:aedc2a2344c5d13a0483608d48189a92a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a157973e57670b5df3eedc8d137de7e"><td class="memTemplParams" colspan="2">template&lt;typename It &gt; </td></tr>
<tr class="memitem:a4a157973e57670b5df3eedc8d137de7e"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1RuntimeView.html">RuntimeView</a>&lt; Entity &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a4a157973e57670b5df3eedc8d137de7e">view</a> (It first, It last)</td></tr>
<tr class="memdesc:a4a157973e57670b5df3eedc8d137de7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a runtime view for the given components. <a href="#a4a157973e57670b5df3eedc8d137de7e">More...</a><br /></td></tr>
<tr class="separator:a4a157973e57670b5df3eedc8d137de7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00a0b4949a4cc0cb87e88cc6d1171a9d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1Snapshot.html">Snapshot</a>&lt; Entity &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a00a0b4949a4cc0cb87e88cc6d1171a9d">snapshot</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a00a0b4949a4cc0cb87e88cc6d1171a9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a temporary object to use to create snapshots. <a href="#a00a0b4949a4cc0cb87e88cc6d1171a9d">More...</a><br /></td></tr>
<tr class="separator:a00a0b4949a4cc0cb87e88cc6d1171a9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37b755b43c7067658d2b4129baa403cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1SnapshotLoader.html">SnapshotLoader</a>&lt; Entity &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a37b755b43c7067658d2b4129baa403cf">restore</a> () ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a37b755b43c7067658d2b4129baa403cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a temporary object to use to load snapshots. <a href="#a37b755b43c7067658d2b4129baa403cf">More...</a><br /></td></tr>
<tr class="separator:a37b755b43c7067658d2b4129baa403cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a682552d500d7768b5d9d4e5f547cdfaf"><td class="memTemplParams" colspan="2">template&lt;typename Tag &gt; </td></tr>
<tr class="memitem:a682552d500d7768b5d9d4e5f547cdfaf"><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classentt_1_1Registry.html#a357cfdc1b3c5abc7a36e8eddbd6ce5c7">tag_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a682552d500d7768b5d9d4e5f547cdfaf">type</a> (<a class="el" href="structentt_1_1tag__t.html">tag_t</a>) ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a682552d500d7768b5d9d4e5f547cdfaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the numeric identifier of a type of tag at runtime. <a href="#a682552d500d7768b5d9d4e5f547cdfaf">More...</a><br /></td></tr>
<tr class="separator:a682552d500d7768b5d9d4e5f547cdfaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a484018ca7d1898708ea17a651eddc7e4"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a484018ca7d1898708ea17a651eddc7e4"><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classentt_1_1Registry.html#aefd07a0cdff88ebf1e35e531d58c3077">component_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1Registry.html#a484018ca7d1898708ea17a651eddc7e4">type</a> () ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a484018ca7d1898708ea17a651eddc7e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the numeric identifier of a type of component at runtime. <a href="#a484018ca7d1898708ea17a651eddc7e4">More...</a><br /></td></tr>
<tr class="separator:a484018ca7d1898708ea17a651eddc7e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename Entity&gt;<br />
class entt::Registry&lt; Entity &gt;</h3>
<p>Fast and reliable entity-component system. </p>
<p>Forward declaration of the registry class.</p>
<p>The registry is the core class of the entity-component framework.<br />
It stores entities and arranges pools of components on a per request basis. By means of a registry, users can manage entities and components and thus create views to iterate them.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Entity</td><td>A valid entity type (see <a class="el" href="structentt_1_1entt__traits.html" title="Entity traits. ">entt_traits</a> for more details). </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00040">40</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a6333a56f3a5a58882963a11bbbcf2ac2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6333a56f3a5a58882963a11bbbcf2ac2">&#9670;&nbsp;</a></span>accommodate()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component , typename... Args&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Component&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::accommodate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Assigns or replaces the given component for an entity. </p>
<p>Equivalent to the following snippet (pseudocode):</p>
<div class="fragment"><div class="line"><span class="keywordflow">if</span>(registry.has&lt;Component&gt;(entity)) {</div><div class="line"> registry.replace&lt;Component&gt;(entity, args...);</div><div class="line">} <span class="keywordflow">else</span> {</div><div class="line"> registry.assign&lt;Component&gt;(entity, args...);</div><div class="line">}</div></div><!-- fragment --><p>Prefer this function anyway because it has slightly better performance.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component to assign or replace. </td></tr>
<tr><td class="paramname">Args</td><td>Types of arguments to use to construct the component. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
<tr><td class="paramname">args</td><td>Parameters to use to initialize the component. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the newly created component. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00911">911</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a93b5717af287a2b97e0ef9695c51ed58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93b5717af287a2b97e0ef9695c51ed58">&#9670;&nbsp;</a></span>assign() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag , typename... Args&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Tag&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::assign </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structentt_1_1tag__t.html">tag_t</a>&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Attaches the given tag to an entity. </p>
<p>Usually, pools of components allocate enough memory to store a bunch of elements even if only one of them is used. On the other hand, there are cases where all what is needed is a single instance component to attach to an entity.<br />
Tags are the right tool to achieve the purpose.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity or to attach to an entity a tag that already has an owner results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity or if the tag has been already attached to another entity.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag to create. </td></tr>
<tr><td class="paramname">Args</td><td>Types of arguments to use to construct the tag. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
<tr><td class="paramname">args</td><td>Parameters to use to initialize the tag. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the newly created tag. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00543">543</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a01f87450271067dda6c87f0c7c9b80dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01f87450271067dda6c87f0c7c9b80dd">&#9670;&nbsp;</a></span>assign() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component , typename... Args&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Component&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::assign </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Assigns the given component to an entity. </p>
<p>A new instance of the given component is created and initialized with the arguments provided (the component must have a proper constructor or be of aggregate type). Then the component is assigned to the given entity.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity or to assign a component to an entity that already owns it results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity or if the entity already owns an instance of the given component.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component to create. </td></tr>
<tr><td class="paramname">Args</td><td>Types of arguments to use to construct the component. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
<tr><td class="paramname">args</td><td>Parameters to use to initialize the component. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the newly created component. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00574">574</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="af157dcabe4fe027e2f9cd45f4958f3b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af157dcabe4fe027e2f9cd45f4958f3b9">&#9670;&nbsp;</a></span>attachee()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::attachee </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the owner of the given tag, if any. </p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to get the owner of a tag that hasn't been previously attached to an entity results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode if the tag hasn't an owner.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag of which to get the owner. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A valid entity identifier. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00879">879</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a38e5391f9c1b4a8ea814f0abcf7a3323"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38e5391f9c1b4a8ea814f0abcf7a3323">&#9670;&nbsp;</a></span>capacity() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::capacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the capacity of the pool for the given component. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component in which one is interested. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Capacity of the pool of the given component. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00231">231</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="aefe4ec26db45257de26da19147a9e3f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aefe4ec26db45257de26da19147a9e3f3">&#9670;&nbsp;</a></span>capacity() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::capacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of entities that a registry has currently allocated space for. </p>
<dl class="section return"><dt>Returns</dt><dd>Capacity of the registry. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00240">240</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a6f6b29268ba11a8526fa3f9d3bdb58e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f6b29268ba11a8526fa3f9d3bdb58e5">&#9670;&nbsp;</a></span>construction() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#ada8da3c42b6f37209255eef008581b0b">sink_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::construction </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structentt_1_1tag__t.html">tag_t</a>&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a sink object for the given tag. </p>
<p>A sink is an opaque object used to connect listeners to tags.<br />
The sink returned by this function can be used to receive notifications whenever a new instance of the given tag is created and assigned to an entity.</p>
<p>The function type for a listener is: </p><div class="fragment"><div class="line">void(Registry&lt;Entity&gt; &amp;, Entity);</div></div><!-- fragment --><p>Listeners are invoked <b>after</b> the tag has been assigned to the entity. The order of invocation of the listeners isn't guaranteed.<br />
Note also that the greater the number of listeners, the greater the performance hit when a new tag is created.</p>
<dl class="section see"><dt>See also</dt><dd>SigH::Sink</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag of which to get the sink. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A temporary sink object. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00944">944</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="af43b25946f4cbdec633df25317edc020"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af43b25946f4cbdec633df25317edc020">&#9670;&nbsp;</a></span>construction() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#ada8da3c42b6f37209255eef008581b0b">sink_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::construction </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a sink object for the given component. </p>
<p>A sink is an opaque object used to connect listeners to components.<br />
The sink returned by this function can be used to receive notifications whenever a new instance of the given component is created and assigned to an entity.</p>
<p>The function type for a listener is: </p><div class="fragment"><div class="line">void(Registry&lt;Entity&gt; &amp;, Entity);</div></div><!-- fragment --><p>Listeners are invoked <b>after</b> the component has been assigned to the entity. The order of invocation of the listeners isn't guaranteed.<br />
Note also that the greater the number of listeners, the greater the performance hit when a new component is created.</p>
<dl class="section see"><dt>See also</dt><dd>SigH::Sink</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component of which to get the sink. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A temporary sink object. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00973">973</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a67a9d1a75fa1f8e29091f1127c0f3a70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67a9d1a75fa1f8e29091f1127c0f3a70">&#9670;&nbsp;</a></span>contains()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename... Component&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::contains </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if a persistent view has already been prepared. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Types of components of the persistent view. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the view has already been prepared, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01397">1397</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a433ac3fc8ea49347f691dd4ad1ccb58b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a433ac3fc8ea49347f691dd4ad1ccb58b">&#9670;&nbsp;</a></span>create()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::create </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a new entity and returns it. </p>
<p>There are two kinds of entity identifiers:</p>
<ul>
<li>Newly created ones in case no entities have been previously destroyed.</li>
<li>Recycled ones with updated versions.</li>
</ul>
<p>Users should not care about the type of the returned entity identifier. In case entity identifers are stored around, the <code>valid</code> member function can be used to know if they are still valid or the entity has been destroyed and potentially recycled.</p>
<p>The returned entity has no components nor tags assigned.</p>
<dl class="section return"><dt>Returns</dt><dd>A valid entity identifier. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00402">402</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a9e79305f5a066bdc2b272181a08b17ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e79305f5a066bdc2b272181a08b17ac">&#9670;&nbsp;</a></span>current()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#a82c8996277034df5e72b5f30a70ebb2d">version_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::current </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the actual version for an entity identifier. </p>
<p>In case entity identifers are stored around, this function can be used to know if they are still valid or the entity has been destroyed and potentially recycled.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an entity that doesn't belong to the registry results in undefined behavior. An entity belongs to the registry even if it has been previously destroyed and/or recycled.<br />
An assertion will abort the execution at runtime in debug mode if the registry doesn't own the given entity.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Actual version for the given entity identifier. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00379">379</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a2bb7899d022c90b2385cad18a31e48dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bb7899d022c90b2385cad18a31e48dd">&#9670;&nbsp;</a></span>data()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>* <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::data </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Direct access to the list of entities of a given pool. </p>
<p>The returned pointer is such that range <code>[data&lt;Component&gt;(), data&lt;Component&gt;() + size&lt;Component&gt;()]</code> is always a valid range, even if the container is empty.</p>
<dl class="section note"><dt>Note</dt><dd>There are no guarantees on the order of the entities. Use a view if you want to iterate entities and components in the expected order.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component in which one is interested. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the array of entities. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00316">316</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a140dfdb699d360b7c0e066ae298aab5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a140dfdb699d360b7c0e066ae298aab5e">&#9670;&nbsp;</a></span>destroy() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::destroy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structentt_1_1tag__t.html">tag_t</a>&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroys the entity that owns the given tag, if any. </p>
<p>Convenient shortcut to destroy an entity by means of a tag type.<br />
Syntactic sugar for the following snippet:</p>
<div class="fragment"><div class="line"><span class="keywordflow">if</span>(registry.has&lt;Tag&gt;()) {</div><div class="line"> registry.destroy(registry.attachee&lt;Tag&gt;());</div><div class="line">}</div></div><!-- fragment --><dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag to use to search for the entity. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00438">438</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a197afcc6da68df6eb87575284232a3ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a197afcc6da68df6eb87575284232a3ff">&#9670;&nbsp;</a></span>destroy() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::destroy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroys an entity and lets the registry recycle the identifier. </p>
<p>When an entity is destroyed, its version is updated and the identifier can be recycled at any time. In case entity identifers are stored around, the <code>valid</code> member function can be used to know if they are still valid or the entity has been destroyed and potentially recycled.</p>
<dl class="section warning"><dt>Warning</dt><dd>In case there are listeners that observe the destruction of components and assign other components to the entity in their bodies, the result of invoking this function may not be as expected. In the worst case, it could lead to undefined behavior. An assertion will abort the execution at runtime in debug mode if a violation is detected.</dd>
<dd>
Attempting to use an invalid entity results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00464">464</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a8169422afda942f5915ee68b46636c3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8169422afda942f5915ee68b46636c3b">&#9670;&nbsp;</a></span>destroy() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename... Component, typename... Type&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::destroy </td>
<td>(</td>
<td class="paramtype">Type...&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroys the entities that own he given components, if any. </p>
<p>Convenient shortcut to destroy a set of entities at once.<br />
Syntactic sugar for the following snippet:</p>
<div class="fragment"><div class="line"><span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> entity: registry.view&lt;Component...&gt;(Type{}...)) {</div><div class="line"> registry.destroy(entity);</div><div class="line">}</div></div><!-- fragment --><dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Types of components to use to search for the entities. </td></tr>
<tr><td class="paramname">Type</td><td>Type of view to use or empty to use a standard view. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00515">515</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a89df80b61b83bc3c4c3ed6d9324aa8b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89df80b61b83bc3c4c3ed6d9324aa8b4">&#9670;&nbsp;</a></span>destruction() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#ada8da3c42b6f37209255eef008581b0b">sink_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::destruction </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structentt_1_1tag__t.html">tag_t</a>&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a sink object for the given tag. </p>
<p>A sink is an opaque object used to connect listeners to tag.<br />
The sink returned by this function can be used to receive notifications whenever an instance of the given tag is removed from an entity and thus destroyed.</p>
<p>The function type for a listener is: </p><div class="fragment"><div class="line">void(Registry&lt;Entity&gt; &amp;, Entity);</div></div><!-- fragment --><p>Listeners are invoked <b>before</b> the tag has been removed from the entity. The order of invocation of the listeners isn't guaranteed.<br />
Note also that the greater the number of listeners, the greater the performance hit when a tag is destroyed.</p>
<dl class="section see"><dt>See also</dt><dd>SigH::Sink</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag of which to get the sink. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A temporary sink object. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01002">1002</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="aaa38dca5bb6875370d50a923cf52fcfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa38dca5bb6875370d50a923cf52fcfb">&#9670;&nbsp;</a></span>destruction() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#ada8da3c42b6f37209255eef008581b0b">sink_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::destruction </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a sink object for the given component. </p>
<p>A sink is an opaque object used to connect listeners to components.<br />
The sink returned by this function can be used to receive notifications whenever an instance of the given component is removed from an entity and thus destroyed.</p>
<p>The function type for a listener is: </p><div class="fragment"><div class="line">void(Registry&lt;Entity&gt; &amp;, Entity);</div></div><!-- fragment --><p>Listeners are invoked <b>before</b> the component has been removed from the entity. The order of invocation of the listeners isn't guaranteed.<br />
Note also that the greater the number of listeners, the greater the performance hit when a component is destroyed.</p>
<dl class="section see"><dt>See also</dt><dd>SigH::Sink</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component of which to get the sink. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A temporary sink object. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01031">1031</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a9289a7c5d8bed1ba59948311f8fcd3f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9289a7c5d8bed1ba59948311f8fcd3f4">&#9670;&nbsp;</a></span>discard()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename... Component&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::discard </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Discards all the data structures used for a given persitent view. </p>
<p>Persistent views occupy memory, no matter if they are in use or not.<br />
This function can be used to discard all the internal data structures dedicated to a specific persistent view, with the goal of reducing the memory pressure.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use a persistent view created before calling this function results in undefined behavior. No assertion available in this case, neither in debug mode nor in release mode.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Types of components of the persistent view. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01373">1373</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a1d7547f6d8503265480d235fe48dfb1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d7547f6d8503265480d235fe48dfb1d">&#9670;&nbsp;</a></span>each()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Func &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::each </td>
<td>(</td>
<td class="paramtype">Func&#160;</td>
<td class="paramname"><em>func</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterates all the entities that are still in use. </p>
<p>The function object is invoked for each entity that is still in use.<br />
The signature of the function should be equivalent to the following:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>);</div></div><!-- fragment --><p>This function is fairly slow and should not be used frequently.<br />
Consider using a view if the goal is to iterate entities that have a determinate set of components. A view is usually faster than combining this function with a bunch of custom tests.<br />
On the other side, this function can be used to iterate all the entities that are in use, regardless of their components.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Func</td><td>Type of the function object to invoke. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">func</td><td>A valid function object. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01204">1204</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a57193f01b75256867ba34342cd46ec13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57193f01b75256867ba34342cd46ec13">&#9670;&nbsp;</a></span>empty() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::empty </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks whether the pool of the given component is empty. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component in which one is interested. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the pool of the given component is empty, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00251">251</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a8735df0baab2fea088e6946e2811e29b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8735df0baab2fea088e6946e2811e29b">&#9670;&nbsp;</a></span>empty() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::empty </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if there exists at least an entity still in use. </p>
<dl class="section return"><dt>Returns</dt><dd>True if at least an entity is still in use, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00259">259</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a76bf9ca50a3651d3c0c32df0627d8270"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76bf9ca50a3651d3c0c32df0627d8270">&#9670;&nbsp;</a></span>fast()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::fast </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if an entity identifier refers to a valid entity. </p>
<p>Alternative version of <code>valid</code>. It accesses the internal data structures without bounds checking and thus it's both unsafe and risky to use.<br />
You should not invoke directly this function unless you know exactly what you are doing. Prefer the <code>valid</code> member function instead.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an entity that doesn't belong to the registry can result in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of bounds violation.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the identifier is valid, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00347">347</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a2079fb67093feb86b75e9dede6bb6c4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2079fb67093feb86b75e9dede6bb6c4d">&#9670;&nbsp;</a></span>get() <span class="overload">[1/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const Tag&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a reference to the given tag. </p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to get a tag that hasn't an owner results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode if the tag hasn't been previously attached to an entity.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag to get. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the tag. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00690">690</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a3c71607135bee449a486c8a5241dc70d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c71607135bee449a486c8a5241dc70d">&#9670;&nbsp;</a></span>get() <span class="overload">[2/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Tag&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a reference to the given tag. </p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to get a tag that hasn't an owner results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode if the tag hasn't been previously attached to an entity.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag to get. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the tag. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00708">708</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="aa40aa6a87415b2e88c67b8b9f895bfe8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa40aa6a87415b2e88c67b8b9f895bfe8">&#9670;&nbsp;</a></span>get() <span class="overload">[3/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const Component&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::get </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a reference to the given component for an entity. </p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity or to get a component from an entity that doesn't own it results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity or if the entity doesn't own an instance of the given component.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component to get. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the component owned by the entity. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00727">727</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="aefa861cd4cd2750ddb43f587fc756531"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aefa861cd4cd2750ddb43f587fc756531">&#9670;&nbsp;</a></span>get() <span class="overload">[4/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Component&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::get </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a reference to the given component for an entity. </p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity or to get a component from an entity that doesn't own it results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity or if the entity doesn't own an instance of the given component.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component to get. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the component owned by the entity. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00748">748</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a19e0832f4aceb58f1be1e7540313cec0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19e0832f4aceb58f1be1e7540313cec0">&#9670;&nbsp;</a></span>get() <span class="overload">[5/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename... Component&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::enable_if_t&lt;(sizeof...(Component) &gt; 1), std::tuple&lt;const Component &amp;...&gt; &gt; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::get </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a reference to the given components for an entity. </p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity or to get components from an entity that doesn't own them results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity or if the entity doesn't own instances of the given components.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of components to get. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>References to the components owned by the entity. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00768">768</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a73f3a68af4e73a74a273cca9ceab68a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73f3a68af4e73a74a273cca9ceab68a2">&#9670;&nbsp;</a></span>get() <span class="overload">[6/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename... Component&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::enable_if_t&lt;(sizeof...(Component) &gt; 1), std::tuple&lt;Component &amp;...&gt; &gt; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::get </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a reference to the given components for an entity. </p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity or to get components from an entity that doesn't own them results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity or if the entity doesn't own instances of the given components.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of components to get. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>References to the components owned by the entity. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00788">788</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="ae2be7a8e1e6216b8a48fa941e9d3fbd6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2be7a8e1e6216b8a48fa941e9d3fbd6">&#9670;&nbsp;</a></span>has() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::has </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if the given tag has an owner. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag for which to perform the check. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the tag already has an owner, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00624">624</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="afc108dadf41e5080274bcc4e877024e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc108dadf41e5080274bcc4e877024e4">&#9670;&nbsp;</a></span>has() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::has </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structentt_1_1tag__t.html">tag_t</a>&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if an entity owns the given tag. </p>
<p>Syntactic sugar for the following snippet:</p>
<div class="fragment"><div class="line">registry.has&lt;Tag&gt;() &amp;&amp; registry.attachee&lt;Tag&gt;() == entity</div></div><!-- fragment --><dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag for which to perform the check. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the entity owns the tag, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00651">651</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a1ca7a3b46d14db8d917547643b1ab614"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ca7a3b46d14db8d917547643b1ab614">&#9670;&nbsp;</a></span>has() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename... Component&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::has </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if an entity has all the given components. </p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Components for which to perform the check. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the entity has all the components, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00668">668</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a459073e0dfdb4f21519792717f688173"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a459073e0dfdb4f21519792717f688173">&#9670;&nbsp;</a></span>move()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::move </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Changes the owner of the given tag. </p>
<p>The ownership of the tag is transferred from one entity to another.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity or to transfer the ownership of a tag that hasn't an owner results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity or if the tag hasn't been previously attached to an entity.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag of which to transfer the ownership. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A valid entity identifier. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00857">857</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a6ff250745f1774984a9524d63855f26d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ff250745f1774984a9524d63855f26d">&#9670;&nbsp;</a></span>operator=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html">Registry</a>&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html">Registry</a>&lt; Entity &gt; &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copying a registry isn't allowed. </p>
<dl class="section return"><dt>Returns</dt><dd>This registry. </dd></dl>
</div>
</div>
<a id="ade7432a219317a6912553feb2971188b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade7432a219317a6912553feb2971188b">&#9670;&nbsp;</a></span>operator=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html">Registry</a>&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classentt_1_1Registry.html">Registry</a>&lt; Entity &gt; &amp;&amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default move assignment operator. </p>
<dl class="section return"><dt>Returns</dt><dd>This registry. </dd></dl>
</div>
</div>
<a id="a3b4a5341ac0ef79fd2477753e857a9cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b4a5341ac0ef79fd2477753e857a9cb">&#9670;&nbsp;</a></span>orphan()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::orphan </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if an entity is an orphan. </p>
<p>An orphan is an entity that has neither assigned components nor tags.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the entity is an orphan, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01231">1231</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="ada2900e50f66573c14821baac03bbd68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada2900e50f66573c14821baac03bbd68">&#9670;&nbsp;</a></span>orphans()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Func &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::orphans </td>
<td>(</td>
<td class="paramtype">Func&#160;</td>
<td class="paramname"><em>func</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterates orphans and applies them the given function object. </p>
<p>The function object is invoked for each entity that is still in use and has neither assigned components nor tags.<br />
The signature of the function should be equivalent to the following:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>);</div></div><!-- fragment --><p>This function can be very slow and should not be used frequently.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Func</td><td>Type of the function object to invoke. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">func</td><td>A valid function object. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01265">1265</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="ac05c9ccc5fe57df386d8104578fc9675"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac05c9ccc5fe57df386d8104578fc9675">&#9670;&nbsp;</a></span>prepare()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename... Component&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::prepare </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Prepares the internal data structures used by persistent views. </p>
<p>Persistent views are an incredibly fast tool used to iterate a packed array of entities all of which have specific components.<br />
The initialization of a persistent view is also a pretty cheap operation, but for the first time they are created. That's mainly because of the internal data structures of the registry that are dedicated to this kind of views and that don't exist yet the very first time they are requested.<br />
To avoid costly operations, internal data structures for persistent views can be prepared with this function. Just use the same set of components that would have been used otherwise to construct the view.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Types of components used to prepare the view. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01329">1329</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="aaa4a9703f583da393101aa91604267e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa4a9703f583da393101aa91604267e6">&#9670;&nbsp;</a></span>raw() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const Component* <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::raw </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Direct access to the list of components of a given pool. </p>
<p>The returned pointer is such that range <code>[raw&lt;Component&gt;(), raw&lt;Component&gt;() + size&lt;Component&gt;()]</code> is always a valid range, even if the container is empty.</p>
<dl class="section note"><dt>Note</dt><dd>There are no guarantees on the order of the components. Use a view if you want to iterate entities and components in the expected order.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component in which one is interested. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the array of components of the given type. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00278">278</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a1728046f5645bf2ff3f167c40ca29d0e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1728046f5645bf2ff3f167c40ca29d0e">&#9670;&nbsp;</a></span>raw() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Component* <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::raw </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Direct access to the list of components of a given pool. </p>
<p>The returned pointer is such that range <code>[raw&lt;Component&gt;(), raw&lt;Component&gt;() + size&lt;Component&gt;()]</code> is always a valid range, even if the container is empty.</p>
<dl class="section note"><dt>Note</dt><dd>There are no guarantees on the order of the components. Use a view if you want to iterate entities and components in the expected order.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component in which one is interested. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the array of components of the given type. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00297">297</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a957bcbdbf082f9767e5474a73be6ece4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a957bcbdbf082f9767e5474a73be6ece4">&#9670;&nbsp;</a></span>remove() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::remove </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes the given tag from its owner, if any. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag to remove. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00587">587</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a113ff63724bdb90344984d5dd16995f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a113ff63724bdb90344984d5dd16995f2">&#9670;&nbsp;</a></span>remove() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::remove </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes the given component from an entity. </p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity or to remove a component from an entity that doesn't own it results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity or if the entity doesn't own an instance of the given component.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component to remove. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00610">610</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a39b071aa110b8ea38fb71ca471d371b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39b071aa110b8ea38fb71ca471d371b5">&#9670;&nbsp;</a></span>replace() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag , typename... Args&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Tag&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::replace </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structentt_1_1tag__t.html">tag_t</a>&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Replaces the given tag. </p>
<p>A new instance of the given tag is created and initialized with the arguments provided (the tag must have a proper constructor or be of aggregate type).</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to replace a tag that hasn't an owner results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode if the tag hasn't been previously attached to an entity.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag to replace. </td></tr>
<tr><td class="paramname">Args</td><td>Types of arguments to use to construct the tag. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">args</td><td>Parameters to use to initialize the tag. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the tag. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00811">811</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a2482e363a9b4ff9b6a4a0e1385c7b6e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2482e363a9b4ff9b6a4a0e1385c7b6e1">&#9670;&nbsp;</a></span>replace() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component , typename... Args&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Component&amp; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::replace </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Replaces the given component for an entity. </p>
<p>A new instance of the given component is created and initialized with the arguments provided (the component must have a proper constructor or be of aggregate type). Then the component is assigned to the given entity.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity or to replace a component of an entity that doesn't own it results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity or if the entity doesn't own an instance of the given component.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component to replace. </td></tr>
<tr><td class="paramname">Args</td><td>Types of arguments to use to construct the component. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
<tr><td class="paramname">args</td><td>Parameters to use to initialize the component. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the newly created component. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00836">836</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a6d57a57e13ca236a215e332b94852147"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d57a57e13ca236a215e332b94852147">&#9670;&nbsp;</a></span>reserve() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::reserve </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a>&#160;</td>
<td class="paramname"><em>cap</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Increases the capacity of the pool for the given component. </p>
<p>If the new capacity is greater than the current capacity, new storage is allocated, otherwise the method does nothing.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component for which to reserve storage. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cap</td><td>Desired capacity. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00208">208</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="aa927ac552b42e2a0fcc8de08f56510c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa927ac552b42e2a0fcc8de08f56510c7">&#9670;&nbsp;</a></span>reserve() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::reserve </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a>&#160;</td>
<td class="paramname"><em>cap</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Increases the capacity of a registry in terms of entities. </p>
<p>If the new capacity is greater than the current capacity, new storage is allocated, otherwise the method does nothing.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cap</td><td>Desired capacity. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00221">221</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="af406e83980abc792905ff4a0626b3d02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af406e83980abc792905ff4a0626b3d02">&#9670;&nbsp;</a></span>reset() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::reset </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Resets the given component for an entity. </p>
<p>If the entity has an instance of the component, this function removes the component from the entity. Otherwise it does nothing.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid entity results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode in case of invalid entity.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component to reset. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01135">1135</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a613333e0a4acb227d08938ccc594e064"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a613333e0a4acb227d08938ccc594e064">&#9670;&nbsp;</a></span>reset() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::reset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Resets the pool of the given component. </p>
<p>For each entity that has an instance of the given component, the component itself is removed and thus destroyed.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component whose pool must be reset. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01156">1156</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a1b6ec743e9a62389cf2bba9a25ee09d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b6ec743e9a62389cf2bba9a25ee09d7">&#9670;&nbsp;</a></span>reset() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::reset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Resets a whole registry. </p>
<p>Destroys all the entities. After a call to <code>reset</code>, all the entities still in use are recycled with a new version number. In case entity identifers are stored around, the <code>valid</code> member function can be used to know if they are still valid. </p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01176">1176</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a37b755b43c7067658d2b4129baa403cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37b755b43c7067658d2b4129baa403cf">&#9670;&nbsp;</a></span>restore()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1SnapshotLoader.html">SnapshotLoader</a>&lt;Entity&gt; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::restore </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a temporary object to use to load snapshots. </p>
<p>A snapshot is either a full or a partial dump of a registry.<br />
It can be used to save and restore its internal state or to keep two or more instances of this class in sync, as an example in a client-server architecture.</p>
<dl class="section warning"><dt>Warning</dt><dd>The loader returned by this function requires that the registry be empty. In case it isn't, all the data will be automatically deleted before to return.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>A temporary object to use to load snasphosts. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01555">1555</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a88d7621801898d0a551cfd98b29a7cd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88d7621801898d0a551cfd98b29a7cd0">&#9670;&nbsp;</a></span>size() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of existing components of the given type. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component of which to return the size. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of existing components of the given type. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00186">186</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a1be83159fed73573014e6e2919ecabf3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1be83159fed73573014e6e2919ecabf3">&#9670;&nbsp;</a></span>size() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#a741ffda6e06838c5593ba97adc7658e2">size_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of entities still in use. </p>
<dl class="section return"><dt>Returns</dt><dd>Number of entities still in use. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00194">194</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a00a0b4949a4cc0cb87e88cc6d1171a9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a00a0b4949a4cc0cb87e88cc6d1171a9d">&#9670;&nbsp;</a></span>snapshot()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Snapshot.html">Snapshot</a>&lt;Entity&gt; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::snapshot </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a temporary object to use to create snapshots. </p>
<p>A snapshot is either a full or a partial dump of a registry.<br />
It can be used to save and restore its internal state or to keep two or more instances of this class in sync, as an example in a client-server architecture.</p>
<dl class="section return"><dt>Returns</dt><dd>A temporary object to use to take snasphosts. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01526">1526</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="acb72e05f3128b6604b438707eabdfa4a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb72e05f3128b6604b438707eabdfa4a">&#9670;&nbsp;</a></span>sort() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component , typename Compare , typename Sort = StdSort, typename... Args&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::sort </td>
<td>(</td>
<td class="paramtype">Compare&#160;</td>
<td class="paramname"><em>compare</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Sort&#160;</td>
<td class="paramname"><em>sort</em> = <code>Sort{}</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sorts the pool of entities for the given component. </p>
<p>The order of the elements in a pool is highly affected by assignments of components to entities and deletions. Components are arranged to maximize the performance during iterations and users should not make any assumption on the order.<br />
This function can be used to impose an order to the elements in the pool of the given component. The order is kept valid until a component of the given type is assigned or removed from an entity.</p>
<p>The comparison function object must return <code>true</code> if the first element is <em>less</em> than the second one, <code>false</code> otherwise. The signature of the comparison function should be equivalent to the following:</p>
<div class="fragment"><div class="line">bool(<span class="keyword">const</span> Component &amp;, <span class="keyword">const</span> Component &amp;)</div></div><!-- fragment --><p>Moreover, the comparison function object shall induce a <em>strict weak ordering</em> on the values.</p>
<p>The sort function oject must offer a member function template <code>operator()</code> that accepts three arguments:</p>
<ul>
<li>An iterator to the first element of the range to sort.</li>
<li>An iterator past the last element of the range to sort.</li>
<li>A comparison function to use to compare the elements.</li>
</ul>
<p>The comparison funtion object received by the sort function object hasn't necessarily the type of the one passed along with the other parameters to this member function.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of components to sort. </td></tr>
<tr><td class="paramname">Compare</td><td>Type of comparison function object. </td></tr>
<tr><td class="paramname">Sort</td><td>Type of sort function object. </td></tr>
<tr><td class="paramname">Args</td><td>Types of arguments to forward to the sort function object. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">compare</td><td>A valid comparison function object. </td></tr>
<tr><td class="paramname">sort</td><td>A valid sort function object. </td></tr>
<tr><td class="paramname">args</td><td>Arguments to forward to the sort function object, if any. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01078">1078</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="aa3abb830a7ba342266b62ff1a2965754"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3abb830a7ba342266b62ff1a2965754">&#9670;&nbsp;</a></span>sort() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename To , typename From &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::sort </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sorts two pools of components in the same way. </p>
<p>The order of the elements in a pool is highly affected by assignments of components to entities and deletions. Components are arranged to maximize the performance during iterations and users should not make any assumption on the order.</p>
<p>It happens that different pools of components must be sorted the same way because of runtime and/or performance constraints. This function can be used to order a pool of components according to the order between the entities in another pool of components.</p>
<p><b>How</b> <b>it</b> <b>works</b> </p>
<p>Being <code>A</code> and <code>B</code> the two sets where <code>B</code> is the master (the one the order of which rules) and <code>A</code> is the slave (the one to sort), after a call to this function an iterator for <code>A</code> will return the entities according to the following rules:</p>
<ul>
<li>All the entities in <code>A</code> that are also in <code>B</code> are returned first according to the order they have in <code>B</code>.</li>
<li>All the entities in <code>A</code> that are not in <code>B</code> are returned in no particular order after all the other entities.</li>
</ul>
<p>Any subsequent change to <code>B</code> won't affect the order in <code>A</code>.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">To</td><td>Type of components to sort. </td></tr>
<tr><td class="paramname">From</td><td>Type of components to use to sort. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01114">1114</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a682552d500d7768b5d9d4e5f547cdfaf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a682552d500d7768b5d9d4e5f547cdfaf">&#9670;&nbsp;</a></span>type() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Tag &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classentt_1_1Registry.html#a357cfdc1b3c5abc7a36e8eddbd6ce5c7">tag_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::type </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structentt_1_1tag__t.html">tag_t</a>&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the numeric identifier of a type of tag at runtime. </p>
<p>The given tag doesn't need to be necessarily in use. However, the registry could decide to prepare internal data structures for it for later uses.<br />
Do not use this functionality to provide numeric identifiers to types at runtime.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Tag</td><td>Type of tag to query. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Runtime numeric identifier of the given type of tag. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00159">159</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a484018ca7d1898708ea17a651eddc7e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a484018ca7d1898708ea17a651eddc7e4">&#9670;&nbsp;</a></span>type() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classentt_1_1Registry.html#aefd07a0cdff88ebf1e35e531d58c3077">component_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::type </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the numeric identifier of a type of component at runtime. </p>
<p>The given component doesn't need to be necessarily in use. However, the registry could decide to prepare internal data structures for it for later uses.<br />
Do not use this functionality to provide numeric identifiers to types at runtime.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component to query. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Runtime numeric identifier of the given type of component. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00176">176</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="aaba72db4ebf99a911b58327063ec8ad9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaba72db4ebf99a911b58327063ec8ad9">&#9670;&nbsp;</a></span>valid()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::valid </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks if an entity identifier refers to a valid entity. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>An entity identifier, either valid or not. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the identifier is valid, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00325">325</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="ad7467ac1c8a7657062b1b4386dded54e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7467ac1c8a7657062b1b4386dded54e">&#9670;&nbsp;</a></span>version()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1Registry.html#a82c8996277034df5e72b5f30a70ebb2d">version_type</a> <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::version </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1Registry.html#ad434a1920dd2c6a9a31ab482e2f29038">entity_type</a>&#160;</td>
<td class="paramname"><em>entity</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the version stored along with an entity identifier. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entity</td><td>An entity identifier, either valid or not. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Version stored along with the given entity identifier. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00358">358</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="aed83d4c8f80ae647ee73f2a8440fa09d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed83d4c8f80ae647ee73f2a8440fa09d">&#9670;&nbsp;</a></span>view() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename... Component&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1View.html">View</a>&lt;Entity, Component...&gt; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::view </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a standard view for the given components. </p>
<p>This kind of views are created on the fly and share with the registry its internal data structures.<br />
Feel free to discard a view after the use. Creating and destroying a view is an incredibly cheap operation because they do not require any type of initialization.<br />
As a rule of thumb, storing a view should never be an option.</p>
<p>Standard views do their best to iterate the smallest set of candidate entities. In particular:</p>
<ul>
<li>Single component views are incredibly fast and iterate a packed array of entities, all of which has the given component.</li>
<li>Multi component views look at the number of entities available for each component and pick up a reference to the smallest set of candidates to test for the given components.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Multi component views are pretty fast. However their performance tend to degenerate when the number of components to iterate grows up and the most of the entities have all the given components.<br />
To get a performance boost, consider using a <a class="el" href="classentt_1_1PersistentView.html" title="Persistent view. ">PersistentView</a> instead.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1View.html" title="Multi component view. ">View</a> </dd>
<dd>
<a class="el" href="classentt_1_1View_3_01Entity_00_01Component_01_4.html" title="Single component view specialization. ">View&lt;Entity, Component&gt;</a> </dd>
<dd>
<a class="el" href="classentt_1_1PersistentView.html" title="Persistent view. ">PersistentView</a> </dd>
<dd>
<a class="el" href="classentt_1_1RawView.html" title="Raw view. ">RawView</a> </dd>
<dd>
<a class="el" href="classentt_1_1RuntimeView.html" title="Runtime view. ">RuntimeView</a></dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of components used to construct the view. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created standard view. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01308">1308</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="abb1eb5f1a2ec31d14b5b98271ff78f1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb1eb5f1a2ec31d14b5b98271ff78f1e">&#9670;&nbsp;</a></span>view() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename... Component&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1PersistentView.html">PersistentView</a>&lt;Entity, Component...&gt; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::view </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structentt_1_1persistent__t.html">persistent_t</a>&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a persistent view for the given components. </p>
<p>This kind of views are created on the fly and share with the registry its internal data structures.<br />
Feel free to discard a view after the use. Creating and destroying a view is an incredibly cheap operation because they do not require any type of initialization.<br />
As a rule of thumb, storing a view should never be an option.</p>
<p>Persistent views are the right choice to iterate entities when the number of components grows up and the most of the entities have all the given components.<br />
However they have also drawbacks:</p>
<ul>
<li>Each kind of persistent view requires a dedicated data structure that is allocated within the registry and it increases memory pressure.</li>
<li>Internal data structures used to construct persistent views must be kept updated and it affects slightly construction and destruction of entities and components.</li>
</ul>
<p>That being said, persistent views are an incredibly powerful tool if used with care and offer a boost of performance undoubtedly.</p>
<dl class="section note"><dt>Note</dt><dd>Consider to use the <code>prepare</code> member function to initialize the internal data structures used by persistent views when the registry is still empty. Initialization could be a costly operation otherwise and it will be performed the very first time each view is created.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1View.html" title="Multi component view. ">View</a> </dd>
<dd>
<a class="el" href="classentt_1_1View_3_01Entity_00_01Component_01_4.html" title="Single component view specialization. ">View&lt;Entity, Component&gt;</a> </dd>
<dd>
<a class="el" href="classentt_1_1PersistentView.html" title="Persistent view. ">PersistentView</a> </dd>
<dd>
<a class="el" href="classentt_1_1RawView.html" title="Raw view. ">RawView</a> </dd>
<dd>
<a class="el" href="classentt_1_1RuntimeView.html" title="Runtime view. ">RuntimeView</a></dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Types of components used to construct the view. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created persistent view. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01443">1443</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="aedc2a2344c5d13a0483608d48189a92a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aedc2a2344c5d13a0483608d48189a92a">&#9670;&nbsp;</a></span>view() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename Component &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1RawView.html">RawView</a>&lt;Entity, Component&gt; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::view </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structentt_1_1raw__t.html">raw_t</a>&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a raw view for the given component. </p>
<p>This kind of views are created on the fly and share with the registry its internal data structures.<br />
Feel free to discard a view after the use. Creating and destroying a view is an incredibly cheap operation because they do not require any type of initialization.<br />
As a rule of thumb, storing a view should never be an option.</p>
<p>Raw views are incredibly fast and must be considered the best tool to iterate components whenever knowing the entities to which they belong isn't required.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1View.html" title="Multi component view. ">View</a> </dd>
<dd>
<a class="el" href="classentt_1_1View_3_01Entity_00_01Component_01_4.html" title="Single component view specialization. ">View&lt;Entity, Component&gt;</a> </dd>
<dd>
<a class="el" href="classentt_1_1PersistentView.html" title="Persistent view. ">PersistentView</a> </dd>
<dd>
<a class="el" href="classentt_1_1RawView.html" title="Raw view. ">RawView</a> </dd>
<dd>
<a class="el" href="classentt_1_1RuntimeView.html" title="Runtime view. ">RuntimeView</a></dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component used to construct the view. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created raw view. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01473">1473</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<a id="a4a157973e57670b5df3eedc8d137de7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a157973e57670b5df3eedc8d137de7e">&#9670;&nbsp;</a></span>view() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity&gt; </div>
<div class="memtemplate">
template&lt;typename It &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1RuntimeView.html">RuntimeView</a>&lt;Entity&gt; <a class="el" href="classentt_1_1Registry.html">entt::Registry</a>&lt; Entity &gt;::view </td>
<td>(</td>
<td class="paramtype">It&#160;</td>
<td class="paramname"><em>first</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">It&#160;</td>
<td class="paramname"><em>last</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a runtime view for the given components. </p>
<p>This kind of views are created on the fly and share with the registry its internal data structures.<br />
Users should throw away the view after use. Fortunately, creating and destroying a view is an incredibly cheap operation because they do not require any type of initialization.<br />
As a rule of thumb, storing a view should never be an option.</p>
<p>Runtime views are well suited when users want to construct a view from some external inputs and don't know at compile-time what are the required components.<br />
This is particularly well suited to plugin systems and mods in general.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1View.html" title="Multi component view. ">View</a> </dd>
<dd>
<a class="el" href="classentt_1_1View_3_01Entity_00_01Component_01_4.html" title="Single component view specialization. ">View&lt;Entity, Component&gt;</a> </dd>
<dd>
<a class="el" href="classentt_1_1PersistentView.html" title="Persistent view. ">PersistentView</a> </dd>
<dd>
<a class="el" href="classentt_1_1RawView.html" title="Raw view. ">RawView</a> </dd>
<dd>
<a class="el" href="classentt_1_1RuntimeView.html" title="Runtime view. ">RuntimeView</a></dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">It</td><td>Type of forward iterator. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">first</td><td>An iterator to the first element of the range of components. </td></tr>
<tr><td class="paramname">last</td><td>An iterator past the last element of the range of components. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created runtime view. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01505">1505</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/entt/entity/<a class="el" href="registry_8hpp_source.html">registry.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- 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.13
</small></address>
</body>
</html>