API reference v3.1.1

This commit is contained in:
Michele Caini
2019-09-05 15:42:26 +02:00
parent dbcc605d4e
commit c600a6be5e
447 changed files with 7131 additions and 617 deletions

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -71,7 +71,7 @@ $(function() {
<div class="ttc" id="structentt_1_1basic__actor_html_a46dc913885c448e059e9ca7cf3a21221"><div class="ttname"><a href="structentt_1_1basic__actor.html#a46dc913885c448e059e9ca7cf3a21221">entt::basic_actor::~basic_actor</a></div><div class="ttdeci">virtual ~basic_actor()</div><div class="ttdoc">Default destructor. </div><div class="ttdef"><b>Definition:</b> <a href="actor_8hpp_source.html#l00058">actor.hpp:58</a></div></div>
<div class="ttc" id="structentt_1_1basic__actor_html_a8e7a76ea53bc8a0cce33462def30b9ac"><div class="ttname"><a href="structentt_1_1basic__actor.html#a8e7a76ea53bc8a0cce33462def30b9ac">entt::basic_actor::has</a></div><div class="ttdeci">bool has() const ENTT_NOEXCEPT</div><div class="ttdoc">Checks if an actor has the given components. </div><div class="ttdef"><b>Definition:</b> <a href="actor_8hpp_source.html#l00133">actor.hpp:133</a></div></div>
<div class="ttc" id="structentt_1_1basic__actor_html_a827ed2e23e39e8b706f7acc511a46024"><div class="ttname"><a href="structentt_1_1basic__actor.html#a827ed2e23e39e8b706f7acc511a46024">entt::basic_actor::backend</a></div><div class="ttdeci">registry_type &amp; backend() ENTT_NOEXCEPT</div><div class="ttdoc">Returns a reference to the underlying registry. </div><div class="ttdef"><b>Definition:</b> <a href="actor_8hpp_source.html#l00178">actor.hpp:178</a></div></div>
<div class="ttc" id="classentt_1_1basic__registry_html_af58f3add442cfb3f1fa470402db072bd"><div class="ttname"><a href="classentt_1_1basic__registry.html#af58f3add442cfb3f1fa470402db072bd">entt::basic_registry::destroy</a></div><div class="ttdeci">void destroy(const entity_type entity)</div><div class="ttdoc">Destroys an entity and lets the registry recycle the identifier. </div><div class="ttdef"><b>Definition:</b> <a href="registry_8hpp_source.html#l00677">registry.hpp:677</a></div></div>
<div class="ttc" id="classentt_1_1basic__registry_html_af58f3add442cfb3f1fa470402db072bd"><div class="ttname"><a href="classentt_1_1basic__registry.html#af58f3add442cfb3f1fa470402db072bd">entt::basic_registry::destroy</a></div><div class="ttdeci">void destroy(const entity_type entity)</div><div class="ttdoc">Destroys an entity and lets the registry recycle the identifier. </div><div class="ttdef"><b>Definition:</b> <a href="registry_8hpp_source.html#l00695">registry.hpp:695</a></div></div>
<div class="ttc" id="namespaceentt_html"><div class="ttname"><a href="namespaceentt.html">entt</a></div><div class="ttdoc">EnTT default namespace. </div><div class="ttdef"><b>Definition:</b> <a href="algorithm_8hpp_source.html#l00012">algorithm.hpp:12</a></div></div>
<div class="ttc" id="structentt_1_1basic__actor_html_a2c2e10f12014f5269be0b9ab055acfca"><div class="ttname"><a href="structentt_1_1basic__actor.html#a2c2e10f12014f5269be0b9ab055acfca">entt::basic_actor::entity_type</a></div><div class="ttdeci">Entity entity_type</div><div class="ttdoc">Underlying entity identifier. </div><div class="ttdef"><b>Definition:</b> <a href="actor_8hpp_source.html#l00032">actor.hpp:32</a></div></div>
<div class="ttc" id="structentt_1_1basic__actor_html_a079bddd72566b14843729a154a8f684e"><div class="ttname"><a href="structentt_1_1basic__actor.html#a079bddd72566b14843729a154a8f684e">entt::basic_actor::backend</a></div><div class="ttdeci">const registry_type &amp; backend() const ENTT_NOEXCEPT</div><div class="ttdoc">Returns a reference to the underlying registry. </div><div class="ttdef"><b>Definition:</b> <a href="actor_8hpp_source.html#l00173">actor.hpp:173</a></div></div>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

126
autotoc_md48.html Normal file
View File

@@ -0,0 +1,126 @@
<!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: Frequently Asked Questions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</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><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Frequently Asked Questions </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="autotoc_md49"></a>
Introduction</h1>
<p>This is a constantly updated section where I'll try to put the answers to the most frequently asked questions.<br />
If you don't find your answer here, there are two cases: nobody has done it yet or this section needs updating. In both cases, try to <a href="https://github.com/skypjack/entt/issues/new">open a new issue</a> or enter the <a href="https://gitter.im/skypjack/entt">gitter channel</a> and ask your question. Probably someone already has an answer for you and we can then integrate this part of the documentation.</p>
<h1><a class="anchor" id="autotoc_md50"></a>
FAQ</h1>
<h2><a class="anchor" id="autotoc_md51"></a>
Why is my debug build on Windows so slow?</h2>
<p><code>EnTT</code> is an experimental project that I also use to keep me up-to-date with the latest revision of the language and the standard library. For this reason, it's likely that some classes you're working with are using standard containers under the hood.<br />
Unfortunately, it's known that the standard containers aren't particularly performing in debugging (the reasons for this go beyond this document) and are even less so on Windows apparently. Fortunately this can also be mitigated a lot, achieving good results in many cases.</p>
<p>First of all, there are two things to do in a Windows project:</p>
<ul>
<li>Disable the <a href="https://docs.microsoft.com/cpp/build/reference/jmc"><code>/JMC</code></a> option (<em>Just My Code</em> debugging), available starting in Visual Studio 2017 version 15.8.</li>
<li>Set the <a href="https://docs.microsoft.com/cpp/standard-library/iterator-debug-level"><code>_ITERATOR_DEBUG_LEVEL</code></a> macro to 0. This will disable checked iterators and iterator debugging.</li>
</ul>
<p>Moreover, the macro <code>ENTT_DISABLE_ASSERT</code> should be defined to disable internal checks made by <code>EnTT</code> in debug. These are asserts introduced to help the users, but require to access to the underlying containers and therefore risk ruining the performance in some cases.</p>
<p>With these changes, debug performance should increase enough for most cases. If you want something more, you can can also switch to an optimization level <code>O0</code> or preferably <code>O1</code>.</p>
<h2><a class="anchor" id="autotoc_md52"></a>
How can I represent hierarchies with my components?</h2>
<p>This is one of the first questions that anyone makes when starting to work with the entity-component-system architectural pattern.<br />
There are several approaches to the problem and whats the best one depends mainly on the real problem one is facing. In all cases, how to do it doesn't strictly depend on the library in use, but the latter can certainly allow or not different techniques depending on how the data are laid out.</p>
<p>I tried to describe some of the techniques that fit well with the model of <code>EnTT</code>. <a href="https://skypjack.github.io/2019-06-25-ecs-baf-part-4/">Here</a> is the first post of a series that tries to explore the problem. More will probably come in future.</p>
<p>Long story short, you can always define a tree where the nodes expose implicit lists of children by means of the following type:</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>relationship {</div><div class="line"> std::size_t children{};</div><div class="line"> entt::entity first{<a class="code" href="namespaceentt.html#a588326af8f6f902a6c0b57d3f9fc6c17">entt::null</a>};</div><div class="line"> entt::entity prev{<a class="code" href="namespaceentt.html#a588326af8f6f902a6c0b57d3f9fc6c17">entt::null</a>};</div><div class="line"> entt::entity next{<a class="code" href="namespaceentt.html#a588326af8f6f902a6c0b57d3f9fc6c17">entt::null</a>};</div><div class="line"> entt::entity parent{<a class="code" href="namespaceentt.html#a588326af8f6f902a6c0b57d3f9fc6c17">entt::null</a>};</div><div class="line"> <span class="comment">// ... other data members ...</span></div><div class="line">};</div></div><!-- fragment --><p>The sort functionalities of <code>EnTT</code>, the groups and all the other features of the library can help then to get the best in terms of data locality and therefore performance from this component.</p>
<h2><a class="anchor" id="autotoc_md53"></a>
Custom entity identifiers: yay or nay?</h2>
<p>Custom entity identifiers are definitely a good idea in two cases at least:</p>
<ul>
<li>If <code>std::uint32_t</code> isn't large enough as an underlying type.</li>
<li>If you want to avoid conflicts when using multiple registries.</li>
</ul>
<p>These identifiers are nothing more than enum classes with some salt.<br />
To simplify the creation of new identifiers, <code>EnTT</code> provides the macro <code>ENTT_ENTITY_TYPE</code> that accepts two arguments:</p>
<ul>
<li>The name you want to give to the new identifier (watch out for namespaces).</li>
<li>The underlying type to use (either <code>std::uint16_t</code>, <code>std::uint32_t</code> or <code>std::uint64_t</code>).</li>
</ul>
<p>In fact, this is the definition of <code>entt::entity</code>:</p>
<div class="fragment"><div class="line">ENTT_ENTITY_TYPE(entity, std::uint32_t)</div></div><!-- fragment --><p>The use of this macro is highly recommended, so as not to run into problems if the requirements for the identifiers should change in the future.</p>
<h2><a class="anchor" id="autotoc_md54"></a>
Warning C4307: integral constant overflow</h2>
<p>According to <a href="https://github.com/skypjack/entt/issues/121">this</a> issue, using a hashed string under VS could generate a warning.<br />
First of all, I want to reassure you: it's expected and harmless. However, it can be annoying.</p>
<p>To suppress it and if you don't want to suppress all the other warnings as well, here is a workaround in the form of a macro:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#if defined(_MSC_VER)</span></div><div class="line"><span class="preprocessor"> #define HS(str)\</span></div><div class="line"><span class="preprocessor"> __pragma(warning(push))\</span></div><div class="line"><span class="preprocessor"> __pragma(warning(disable:4307))\</span></div><div class="line"><span class="preprocessor"> entt::hashed_string{str}\</span></div><div class="line"><span class="preprocessor"> __pragma(warning(pop))</span></div><div class="line"><span class="preprocessor">#else</span></div><div class="line"><span class="preprocessor"> #define HS(str) entt::hashed_string{str}</span></div><div class="line"><span class="preprocessor">#endif</span></div></div><!-- fragment --><p>With an example of use included:</p>
<div class="fragment"><div class="line">constexpr <span class="keyword">auto</span> identifier = HS(<span class="stringliteral">&quot;my/resource/identifier&quot;</span>);</div></div><!-- fragment --><p>Thanks to <a href="https://github.com/huwpascoe">huwpascoe</a> for the courtesy.</p>
<h2><a class="anchor" id="autotoc_md55"></a>
Warning C4003: the min, the max and the macro</h2>
<p>On Windows, a header file defines two macros <code>min</code> and <code>max</code> which may result in conflicts with their counterparts in the standard library and therefore in errors during compilation.</p>
<p>It's a pretty big problem but fortunately it's not a problem of <code>EnTT</code> and there is a fairly simple solution to it.<br />
It consists in defining the <code>NOMINMAX</code> macro before to include any other header so as to get rid of the extra definitions:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#define NOMINMAX</span></div></div><!-- fragment --><p>Please refer to <a href="https://github.com/skypjack/entt/issues/96">this</a> issue for more details. </p>
</div></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>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

116
autotoc_md56.html Normal file
View File

@@ -0,0 +1,116 @@
<!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: Push EnTT across boundaries</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</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><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Push EnTT across boundaries </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="autotoc_md57"></a>
Introduction</h1>
<p><code>EnTT</code> has historically had a limit when used across boundaries on Windows in general and on GNU/Linux when default visibility was set to <em>hidden</em>. The limitation is due mainly to a custom utility used to assign unique, sequential identifiers to different types. Unfortunately, this tool is used by several core classes (the <code>registry</code> among the others) that are thus almost unusable across boundaries.<br />
The reasons for that are beyond the purposes of this document. However, the good news is that <code>EnTT</code> also offers now a way to overcome this limit and to push things across boundaries without problems when needed.</p>
<h1><a class="anchor" id="autotoc_md58"></a>
Named types and traits class</h1>
<p>To allow a type to work properly across boundaries when used by a class that requires to assign unique identifiers to types, users must specialize a class template to literally give a compile-time name to the type itself.<br />
The name of the class template is <code>name_type_traits</code> and the specialization must be such that it exposes a static constexpr data member named <code>value</code> having type either <code>ENTT_ID_TYPE</code> or <code><a class="el" href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd" title="Unsigned integer type. ">entt::hashed_string::hash_type</a></code>. Its value is the user defined unique identifier assigned to the specific type.<br />
Identifiers are not to be sequentially generated in this case.</p>
<p>As an example:</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>my_type { <span class="comment">/* ... */</span> };</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;&gt;</div><div class="line"><span class="keyword">struct </span><a class="code" href="structentt_1_1named__type__traits.html">entt::named_type_traits</a>&lt;my_type&gt; {</div><div class="line"> <span class="keyword">static</span> constexpr <span class="keyword">auto</span> value = <span class="stringliteral">&quot;my_type&quot;</span>_hs;</div><div class="line">};</div></div><!-- fragment --><p>Because of the rules of the language, the specialization must reside in the global namespace or in the <code>entt</code> namespace. There is no way to change this rule unfortunately, because it doesn't depend on the library itself.</p>
<p>The good aspect of this approach is that it's not intrusive at all. The other way around was in fact forcing users to inherit all their classes from a common base. Something to avoid, at least from my point of view.<br />
However, despite the fact that it's not intrusive, it would be great if it was also easier to use and a bit less error-prone. This is why a bunch of macros exist to ease defining named types.</p>
<h2><a class="anchor" id="autotoc_md59"></a>
Do not mix types</h2>
<p>Someone might think that this trick is valid only for the types to push across boundaries. This isn't how things work. In fact, the problem is more complex than that.<br />
As a rule of thumb, users should never mix named and non-named types. Whenever a type is given a name, all the types must be given a name. As an example, consider the <code>registry</code> class template: in case it is pushed across boundaries, all the types of components should be assigned a name to avoid subtle bugs.</p>
<p>Indeed, this constraint can be relaxed in many cases. However, it is difficult to define a general rule to follow that is not the most stringent, unless users know exactly what they are doing. Therefore, I won't elaborate on giving further details on the topic.</p>
<h1><a class="anchor" id="autotoc_md60"></a>
Macros, macros everywhere</h1>
<p>The library comes with a set of predefined macros to use to declare named types or export already existing ones. In particular:</p>
<ul>
<li><code>ENTT_NAMED_TYPE</code> can be used to assign a name to already existing types. This macro must be used in the global namespace even when the types to be named are not.</li>
</ul>
<div class="fragment"><div class="line">ENTT_NAMED_TYPE(my_type)</div><div class="line">ENTT_NAMED_TYPE(ns::another_type)</div></div><!-- fragment --><ul>
<li><code>ENTT_NAMED_STRUCT</code> can be used to define and export a struct at the same time. It accepts also an optional namespace in which to define the given type. This macro must be used in the global namespace.</li>
</ul>
<div class="fragment"><div class="line">ENTT_NAMED_STRUCT(my_type, { <span class="comment">/* struct definition */</span>})</div><div class="line">ENTT_NAMED_STRUCT(ns, another_type, { <span class="comment">/* struct definition */</span>})</div></div><!-- fragment --><ul>
<li><code>ENTT_NAMED_CLASS</code> can be used to define and export a class at the same time. It accepts also an optional namespace in which to define the given type. This macro must be used in the global namespace.</li>
</ul>
<div class="fragment"><div class="line">ENTT_NAMED_CLASS(my_type, { <span class="comment">/* class definition */</span>})</div><div class="line">ENTT_NAMED_CLASS(ns, another_type, { <span class="comment">/* class definition */</span>})</div></div><!-- fragment --><p>Nested namespaces are supported out of the box as well in all cases. As an example:</p>
<div class="fragment"><div class="line">ENTT_NAMED_STRUCT(nested::ns, my_type, { <span class="comment">/* struct definition */</span>})</div></div><!-- fragment --><p>These macros can be used to avoid specializing the <code>named_type_traits</code> class template. In all cases, the name of the class is used also as a seed to generate the compile-time unique identifier.</p>
<h2><a class="anchor" id="autotoc_md61"></a>
Conflicts</h2>
<p>When using macros, unique identifiers are 32/64 bit integers generated by hashing strings during compilation. Therefore, conflicts are rare but still possible. In case of conflicts, everything simply will get broken at runtime and the strangest things will probably take place.<br />
Unfortunately, there is no safe way to prevent it. If this happens, it will be enough to give a different value to one of the conflicting types to solve the problem. To do this, users can either assign a different name to the class or directly define a specialization for the <code>named_type_traits</code> class template.</p>
<h1><a class="anchor" id="autotoc_md62"></a>
Allocations: the dark side of the force</h1>
<p>As long as <code>EnTT</code> won't support custom allocators, another problem with allocations will remain alive instead. This is in fact easily solved, or at least it is if one knows it.</p>
<p>To allow users to add types dynamically, the library makes extensive use of type erasure techniques and dynamic allocations for pools (whether they are for components, events or anything else). The problem occurs when, for example, a registry is created on one side of a boundary and a pool is dynamically created on the other side. In the best case, everything will crash at the exit, while at worst it will do so at runtime.<br />
To avoid problems, the pools must be generated from the same side of the boundary where the object that owns them is also created. As an example, when the registry is created in the main executable and used across boundaries for a given type of component, the pool for that type must be created before passing around the registry itself. To do this is fortunately quite easy, since it is sufficient to invoke any of the methods that involve the given type (continuing the example with the registry, a call to <code>reserve</code> or <code>size</code> is more than enough).</p>
<p>Maybe one day some dedicated methods will be added that do nothing but create a pool for a given type. Until now it has been preferred to keep the API cleaner as they are not strictly necessary. </p>
</div></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>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

122
autotoc_md63.html Normal file
View File

@@ -0,0 +1,122 @@
<!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 in Action</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</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><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">EnTT in Action </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><code>EnTT</code> is widely used in private and commercial applications. I cannot even mention most of them because of some signatures I put on some documents time ago. Fortunately, there are also people who took the time to implement open source projects based on <code>EnTT</code> and did not hold back when it came to documenting them.</p>
<p>Below an incomplete list of games, applications and articles that can be used as a reference. Where I put the word <em>apparently</em> means that the use of <code>EnTT</code> is documented but the authors didn't make explicit announcements or contacted me directly.</p>
<p>I hope this list can grow much more in the future:</p>
<ul>
<li>Games:<ul>
<li><a href="https://minecraft.net/en-us/attribution/">Minecraft</a> by <a href="https://mojang.com/">Mojang</a>: of course, <b>that</b> Minecraft, see the open source attributions page for more details.</li>
<li><a href="https://play.google.com/store/apps/details?id=com.gamee.facesmash">Face Smash</a>: a game to play with your face.</li>
<li><a href="https://github.com/Kerndog73/EnTT-Pacman">EnTT Pacman</a>: an example of how to make Pacman with <code>EnTT</code>.</li>
<li><a href="https://github.com/carlfindahl/wacman">Wacman</a>: a pacman clone with OpenGL.</li>
<li><a href="https://github.com/kerndog73/Classic-Tower-Defence">Classic Tower Defence</a>: a tiny little tower defence game featuring a homemade font. <a href="https://indi-kernick.itch.io/classic-tower-defence">Check it out</a>.</li>
<li><a href="https://github.com/Kerndog73/The-Machine">The Machine</a>: a box pushing puzzler with logic gates and other cool stuff. <a href="https://indi-kernick.itch.io/the-machine-web-version">Check it out</a>.</li>
<li><a href="https://github.com/reworks/EnttPong">EnttPong</a>: an example of how to make Pong with <code>EnTT</code>.</li>
<li><a href="https://github.com/gale93/randballs">Randballs</a>: simple <code>SFML</code> and <code>EnTT</code> playground.</li>
<li><a href="https://github.com/Daivuk/tddod">EnTT Tower Defense</a>: a data oriented tower defense example.</li>
<li><a href="https://github.com/vblanco20-1/entt-breakout">EnTT Breakout</a>: simple example of a breakout game, using <code>SDL</code> and <code>EnTT</code>.</li>
<li><a href="https://github.com/MasonRG/ArcadePuzzleGame">Arcade puzzle game with EnTT</a>: arcade puzzle game made in C++ using the <code>SDL2</code> and <code>EnTT</code> libraries.</li>
<li><a href="https://github.com/MasonRG/SnakeGame">Snake with EnTT</a>: simple snake game made in C++ with the <code>SDL2</code> and <code>EnTT</code> libraries.</li>
</ul>
</li>
<li>Engines/Frameworks:<ul>
<li><a href="https://teamwisp.github.io/credits/">Apparently</a> <a href="https://teamwisp.github.io/product/">Wisp</a> by <a href="https://teamwisp.github.io/">Team Wisp</a>: an advanced real-time ray tracing renderer built for the demands of video game artists.</li>
<li><a href="https://github.com/DomRe/starlight">starlight</a>: game programming framework using <code>Allegro</code>, <code>Lua</code> and modern C++.</li>
<li><a href="https://github.com/JosiahWI/qub3d-libdeps">Apparently</a> <a href="https://qub3d.org/">Qub3d</a>: because blocks should be open source.</li>
<li><a href="https://github.com/Milerius/shiva">shiva</a>: modern C++ engine with modularity.</li>
</ul>
</li>
<li>Emulators:<ul>
<li><a href="https://github.com/novuscore/NovusCore">NovusCore</a>: A modern take on World of Warcraft emulation.</li>
</ul>
</li>
<li>Articles and blog posts<ul>
<li><a href="https://skypjack.github.io/tags/#entt">Some posts</a> on my personal <a href="https://skypjack.github.io/">blog</a> are about <code>EnTT</code>, for those who want to know <b>more</b> on this project.</li>
<li><a href="http://victor.madtriangles.com/code%20experiment/2018/06/11/post-ecs-battle-huge.html">Space Battle: Huge edition</a>: huge space battle built entirely from scratch.</li>
<li><a href="https://github.com/vblanco20-1/ECS_SpaceBattle">Space Battle</a>: huge space battle built on <code>UE4</code>.</li>
<li><a href="http://victor.madtriangles.com/code%20experiment/2018/03/25/post-ue4-ecs-battle.html">Experimenting with ECS in UE4</a>: interesting article about <code>UE4</code> and <code>EnTT</code>.</li>
<li><a href="https://forums.unrealengine.com/development-discussion/c-gameplay-programming/1449913-implementing-ecs-architecture-in-ue4-giant-space-battle">Implementing ECS architecture in UE4</a>: giant space battle.</li>
<li><a href="https://leinnan.github.io/blog/conan-adventuressfml-and-entt-in-c.html">Conan Adventures (SFML and EnTT in C++)</a>: create projects in modern C++ using <code>SFML</code>, <code>EnTT</code>, <code>Conan</code> and <code>CMake</code>.</li>
</ul>
</li>
<li>Any Other Business:<ul>
<li>The <a href="https://developers.arcgis.com/arcgis-runtime/">ArcGIS Runtime SDKs</a> by <a href="https://www.esri.com/">Esri</a>: they use <code>EnTT</code> for the internal ECS and the cross platform C++ rendering engine. The SDKs are utilized by a lot of enterprise custom apps, as well as by Esri for its own public applications such as <a href="https://play.google.com/store/apps/details?id=com.esri.explorer">Explorer</a>, <a href="https://play.google.com/store/apps/details?id=com.esri.arcgis.collector">Collector</a> and <a href="https://play.google.com/store/apps/details?id=com.esri.navigator">Navigator</a>.</li>
<li><a href="https://www.linkedin.com/in/skypjack/">Apparently</a> <a href="https://www.nio.io/">NIO</a>: there was a collaboration to make some changes to <code>EnTT</code>, at the time used for internal projects.</li>
<li><a href="https://github.com/mhaemmerle/MatchOneEntt">MatchOneEntt</a>: port of <a href="https://github.com/sschmid/Match-One">Match One</a> for <code>Entitas-CSharp</code>.</li>
<li>GitHub contains also <a href="https://github.com/search?o=desc&amp;q=%22skypjack%2Fentt%22&amp;s=indexed&amp;type=Code">many other examples</a> of use of <code>EnTT</code> from which to take inspiration if interested.</li>
</ul>
</li>
</ul>
<p>If you know of other resources out there that are about <code>EnTT</code>, feel free to open an issue or a PR and I'll be glad to add them to this page. </p>
</div></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>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

226
autotoc_md67.html Normal file
View File

@@ -0,0 +1,226 @@
<!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: Crash Course: reflection system</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</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><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Crash Course: reflection system </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="autotoc_md68"></a>
Introduction</h1>
<p>Reflection (or rather, its lack) is a trending topic in the C++ world and, in the specific case of <code>EnTT</code>, a tool that can unlock a lot of other features. I looked for a third-party library that met my needs on the subject, but I always came across some details that I didn't like: macros, being intrusive, too many allocations. In one word: unsatisfactory.<br />
I finally decided to write a built-in, non-intrusive and macro-free runtime reflection system for <code>EnTT</code>. Maybe I didn't do better than others or maybe yes, time will tell me, but at least I can model this tool around the library to which it belongs and not vice versa.</p>
<h1><a class="anchor" id="autotoc_md69"></a>
Names and identifiers</h1>
<p>The meta system doesn't force the user to use the tools provided by the library when it comes to working with names and identifiers. It does this by offering an API that works with opaque identifiers that may or may not be generated by means of a hashed string.<br />
This means that users can assign any type of identifier to the meta objects, as long as they are numeric. It doesn't matter if they are generated at runtime, at compile-time or with custom functions.</p>
<p>However, the examples in the following sections are all based on the <code>hashed_string</code> class as provided by this library. Therefore, where an identifier is required, it's likely that a user defined literal is used as follows:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> factory = entt::reflect&lt;my_type&gt;(<span class="stringliteral">&quot;reflected_type&quot;</span>_hs);</div></div><!-- fragment --><p>For what it's worth, this is likely completely equivalent to:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> factory = entt::reflect&lt;my_type&gt;(42);</div></div><!-- fragment --><p>Obviously, human-readable identifiers are more convenient to use and highly recommended.</p>
<h1><a class="anchor" id="autotoc_md70"></a>
Reflection in a nutshell</h1>
<p>Reflection always starts from real types (users cannot reflect imaginary types and it would not make much sense, we wouldn't be talking about reflection anymore).<br />
To <em>reflect</em> a type, the library provides the <code>reflect</code> function:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> factory = entt::reflect&lt;my_type&gt;(<span class="stringliteral">&quot;reflected_type&quot;</span>_hs);</div></div><!-- fragment --><p>It accepts the type to reflect as a template parameter and an optional identifier as an argument. Identifiers are important because users can retrieve meta types at runtime by searching for them by <em>name</em>. However, there are cases in which users can be interested in adding features to a reflected type so that the reflection system can use it correctly under the hood, but they don't want to allow searching the type by <em>name</em>.<br />
In both cases, the returned value is a factory object to use to continue building the meta type.</p>
<p>A factory is such that all its member functions returns the factory itself. It can be used to extend the reflected type and add the following:</p>
<ul>
<li><em>Constructors</em>. Actual constructors can be assigned to a reflected type by specifying their list of arguments. Free functions (namely, factories) can be used as well, as long as the return type is the expected one. From a client's point of view, nothing changes if a constructor is a free function or an actual constructor.<br />
Use the <code>ctor</code> member function for this purpose:</li>
</ul>
<div class="fragment"><div class="line">entt::reflect&lt;my_type&gt;(<span class="stringliteral">&quot;reflected&quot;</span>_hs).ctor&lt;int, char&gt;().ctor&lt;&amp;factory&gt;();</div></div><!-- fragment --><ul>
<li><em>Destructors</em>. Free functions can be set as destructors of reflected types. The purpose is to give users the ability to free up resources that require special treatment before an object is actually destroyed.<br />
Use the <code>dtor</code> member function for this purpose:</li>
</ul>
<div class="fragment"><div class="line">entt::reflect&lt;my_type&gt;(<span class="stringliteral">&quot;reflected&quot;</span>_hs).dtor&lt;&amp;destroy&gt;();</div></div><!-- fragment --><p>A function should neither delete nor explicitly invoke the destructor of a given instance.</p>
<ul>
<li><em>Data members</em>. Both real data members of the underlying type and static and global variables, as well as constants of any kind, can be attached to a meta type. From a client's point of view, all the variables associated with the reflected type will appear as if they were part of the type itself.<br />
Use the <code>data</code> member function for this purpose:</li>
</ul>
<div class="fragment"><div class="line">entt::reflect&lt;my_type&gt;(<span class="stringliteral">&quot;reflected&quot;</span>_hs)</div><div class="line"> .data&lt;&amp;my_type::static_variable&gt;(<span class="stringliteral">&quot;static&quot;</span>_hs)</div><div class="line"> .data&lt;&amp;my_type::data_member&gt;(<span class="stringliteral">&quot;member&quot;</span>_hs)</div><div class="line"> .data&lt;&amp;global_variable&gt;(<span class="stringliteral">&quot;global&quot;</span>_hs);</div></div><!-- fragment --><p>This function requires as an argument the identifier to give to the meta data once created. Users can then access meta data at runtime by searching for them by <em>name</em>.<br />
Data members can be set also by means of a couple of functions, namely a setter and a getter. Setters and getters can be either free functions, member functions or mixed ones, as long as they respect the required signatures.<br />
Refer to the inline documentation for all the details.</p>
<ul>
<li><em>Member functions</em>. Both real member functions of the underlying type and free functions can be attached to a meta type. From a client's point of view, all the functions associated with the reflected type will appear as if they were part of the type itself.<br />
Use the <code>func</code> member function for this purpose:</li>
</ul>
<div class="fragment"><div class="line">entt::reflect&lt;my_type&gt;(<span class="stringliteral">&quot;reflected&quot;</span>_hs)</div><div class="line"> .func&lt;&amp;my_type::static_function&gt;(<span class="stringliteral">&quot;static&quot;</span>_hs)</div><div class="line"> .func&lt;&amp;my_type::member_function&gt;(<span class="stringliteral">&quot;member&quot;</span>_hs)</div><div class="line"> .func&lt;&amp;free_function&gt;(<span class="stringliteral">&quot;free&quot;</span>_hs);</div></div><!-- fragment --><p>This function requires as an argument the identifier to give to the meta function once created. Users can then access meta functions at runtime by searching for them by <em>name</em>.</p>
<ul>
<li><em>Base classes</em>. A base class is such that the underlying type is actually derived from it. In this case, the reflection system tracks the relationship and allows for implicit casts at runtime when required.<br />
Use the <code>base</code> member function for this purpose:</li>
</ul>
<div class="fragment"><div class="line">entt::reflect&lt;derived_type&gt;(<span class="stringliteral">&quot;derived&quot;</span>_hs).base&lt;base_type&gt;();</div></div><!-- fragment --><p>From now on, wherever a <code>base_type</code> is required, an instance of <code>derived_type</code> will also be accepted.</p>
<ul>
<li><em>Conversion functions</em>. Actual types can be converted, this is a fact. Just think of the relationship between a <code>double</code> and an <code>int</code> to see it. Similar to bases, conversion functions allow users to define conversions that will be implicitly performed by the reflection system when required.<br />
Use the <code>conv</code> member function for this purpose:</li>
</ul>
<div class="fragment"><div class="line">entt::reflect&lt;double&gt;().conv&lt;int&gt;();</div></div><!-- fragment --><p>That's all, everything users need to create meta types and enjoy the reflection system. At first glance it may not seem that much, but users usually learn to appreciate it over time.<br />
Also, do not forget what these few lines hide under the hood: a built-in, non-intrusive and macro-free system for reflection in C++. Features that are definitely worth the price, at least for me.</p>
<h2><a class="anchor" id="autotoc_md71"></a>
Any as in any type</h2>
<p>The reflection system comes with its own meta any type. It may seem redundant since C++17 introduced <code>std::any</code>, but it is not.<br />
In fact, the <em>type</em> returned by an <code>std::any</code> is a const reference to an <code>std::type_info</code>, an implementation defined class that's not something everyone wants to see in a software. Furthermore, the class <code>std::type_info</code> suffers from some design flaws and there is even no way to <em>convert</em> an <code>std::type_info</code> into a meta type, thus linking the two worlds.</p>
<p>A meta any object provides an API similar to that of its most famous counterpart and serves the same purpose of being an opaque container for any type of value.<br />
It minimizes the allocations required, which are almost absent thanks to <em>SBO</em> techniques. In fact, unless users deal with <em>fat types</em> and create instances of them though the reflection system, allocations are at zero.</p>
<p>A meta any object can be created by any other object or as an empty container to initialize later:</p>
<div class="fragment"><div class="line"><span class="comment">// a meta any object that contains an int</span></div><div class="line"><a class="code" href="classentt_1_1meta__any.html">entt::meta_any</a> any{0};</div><div class="line"></div><div class="line"><span class="comment">// an empty meta any object</span></div><div class="line"><a class="code" href="classentt_1_1meta__any.html">entt::meta_any</a> empty{};</div></div><!-- fragment --><p>It takes the burden of destroying the contained instance when required.<br />
Moreover, it can be used as an opaque container for unmanaged objects if needed:</p>
<div class="fragment"><div class="line"><span class="keywordtype">int</span> value;</div><div class="line"><a class="code" href="classentt_1_1meta__any.html">entt::meta_any</a> any{std::in_place, value};</div></div><!-- fragment --><p>In this case, the contained instance is never destroyed and users must ensure that the lifetime of the object exceeds that of the container.</p>
<p>A meta any object has a <code>type</code> member function that returns the meta type of the contained value, if any. The member functions <code>try_cast</code>, <code>cast</code> and <code>convert</code> are used to know if the underlying object has a given type as a base or if it can be converted implicitly to it.</p>
<h2><a class="anchor" id="autotoc_md72"></a>
Enjoy the runtime</h2>
<p>Once the web of reflected types has been constructed, it's a matter of using it at runtime where required.<br />
All this has the great merit that, unlike the vast majority of the things present in this library and closely linked to the compile-time, the reflection system stands in fact as a non-intrusive tool for the runtime.</p>
<p>To search for a reflected type there are two options: by type or by <em>name</em>. In both cases, the search can be done by means of the <code>resolve</code> function:</p>
<div class="fragment"><div class="line"><span class="comment">// search for a reflected type by type</span></div><div class="line"><span class="keyword">auto</span> by_type = entt::resolve&lt;my_type&gt;();</div><div class="line"></div><div class="line"><span class="comment">// search for a reflected type by name</span></div><div class="line"><span class="keyword">auto</span> by_name = <a class="code" href="namespaceentt.html#a2129cb8668f5dcbc11854be6a4a0b6e5">entt::resolve</a>(<span class="stringliteral">&quot;reflected_type&quot;</span>_hs);</div></div><!-- fragment --><p>There exits also a third overload of the <code>resolve</code> function to use to iterate all the reflected types at once:</p>
<div class="fragment"><div class="line"><a class="code" href="namespaceentt.html#a2129cb8668f5dcbc11854be6a4a0b6e5">resolve</a>([](<span class="keyword">auto</span> type) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">});</div></div><!-- fragment --><p>In all cases, the returned value is an instance of <code>meta_type</code>. This type of objects offer an API to know the <em>runtime identifier</em> of the type, to iterate all the meta objects associated with them and even to build or destroy instances of the underlying type.<br />
Refer to the inline documentation for all the details.</p>
<p>The meta objects that compose a meta type are accessed in the following ways:</p>
<ul>
<li><em>Meta constructors</em>. They are accessed by types of arguments:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">auto</span> ctor = entt::resolve&lt;my_type&gt;().ctor&lt;int, char&gt;();</div></div><!-- fragment --><p>The returned type is <code>meta_ctor</code> and may be invalid if there is no constructor that accepts the supplied arguments or at least some types from which they are derived or to which they can be converted.<br />
A meta constructor offers an API to know the number of arguments, the expected meta types and to invoke it, therefore to construct a new instance of the underlying type.</p>
<ul>
<li><em>Meta destructor</em>. It's returned by a dedicated function:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">auto</span> dtor = entt::resolve&lt;my_type&gt;().dtor();</div></div><!-- fragment --><p>The returned type is <code>meta_dtor</code> and may be invalid if there is no custom destructor set for the given meta type.<br />
All what a meta destructor has to offer is a way to invoke it on a given instance. Be aware that the result may not be what is expected.</p>
<ul>
<li><em>Meta data</em>. They are accessed by <em>name</em>:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">auto</span> data = entt::resolve&lt;my_type&gt;().data(<span class="stringliteral">&quot;member&quot;</span>_hs);</div></div><!-- fragment --><p>The returned type is <code>meta_data</code> and may be invalid if there is no meta data object associated with the given identifier.<br />
A meta data object offers an API to query the underlying type (ie to know if it's a const or a static one), to get the meta type of the variable and to set or get the contained value.</p>
<ul>
<li><em>Meta functions</em>. They are accessed by <em>name</em>:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">auto</span> func = entt::resolve&lt;my_type&gt;().func(<span class="stringliteral">&quot;member&quot;</span>_hs);</div></div><!-- fragment --><p>The returned type is <code>meta_func</code> and may be invalid if there is no meta function object associated with the given identifier.<br />
A meta function object offers an API to query the underlying type (ie to know if it's a const or a static function), to know the number of arguments, the meta return type and the meta types of the parameters. In addition, a meta function object can be used to invoke the underlying function and then get the return value in the form of meta any object.</p>
<ul>
<li><em>Meta bases</em>. They are accessed through the <em>name</em> of the base types:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">auto</span> base = entt::resolve&lt;derived_type&gt;().base(<span class="stringliteral">&quot;base&quot;</span>_hs);</div></div><!-- fragment --><p>The returned type is <code>meta_base</code> and may be invalid if there is no meta base object associated with the given identifier.<br />
Meta bases aren't meant to be used directly, even though they are freely accessible. They expose only a few methods to use to know the meta type of the base class and to convert a raw pointer between types.</p>
<ul>
<li><em>Meta conversion functions</em>. They are accessed by type:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">auto</span> conv = entt::resolve&lt;double&gt;().conv&lt;int&gt;();</div></div><!-- fragment --><p>The returned type is <code>meta_conv</code> and may be invalid if there is no meta conversion function associated with the given type.<br />
The meta conversion functions are as thin as the meta bases and with a very similar interface. The sole difference is that they return a newly created instance wrapped in a meta any object when they convert between different types.</p>
<p>All the objects thus obtained as well as the meta types can be explicitly converted to a boolean value to check if they are valid:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> func = entt::resolve&lt;my_type&gt;().func(<span class="stringliteral">&quot;member&quot;</span>_hs);</div><div class="line"></div><div class="line"><span class="keywordflow">if</span>(func) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --><p>Furthermore, all meta objects with the exception of meta destructors can be iterated through an overload that accepts a callback through which to return them. As an example:</p>
<div class="fragment"><div class="line">entt::resolve&lt;my_type&gt;().data([](<span class="keyword">auto</span> data) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">});</div></div><!-- fragment --><p>A meta type can also be used to <code>construct</code> or <code>destroy</code> actual instances of the underlying type.<br />
In particular, the <code>construct</code> member function accepts a variable number of arguments and searches for a match. It returns a <code>meta_any</code> object that may or may not be initialized, depending on whether a suitable constructor has been found or not. On the other side, the <code>destroy</code> member function accepts instances of <code>meta_any</code> as well as actual objects by reference and invokes the registered destructor if any.<br />
Be aware that the result of a call to <code>destroy</code> may not be what is expected. The purpose is to give users the ability to free up resources that require special treatment and <b>not</b> to actually destroy instances.</p>
<p>Meta types and meta objects in general contain much more than what is said: a plethora of functions in addition to those listed whose purposes and uses go unfortunately beyond the scope of this document.<br />
I invite anyone interested in the subject to look at the code, experiment and read the official documentation to get the best out of this powerful tool.</p>
<h2><a class="anchor" id="autotoc_md73"></a>
Policies: the more, the less</h2>
<p>Policies are a kind of compile-time directives that can be used when recording reflection information.<br />
Their purpose is to require slightly different behavior than the default in some specific cases. For example, when reading a given data member, its value is returned wrapped in a <code>meta_any</code> object which, by default, makes a copy of it. For large objects or if the caller wants to access the original instance, this behavior isn't desirable. Policies are there to offer a solution to this and other problems.</p>
<p>There are a few alternatives available at the moment:</p>
<ul>
<li>The <em>as-is</em> policy, associated with the type <code><a class="el" href="structentt_1_1as__is__t.html" title="Empty class type used to request the as-is policy. ">entt::as_is_t</a></code>.<br />
This is the default policy. In general, it should never be used explicitly, since it's implicitly selected if no other policy is specified.<br />
In this case, the return values of the functions as well as the properties exposed as data members are always returned by copy in a dedicated wrapper and therefore associated with their original meta types.</li>
<li><p class="startli">The <em>as-void</em> policy, associated with the type <code><a class="el" href="structentt_1_1as__void__t.html" title="Empty class type used to request the as void policy. ">entt::as_void_t</a></code>.<br />
Its purpose is to discard the return value of a meta object, whatever it is, thus making it appear as if its type were <code>void</code>.<br />
If the use with functions is obvious, it must be said that it's also possible to use this policy with constructors and data members. In the first case, the constructor will be invoked but the returned wrapper will actually be empty. In the second case, instead, the property will not be accessible for reading.</p>
<p class="startli">As an example of use:</p>
</li>
</ul>
<div class="fragment"><div class="line">entt::reflect&lt;my_type&gt;(<span class="stringliteral">&quot;reflected&quot;</span>_hs)</div><div class="line"> .func&lt;&amp;my_type::member_function, entt::as_void_t&gt;(<span class="stringliteral">&quot;member&quot;</span>_hs);</div></div><!-- fragment --><ul>
<li><p class="startli">The <em>as-alias</em> policy, associated with the type <code><a class="el" href="structentt_1_1as__alias__t.html" title="Empty class type used to request the as alias policy. ">entt::as_alias_t</a></code><br />
It allows to build wrappers that act as aliases for the objects used to initialize them. Modifying the object contained in the wrapper for which the <em>aliasing</em> was requested will make it possible to directly modify the instance used to initialize the wrapper itself.<br />
This policy works with constructors (for example, when objects are taken from an external container rather than created on demand), data members and functions in general (as long as their return types are lvalue references).</p>
<p class="startli">As an example of use:</p>
</li>
</ul>
<div class="fragment"><div class="line">entt::reflect&lt;my_type&gt;(<span class="stringliteral">&quot;reflected&quot;</span>_hs)</div><div class="line"> .data&lt;&amp;my_type::data_member, entt::as_alias_t&gt;(<span class="stringliteral">&quot;member&quot;</span>_hs);</div></div><!-- fragment --><p>Some uses are rather trivial, but it's useful to note that there are some less obvious corner cases that can in turn be solved with the use of policies.</p>
<h2><a class="anchor" id="autotoc_md74"></a>
Named constants and enums</h2>
<p>A special mention should be made for constant values and enums. It wouldn't be necessary, but it will help distracted readers.</p>
<p>As mentioned, the <code>data</code> member function can be used to reflect constants of any type among the other things.<br />
This allows users to create meta types for enums that will work exactly like any other meta type built from a class. Similarly, arithmetic types can be enriched with constants of special meaning where required.<br />
Personally, I find it very useful not to export what is the difference between enums and classes in C++ directly in the space of the reflected types.</p>
<p>All the values thus exported will appear to users as if they were constant data members of the reflected types.</p>
<p>Exporting constant values or elements from an enum is as simple as ever:</p>
<div class="fragment"><div class="line">entt::reflect&lt;my_enum&gt;()</div><div class="line"> .data&lt;my_enum::a_value&gt;(<span class="stringliteral">&quot;a_value&quot;</span>_hs)</div><div class="line"> .data&lt;my_enum::another_value&gt;(<span class="stringliteral">&quot;another_value&quot;</span>_hs);</div><div class="line"></div><div class="line">entt::reflect&lt;int&gt;().data&lt;2048&gt;(<span class="stringliteral">&quot;max_int&quot;</span>_hs);</div></div><!-- fragment --><p>It goes without saying that accessing them is trivial as well. It's a matter of doing the following, as with any other data member of a meta type:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> value = entt::resolve&lt;my_enum&gt;().data(<span class="stringliteral">&quot;a_value&quot;</span>_hs).get({}).cast&lt;my_enum&gt;();</div><div class="line"><span class="keyword">auto</span> max = entt::resolve&lt;int&gt;().data(<span class="stringliteral">&quot;max_int&quot;</span>_hs).get({}).cast&lt;int&gt;();</div></div><!-- fragment --><p>As a side note, remember that all this happens behind the scenes without any allocation because of the small object optimization performed by the meta any class.</p>
<h2><a class="anchor" id="autotoc_md75"></a>
Properties and meta objects</h2>
<p>Sometimes (for example, when it comes to creating an editor) it might be useful to be able to attach properties to the meta objects created. Fortunately, this is possible for most of them.<br />
To attach a property to a meta object, no matter what as long as it supports properties, it is sufficient to provide an object at the time of construction such that <code>std::get&lt;0&gt;</code> and <code>std::get&lt;1&gt;</code> are valid for it. In other terms, the properties are nothing more than key/value pairs users can put in an <code>std::pair</code>. As an example:</p>
<div class="fragment"><div class="line">entt::reflect&lt;my_type&gt;(<span class="stringliteral">&quot;reflected&quot;</span>_hs, std::make_pair(<span class="stringliteral">&quot;tooltip&quot;</span>_hs, <span class="stringliteral">&quot;message&quot;</span>));</div></div><!-- fragment --><p>The meta objects that support properties offer then a couple of member functions named <code>prop</code> to iterate them at once and to search a specific property by key:</p>
<div class="fragment"><div class="line"><span class="comment">// iterate all the properties of a meta type</span></div><div class="line">entt::resolve&lt;my_type&gt;().prop([](<span class="keyword">auto</span> prop) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">});</div><div class="line"></div><div class="line"><span class="comment">// search for a given property by name</span></div><div class="line"><span class="keyword">auto</span> prop = entt::resolve&lt;my_type&gt;().prop(<span class="stringliteral">&quot;tooltip&quot;</span>_hs);</div></div><!-- fragment --><p>Meta properties are objects having a fairly poor interface, all in all. They only provide the <code>key</code> and the <code>value</code> member functions to be used to retrieve the key and the value contained in the form of meta any objects, respectively.</p>
<h2><a class="anchor" id="autotoc_md76"></a>
Unregister types</h2>
<p>A type registered with the reflection system can also be unregistered. This means unregistering all its data members, member functions, conversion functions and so on. However, the base classes won't be unregistered, since they don't necessarily depend on it. Similarly, implicitly generated types (as an example, the meta types implicitly generated for function parameters when needed) won't be unregistered.</p>
<p>To unregister a type, users can use the <code>unregister</code> function from the global namespace:</p>
<div class="fragment"><div class="line">entt::unregister&lt;my_type&gt;();</div></div><!-- fragment --><p>This function returns a boolean value that is true if the type is actually registered with the reflection system, false otherwise.<br />
The type can be re-registered later with a completely different name and form. </p>
</div></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>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

133
autotoc_md77.html Normal file
View File

@@ -0,0 +1,133 @@
<!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: Crash Course: cooperative scheduler</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</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><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Crash Course: cooperative scheduler </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="autotoc_md78"></a>
Introduction</h1>
<p>Sometimes processes are a useful tool to work around the strict definition of a system and introduce logic in a different way, usually without resorting to the introduction of other components.</p>
<p><code>EnTT</code> offers a minimal support to this paradigm by introducing a few classes that users can use to define and execute cooperative processes.</p>
<h1><a class="anchor" id="autotoc_md79"></a>
The process</h1>
<p>A typical process must inherit from the <code>process</code> class template that stays true to the CRTP idiom. Moreover, derived classes must specify what's the intended type for elapsed times.</p>
<p>A process should expose publicly the following member functions whether required (note that it isn't required to define a function unless the derived class wants to <em>override</em> the default behavior):</p>
<ul>
<li><p class="startli"><code>void update(Delta, void *);</code></p>
<p class="startli">It's invoked once per tick until a process is explicitly aborted or it terminates either with or without errors. Even though it's not mandatory to declare this member function, as a rule of thumb each process should at least define it to work properly. The <code>void *</code> parameter is an opaque pointer to user data (if any) forwarded directly to the process during an update.</p>
</li>
<li><p class="startli"><code>void init();</code></p>
<p class="startli">It's invoked when the process joins the running queue of a scheduler. This happens as soon as it's attached to the scheduler if the process is a top level one, otherwise when it replaces its parent if the process is a continuation.</p>
</li>
<li><p class="startli"><code>void succeeded();</code></p>
<p class="startli">It's invoked in case of success, immediately after an update and during the same tick.</p>
</li>
<li><p class="startli"><code>void failed();</code></p>
<p class="startli">It's invoked in case of errors, immediately after an update and during the same tick.</p>
</li>
<li><p class="startli"><code>void aborted();</code></p>
<p class="startli">It's invoked only if a process is explicitly aborted. There is no guarantee that it executes in the same tick, this depends solely on whether the process is aborted immediately or not.</p>
</li>
</ul>
<p>Derived classes can also change the internal state of a process by invoking <code>succeed</code> and <code>fail</code>, as well as <code>pause</code> and <code>unpause</code> the process itself. All these are protected member functions made available to be able to manage the life cycle of a process from a derived class.</p>
<p>Here is a minimal example for the sake of curiosity:</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>my_process: <a class="code" href="classentt_1_1process.html">entt::process</a>&lt;my_process, std::uint32_t&gt; {</div><div class="line"> <span class="keyword">using</span> delta_type = std::uint32_t;</div><div class="line"></div><div class="line"> <span class="keywordtype">void</span> update(delta_type delta, <span class="keywordtype">void</span> *) {</div><div class="line"> remaining -= std::min(remaining, delta);</div><div class="line"></div><div class="line"> <span class="comment">// ...</span></div><div class="line"></div><div class="line"> <span class="keywordflow">if</span>(!remaining) {</div><div class="line"> <a class="code" href="classentt_1_1process.html#a43d63ba9304654f0209fc32d2c74f4ce">succeed</a>();</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"><span class="keyword">private</span>:</div><div class="line"> delta_type remaining{1000u};</div><div class="line">};</div></div><!-- fragment --><h2><a class="anchor" id="autotoc_md80"></a>
Adaptor</h2>
<p>Lambdas and functors can't be used directly with a scheduler for they are not properly defined processes with managed life cycles.<br />
This class helps in filling the gap and turning lambdas and functors into full featured processes usable by a scheduler.</p>
<p>The function call operator has a signature similar to the one of the <code>update</code> function of a process but for the fact that it receives two extra arguments to call whenever a process is terminated with success or with an error:</p>
<div class="fragment"><div class="line">void(Delta delta, <span class="keywordtype">void</span> *data, <span class="keyword">auto</span> succeed, <span class="keyword">auto</span> fail);</div></div><!-- fragment --><p>Parameters have the following meaning:</p>
<ul>
<li><code>delta</code> is the elapsed time.</li>
<li><code>data</code> is an opaque pointer to user data if any, <code>nullptr</code> otherwise.</li>
<li><code>succeed</code> is a function to call when a process terminates with success.</li>
<li><code>fail</code> is a function to call when a process terminates with errors.</li>
</ul>
<p>Both <code>succeed</code> and <code>fail</code> accept no parameters at all.</p>
<p>Note that usually users shouldn't worry about creating adaptors at all. A scheduler creates them internally each and every time a lambda or a functor is used as a process.</p>
<h1><a class="anchor" id="autotoc_md81"></a>
The scheduler</h1>
<p>A cooperative scheduler runs different processes and helps managing their life cycles.</p>
<p>Each process is invoked once per tick. If it terminates, it's removed automatically from the scheduler and it's never invoked again. Otherwise it's a good candidate to run one more time the next tick.<br />
A process can also have a child. In this case, the parent process is replaced with its child when it terminates and only if it returns with success. In case of errors, both the parent process and its child are discarded. This way, it's easy to create chain of processes to run sequentially.</p>
<p>Using a scheduler is straightforward. To create it, users must provide only the type for the elapsed times and no arguments at all:</p>
<div class="fragment"><div class="line"><a class="code" href="classentt_1_1scheduler.html">entt::scheduler&lt;std::uint32_t&gt;</a> scheduler;</div></div><!-- fragment --><p>It has member functions to query its internal data structures, like <code>empty</code> or <code>size</code>, as well as a <code>clear</code> utility to reset it to a clean state:</p>
<div class="fragment"><div class="line"><span class="comment">// checks if there are processes still running</span></div><div class="line"><span class="keyword">const</span> <span class="keyword">auto</span> empty = scheduler.<a class="code" href="classentt_1_1scheduler.html#a817d93653aec6a479b920143bd21edbb">empty</a>();</div><div class="line"></div><div class="line"><span class="comment">// gets the number of processes still running</span></div><div class="line"><a class="code" href="classentt_1_1scheduler.html#a7b08d5871918b39049c29e4daa62271f">entt::scheduler&lt;std::uint32_t&gt;::size_type</a> size = scheduler.<a class="code" href="classentt_1_1scheduler.html#ab0c473e6d4733bdb78f3dc26147de4ad">size</a>();</div><div class="line"></div><div class="line"><span class="comment">// resets the scheduler to its initial state and discards all the processes</span></div><div class="line">scheduler.<a class="code" href="classentt_1_1scheduler.html#a5a0f92dbe54b58751237a567e86805e0">clear</a>();</div></div><!-- fragment --><p>To attach a process to a scheduler there are mainly two ways:</p>
<ul>
<li>If the process inherits from the <code>process</code> class template, it's enough to indicate its type and submit all the parameters required to construct it to the <code>attach</code> member function:</li>
</ul>
<div class="fragment"><div class="line">scheduler.<a class="code" href="classentt_1_1scheduler.html#a729c83e1983123c642a08cda67e486e3">attach</a>&lt;my_process&gt;(<span class="stringliteral">&quot;foobar&quot;</span>);</div></div><!-- fragment --><ul>
<li>Otherwise, in case of a lambda or a functor, it's enough to provide an instance of the class to the <code>attach</code> member function:</li>
</ul>
<div class="fragment"><div class="line">scheduler.<a class="code" href="classentt_1_1scheduler.html#a729c83e1983123c642a08cda67e486e3">attach</a>([](<span class="keyword">auto</span>...){ <span class="comment">/* ... */</span> });</div></div><!-- fragment --><p>In both cases, the return value is an opaque object that offers a <code>then</code> member function to use to create chains of processes to run sequentially.<br />
As a minimal example of use:</p>
<div class="fragment"><div class="line"><span class="comment">// schedules a task in the form of a lambda function</span></div><div class="line">scheduler.<a class="code" href="classentt_1_1scheduler.html#a729c83e1983123c642a08cda67e486e3">attach</a>([](<span class="keyword">auto</span> delta, <span class="keywordtype">void</span> *, <span class="keyword">auto</span> succeed, <span class="keyword">auto</span> fail) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">})</div><div class="line"><span class="comment">// appends a child in the form of another lambda function</span></div><div class="line">.then([](<span class="keyword">auto</span> delta, <span class="keywordtype">void</span> *, <span class="keyword">auto</span> succeed, <span class="keyword">auto</span> fail) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">})</div><div class="line"><span class="comment">// appends a child in the form of a process class</span></div><div class="line">.then&lt;my_process&gt;();</div></div><!-- fragment --><p>To update a scheduler and therefore all its processes, the <code>update</code> member function is the way to go:</p>
<div class="fragment"><div class="line"><span class="comment">// updates all the processes, no user data are provided</span></div><div class="line">scheduler.update(delta);</div><div class="line"></div><div class="line"><span class="comment">// updates all the processes and provides them with custom data</span></div><div class="line">scheduler.update(delta, &amp;data);</div></div><!-- fragment --><p>In addition to these functions, the scheduler offers an <code>abort</code> member function that can be used to discard all the running processes at once:</p>
<div class="fragment"><div class="line"><span class="comment">// aborts all the processes abruptly ...</span></div><div class="line">scheduler.abort(<span class="keyword">true</span>);</div><div class="line"></div><div class="line"><span class="comment">// ... or gracefully during the next tick</span></div><div class="line">scheduler.abort();</div></div><!-- fragment --> </div></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>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

123
autotoc_md82.html Normal file
View File

@@ -0,0 +1,123 @@
<!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: Crash Course: resource management</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</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><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Crash Course: resource management </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="autotoc_md83"></a>
Introduction</h1>
<p>Resource management is usually one of the most critical part of a software like a game. Solutions are often tuned to the particular application. There exist several approaches and all of them are perfectly fine as long as they fit the requirements of the piece of software in which they are used.<br />
Examples are loading everything on start, loading on request, predictive loading, and so on.</p>
<p><code>EnTT</code> doesn't pretend to offer a <em>one-fits-all</em> solution for the different cases. Instead, it offers a minimal and perhaps trivial cache that can be useful most of the time during prototyping and sometimes even in a production environment.<br />
For those interested in the subject, the plan is to improve it considerably over time in terms of performance, memory usage and functionalities. Hoping to make it, of course, one step at a time.</p>
<h1><a class="anchor" id="autotoc_md84"></a>
The resource, the loader and the cache</h1>
<p>There are three main actors in the model: the resource, the loader and the cache.</p>
<p>The <em>resource</em> is whatever users want it to be. An image, a video, an audio, whatever. There are no limits.<br />
As a minimal example:</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>my_resource { <span class="keyword">const</span> <span class="keywordtype">int</span> value; };</div></div><!-- fragment --><p>A <em>loader</em> is a class the aim of which is to load a specific resource. It has to inherit directly from the dedicated base class as in the following example:</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>my_loader final: <a class="code" href="classentt_1_1resource__loader.html">entt::resource_loader</a>&lt;my_loader, my_resource&gt; {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">};</div></div><!-- fragment --><p>Where <code>my_resource</code> is the type of resources it creates.<br />
A resource loader must also expose a public const member function named <code>load</code> that accepts a variable number of arguments and returns a shared pointer to a resource.<br />
As an example:</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>my_loader: <a class="code" href="classentt_1_1resource__loader.html">entt::resource_loader</a>&lt;my_loader, my_resource&gt; {</div><div class="line"> std::shared_ptr&lt;my_resource&gt; load(<span class="keywordtype">int</span> value)<span class="keyword"> const </span>{</div><div class="line"> <span class="comment">// ...</span></div><div class="line"> <span class="keywordflow">return</span> std::shared_ptr&lt;my_resource&gt;(<span class="keyword">new</span> my_resource{ value });</div><div class="line"> }</div><div class="line">};</div></div><!-- fragment --><p>In general, resource loaders should not have a state or retain data of any type. They should let the cache manage their resources instead.<br />
As a side note, base class and CRTP idiom aren't strictly required with the current implementation. One could argue that a cache can easily work with loaders of any type. However, future changes won't be breaking ones by forcing the use of a base class today and that's why the model is already in its place.</p>
<p>Finally, a cache is a specialization of a class template tailored to a specific resource:</p>
<div class="fragment"><div class="line"><span class="keyword">using</span> my_resource_cache = <a class="code" href="classentt_1_1resource__cache.html">entt::resource_cache&lt;my_resource&gt;</a>;</div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line">my_resource_cache cache{};</div></div><!-- fragment --><p>The idea is to create different caches for different types of resources and to manage each one independently in the most appropriate way.<br />
As a (very) trivial example, audio tracks can survive in most of the scenes of an application while meshes can be associated with a single scene and then discarded when users leave it.</p>
<p>A cache offers a set of basic functionalities to query its internal state and to <em>organize</em> it:</p>
<div class="fragment"><div class="line"><span class="comment">// gets the number of resources managed by a cache</span></div><div class="line"><span class="keyword">const</span> <span class="keyword">auto</span> size = cache.<a class="code" href="classentt_1_1scheduler.html#ab0c473e6d4733bdb78f3dc26147de4ad">size</a>();</div><div class="line"></div><div class="line"><span class="comment">// checks if a cache contains at least a valid resource</span></div><div class="line"><span class="keyword">const</span> <span class="keyword">auto</span> empty = cache.empty();</div><div class="line"></div><div class="line"><span class="comment">// clears a cache and discards its content</span></div><div class="line">cache.clear();</div></div><!-- fragment --><p>Besides these member functions, a cache contains what is needed to load, use and discard resources of the given type.<br />
Before to explore this part of the interface, it makes sense to mention how resources are identified. The type of the identifiers to use is defined as:</p>
<div class="fragment"><div class="line"><a class="code" href="classentt_1_1resource__cache.html#af16f00f17580fb3219a1d7a737b8b512">entt::resource_cache&lt;resource&gt;::resource_type</a></div></div><!-- fragment --><p>Where <code>resource_type</code> is an alias for <code><a class="el" href="classentt_1_1basic__hashed__string.html#a7ee7dca5383cf4507949dc1261ca5efd" title="Unsigned integer type. ">entt::hashed_string::hash_type</a></code>. Therefore, resource identifiers are created explicitly as in the following example:</p>
<div class="fragment"><div class="line">constexpr <span class="keyword">auto</span> identifier = <a class="code" href="classentt_1_1resource__cache.html#af16f00f17580fb3219a1d7a737b8b512">entt::resource_cache&lt;resource&gt;::resource_type</a>{<span class="stringliteral">&quot;my/resource/identifier&quot;</span>_hs};</div><div class="line"><span class="comment">// this is equivalent to the following</span></div><div class="line">constexpr <span class="keyword">auto</span> hs = <a class="code" href="classentt_1_1basic__hashed__string.html">entt::hashed_string</a>{<span class="stringliteral">&quot;my/resource/identifier&quot;</span>};</div></div><!-- fragment --><p>The class <code>hashed_string</code> is described in a dedicated section, so I won't go in details here.</p>
<p>Resources are loaded and thus stored in a cache through the <code>load</code> member function. It accepts the loader to use as a template parameter, the resource identifier and the parameters used to construct the resource as arguments:</p>
<div class="fragment"><div class="line"><span class="comment">// uses the identifier declared above</span></div><div class="line">cache.load&lt;my_loader&gt;(identifier, 0);</div><div class="line"></div><div class="line"><span class="comment">// uses a const char * directly as an identifier</span></div><div class="line">cache.load&lt;my_loader&gt;(<span class="stringliteral">&quot;another/identifier&quot;</span>_hs, 42);</div></div><!-- fragment --><p>The function returns a handle to the resource, whether it already exists or is loaded. In case the loader returns an invalid pointer, the handle is invalid as well and therefore it can be easily used with an <code>if</code> statement:</p>
<div class="fragment"><div class="line"><span class="keywordflow">if</span>(<span class="keyword">auto</span> handle = cache.load&lt;my_loader&gt;(<span class="stringliteral">&quot;another/identifier&quot;</span>_hs, 42); handle) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --><p>Before trying to load a resource, the <code>contains</code> member function can be used to know if a cache already contains a specific resource:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> exists = cache.contains(<span class="stringliteral">&quot;my/identifier&quot;</span>_hs);</div></div><!-- fragment --><p>There exists also a member function to use to force a reload of an already existing resource if needed:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> handle = cache.reload&lt;my_loader&gt;(<span class="stringliteral">&quot;another/identifier&quot;</span>_hs, 42);</div></div><!-- fragment --><p>As above, the function returns a handle to the resource that is invalid in case of errors. The <code>reload</code> member function is a kind of alias of the following snippet:</p>
<div class="fragment"><div class="line">cache.discard(identifier);</div><div class="line">cache.load&lt;my_loader&gt;(identifier, 42);</div></div><!-- fragment --><p>Where the <code>discard</code> member function is used to get rid of a resource if loaded. In case the cache doesn't contain a resource for the given identifier, <code>discard</code> does nothing and returns immediately.</p>
<p>So far, so good. Resources are finally loaded and stored within the cache.<br />
They are returned to users in the form of handles. To get one of them later on:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> handle = cache.handle(<span class="stringliteral">&quot;my/identifier&quot;</span>_hs);</div></div><!-- fragment --><p>The idea behind a handle is the same of the flyweight pattern. In other terms, resources aren't copied around. Instead, instances are shared between handles. Users of a resource own a handle that guarantees that a resource isn't destroyed until all the handles are destroyed, even if the resource itself is removed from the cache.<br />
Handles are tiny objects both movable and copyable. They return the contained resource as a const reference on request:</p>
<ul>
<li>By means of the <code>get</code> member function:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keyword">auto</span> &amp;resource = handle.get();</div></div><!-- fragment --><ul>
<li>Using the proper cast operator:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keyword">auto</span> &amp;resource = handle;</div></div><!-- fragment --><ul>
<li>Through the dereference operator:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keyword">auto</span> &amp;resource = *handle;</div></div><!-- fragment --><p>The resource can also be accessed directly using the arrow operator if required:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> value = handle-&gt;value;</div></div><!-- fragment --><p>To test if a handle is still valid, the cast operator to <code>bool</code> allows users to use it in a guard:</p>
<div class="fragment"><div class="line"><span class="keywordflow">if</span>(handle) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --><p>Finally, in case there is the need to load a resource and thus to get a handle without storing the resource itself in the cache, users can rely on the <code>temp</code> member function template.<br />
The declaration is similar to that of <code>load</code>, a (possibly invalid) handle for the resource is returned also in this case:</p>
<div class="fragment"><div class="line"><span class="keywordflow">if</span>(<span class="keyword">auto</span> handle = cache.temp&lt;my_loader&gt;(42); handle) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --><p>Do not forget to test the handle for validity. Otherwise, getting a reference to the resource it points may result in undefined behavior. </p>
</div></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>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

157
autotoc_md85.html Normal file
View File

@@ -0,0 +1,157 @@
<!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: Crash Course: events, signals and everything in between</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</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><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Crash Course: events, signals and everything in between </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="autotoc_md86"></a>
Introduction</h1>
<p>Signals are usually a core part of games and software architectures in general.<br />
Roughly speaking, they help to decouple the various parts of a system while allowing them to communicate with each other somehow.</p>
<p>The so called _modern C++_ comes with a tool that can be useful in these terms, the <code>std::function</code>. As an example, it can be used to create delegates.<br />
However, there is no guarantee that an <code>std::function</code> does not perform allocations under the hood and this could be problematic sometimes. Furthermore, it solves a problem but may not adapt well to other requirements that may arise from time to time.</p>
<p>In case that the flexibility and power of an <code>std::function</code> isn't required or if the price to pay for them is too high,<code>EnTT</code> offers a complete set of lightweight classes to solve the same and many other problems.</p>
<h1><a class="anchor" id="autotoc_md87"></a>
Delegate</h1>
<p>A delegate can be used as a general purpose invoker with no memory overhead for free functions and members provided along with an instance on which to invoke them.<br />
It does not claim to be a drop-in replacement for an <code>std::function</code>, so do not expect to use it whenever an <code>std::function</code> fits well. That said, it's most likely even a better fit than an <code>std::function</code> in a lot of cases, so expect to use it quite a lot anyway.</p>
<p>The interface is trivial. It offers a default constructor to create empty delegates:</p>
<div class="fragment"><div class="line"><a class="code" href="classentt_1_1delegate.html">entt::delegate&lt;int(int)&gt;</a> <a class="code" href="namespaceentt.html#aeda304d14f286ffcb1d872a6ef526745">delegate</a>{};</div></div><!-- fragment --><p>All what is needed to create an instance is to specify the type of the function the delegate will <em>contain</em>, that is the signature of the free function or the member one wants to assign to it.</p>
<p>Attempting to use an empty delegate by invoking its function call operator results in undefined behavior or most likely a crash. Before to use a delegate, it must be initialized.<br />
There exists a bunch of overloads of the <code>connect</code> member function to do that. As an example of use:</p>
<div class="fragment"><div class="line"><span class="keywordtype">int</span> f(<span class="keywordtype">int</span> i) { <span class="keywordflow">return</span> i; }</div><div class="line"></div><div class="line"><span class="keyword">struct </span>my_struct {</div><div class="line"> <span class="keywordtype">int</span> f(<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;i) { <span class="keywordflow">return</span> i }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="comment">// bind a free function to the delegate</span></div><div class="line"><a class="code" href="namespaceentt.html#aeda304d14f286ffcb1d872a6ef526745">delegate</a>.connect&lt;&amp;f&gt;();</div><div class="line"></div><div class="line"><span class="comment">// bind a member function to the delegate</span></div><div class="line">my_struct instance;</div><div class="line"><a class="code" href="namespaceentt.html#aeda304d14f286ffcb1d872a6ef526745">delegate</a>.connect&lt;&amp;my_struct::f&gt;(&amp;instance);</div></div><!-- fragment --><p>The delegate class accepts also data members, if needed. In this case, the function type of the delegate is such that the parameter list is empty and the value of the data member is at least convertible to the return type.</p>
<p>Free functions having type equivalent to <code>void(T *, args...)</code> are accepted as well. In this case, <code>T *</code> is considered a payload and the function will receive it back every time it's invoked. In other terms, this works just fine with the above definition:</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> g(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> i) { <span class="comment">/* ... */</span> }</div><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> c = <span class="charliteral">&#39;c&#39;</span>;</div><div class="line"></div><div class="line"><a class="code" href="namespaceentt.html#aeda304d14f286ffcb1d872a6ef526745">delegate</a>.connect&lt;&amp;g&gt;(&amp;c);</div><div class="line"><a class="code" href="namespaceentt.html#aeda304d14f286ffcb1d872a6ef526745">delegate</a>(42);</div></div><!-- fragment --><p>The function <code>g</code> will be invoked with a pointer to <code>c</code> and <code>42</code>. However, the function type of the delegate is still <code>void(int)</code>. This is also the signature of its function call operator.</p>
<p>Another interesting aspect of the delegate class is that it accepts also functions with a list of parameters that is shorter than that of the function type used to specialize the delegate itself.<br />
The following code is therefore perfectly valid:</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> g() { <span class="comment">/* ... */</span> }</div><div class="line"><a class="code" href="namespaceentt.html#aeda304d14f286ffcb1d872a6ef526745">delegate</a>.connect&lt;&amp;g&gt;();</div><div class="line"><a class="code" href="namespaceentt.html#aeda304d14f286ffcb1d872a6ef526745">delegate</a>(42);</div></div><!-- fragment --><p>Where the function type of the delegate is <code>void(int)</code> as above. It goes without saying that the extra arguments are silently discarded internally.<br />
v This is a nice-to-have feature in a lot of cases, as an example when the <code>delegate</code> class is used as a building block of a signal-slot system.</p>
<p>To create and initialize a delegate at once, there are a few specialized constructors. Because of the rules of the language, the listener is provided by means of the <code><a class="el" href="namespaceentt.html#af1e73acd6f3d892955819677dc2664b7" title="Constant of type connect_arg_t used to disambiguate calls. ">entt::connect_arg</a></code> variable template:</p>
<div class="fragment"><div class="line"><a class="code" href="classentt_1_1delegate.html">entt::delegate&lt;int(int)&gt;</a> func{entt::connect_arg&lt;&amp;f&gt;};</div></div><!-- fragment --><p>Aside <code>connect</code>, a <code>disconnect</code> counterpart isn't provided. Instead, there exists a <code>reset</code> member function to use to clear a delegate.<br />
To know if a delegate is empty, it can be used explicitly in every conditional statement:</p>
<div class="fragment"><div class="line"><span class="keywordflow">if</span>(delegate) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --><p>Finally, to invoke a delegate, the function call operator is the way to go as already shown in the examples above:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> ret = <a class="code" href="namespaceentt.html#aeda304d14f286ffcb1d872a6ef526745">delegate</a>(42);</div></div><!-- fragment --><p>In all cases, the listeners don't have to strictly follow the signature of the delegate. As long as a listener can be invoked with the given arguments to yield a result that is convertible to the given result type, everything works just fine.</p>
<h1><a class="anchor" id="autotoc_md88"></a>
Signals</h1>
<p>Signal handlers work with naked pointers, function pointers and pointers to members. Listeners can be any kind of objects and users are in charge of connecting and disconnecting them from a signal to avoid crashes due to different lifetimes. On the other side, performance shouldn't be affected that much by the presence of such a signal handler.<br />
Signals make use of delegates internally and therefore they undergo the same rules and offer similar functionalities. It may be a good idea to consult the documentation of the <code>delegate</code> class for further information.</p>
<p>A signal handler can be used as a private data member without exposing any <em>publish</em> functionality to the clients of a class. The basic idea is to impose a clear separation between the signal itself and the <code>sink</code> class, that is a tool to be used to connect and disconnect listeners on the fly.</p>
<p>The API of a signal handler is straightforward. The most important thing is that it comes in two forms: with and without a collector. In case a signal is provided with a collector, all the values returned by the listeners can be literally <em>collected</em> and used later by the caller. Otherwise it works just like a plain signal that emits events from time to time.<br />
To create instances of signal handlers it is sufficient to provide the type of function to which they refer:</p>
<div class="fragment"><div class="line"><a class="code" href="classentt_1_1sigh.html">entt::sigh&lt;void(int, char)&gt;</a> signal;</div></div><!-- fragment --><p>Signals offer all the basic functionalities required to know how many listeners they contain (<code>size</code>) or if they contain at least a listener (<code>empty</code>), as well as a function to use to swap handlers (<code>swap</code>).</p>
<p>Besides them, there are member functions to use both to connect and disconnect listeners in all their forms by means of a sink:</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> foo(<span class="keywordtype">int</span>, <span class="keywordtype">char</span>) { <span class="comment">/* ... */</span> }</div><div class="line"></div><div class="line"><span class="keyword">struct </span>listener {</div><div class="line"> <span class="keywordtype">void</span> bar(<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;, <span class="keywordtype">char</span>) { <span class="comment">/* ... */</span> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line"><a class="code" href="classentt_1_1sink.html">entt::sink</a> <a class="code" href="namespaceentt.html#a5f3f083c1335549a9cdfcfeb7779332d">sink</a>{signal};</div><div class="line">listener instance;</div><div class="line"></div><div class="line"><a class="code" href="namespaceentt.html#a5f3f083c1335549a9cdfcfeb7779332d">sink</a>.connect&lt;&amp;foo&gt;();</div><div class="line"><a class="code" href="namespaceentt.html#a5f3f083c1335549a9cdfcfeb7779332d">sink</a>.connect&lt;&amp;listener::bar&gt;(&amp;instance);</div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line"><span class="comment">// disconnects a free function</span></div><div class="line"><a class="code" href="namespaceentt.html#a5f3f083c1335549a9cdfcfeb7779332d">sink</a>.disconnect&lt;&amp;foo&gt;();</div><div class="line"></div><div class="line"><span class="comment">// disconnect a member function of an instance</span></div><div class="line"><a class="code" href="namespaceentt.html#a5f3f083c1335549a9cdfcfeb7779332d">sink</a>.disconnect&lt;&amp;listener::bar&gt;(&amp;instance);</div><div class="line"></div><div class="line"><span class="comment">// disconnect all the member functions of an instance, if any</span></div><div class="line"><a class="code" href="namespaceentt.html#a5f3f083c1335549a9cdfcfeb7779332d">sink</a>.disconnect(&amp;instance);</div><div class="line"></div><div class="line"><span class="comment">// discards all the listeners at once</span></div><div class="line"><a class="code" href="namespaceentt.html#a5f3f083c1335549a9cdfcfeb7779332d">sink</a>.disconnect();</div></div><!-- fragment --><p>As shown above, the listeners don't have to strictly follow the signature of the signal. As long as a listener can be invoked with the given arguments to yield a result that is convertible to the given return type, everything works just fine.<br />
The <code>connect</code> member function returns by default a <code>connection</code> object to be used as an alternative to break a connection by means of its <code>release</code> member function. A <code>scoped_connection</code> can also be created from a connection. In this case, the link is broken automatically as soon as the object goes out of scope.</p>
<p>Once listeners are attached (or even if there are no listeners at all), events and data in general can be published through a signal by means of the <code>publish</code> member function:</p>
<div class="fragment"><div class="line">signal.publish(42, <span class="charliteral">&#39;c&#39;</span>);</div></div><!-- fragment --><p>To collect data, the <code>collect</code> member function should be used instead. Below is a minimal example to show how to use it:</p>
<div class="fragment"><div class="line"><span class="keywordtype">int</span> f() { <span class="keywordflow">return</span> 0; }</div><div class="line"><span class="keywordtype">int</span> g() { <span class="keywordflow">return</span> 1; }</div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line"><a class="code" href="classentt_1_1sigh.html">entt::sigh&lt;int()&gt;</a> signal;</div><div class="line"><a class="code" href="classentt_1_1sink.html">entt::sink</a> <a class="code" href="namespaceentt.html#a5f3f083c1335549a9cdfcfeb7779332d">sink</a>{signal};</div><div class="line"></div><div class="line"><a class="code" href="namespaceentt.html#a5f3f083c1335549a9cdfcfeb7779332d">sink</a>.connect&lt;&amp;f&gt;();</div><div class="line"><a class="code" href="namespaceentt.html#a5f3f083c1335549a9cdfcfeb7779332d">sink</a>.connect&lt;&amp;g&gt;();</div><div class="line"></div><div class="line">std::vector&lt;int&gt; vec{};</div><div class="line">signal.collect([&amp;vec](<span class="keywordtype">int</span> value) { vec.push_back(value); });</div><div class="line"></div><div class="line">assert(vec[0] == 0);</div><div class="line">assert(vec[1] == 1);</div></div><!-- fragment --><p>A collector must expose a function operator that accepts as an argument a type to which the return type of the listeners can be converted. Moreover, it can optionally return a boolean value that is true to stop collecting data, false otherwise. This way one can avoid calling all the listeners in case it isn't necessary.<br />
Functors can also be used in place of a lambda. Since the collector is copied when invoking the <code>collect</code> member function, <code>std::ref</code> is the way to go in this case:</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>my_collector {</div><div class="line"> std::vector&lt;int&gt; vec{};</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> operator()(<span class="keywordtype">int</span> v) noexcept {</div><div class="line"> vec.push_back(v);</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line">my_collector <a class="code" href="namespaceentt.html#aea8b073b774362fe800d9cce3542927a">collector</a>;</div><div class="line">signal.collect(std::ref(collector));</div></div><!-- fragment --><h1><a class="anchor" id="autotoc_md89"></a>
Event dispatcher</h1>
<p>The event dispatcher class is designed so as to be used in a loop. It allows users both to trigger immediate events or to queue events to be published all together once per tick.<br />
This class shares part of its API with the one of the signal handler, but it doesn't require that all the types of events are specified when declared:</p>
<div class="fragment"><div class="line"><span class="comment">// define a general purpose dispatcher that works with naked pointers</span></div><div class="line"><a class="code" href="classentt_1_1dispatcher.html">entt::dispatcher</a> dispatcher{};</div></div><!-- fragment --><p>In order to register an instance of a class to a dispatcher, its type must expose one or more member functions the arguments of which are such that <code>const E &amp;</code> can be converted to them for each type of event <code>E</code>, no matter what the return value is.<br />
The name of the member function aimed to receive the event must be provided to the <code>connect</code> member function of the sink in charge for the specific event:</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>an_event { <span class="keywordtype">int</span> value; };</div><div class="line"><span class="keyword">struct </span>another_event {};</div><div class="line"></div><div class="line"><span class="keyword">struct </span>listener {</div><div class="line"> <span class="keywordtype">void</span> receive(<span class="keyword">const</span> an_event &amp;) { <span class="comment">/* ... */</span> }</div><div class="line"> <span class="keywordtype">void</span> method(<span class="keyword">const</span> another_event &amp;) { <span class="comment">/* ... */</span> }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line">listener listener;</div><div class="line">dispatcher.sink&lt;an_event&gt;().connect&lt;&amp;listener::receive&gt;(&amp;listener);</div><div class="line">dispatcher.sink&lt;another_event&gt;().connect&lt;&amp;listener::method&gt;(&amp;listener);</div></div><!-- fragment --><p>The <code>disconnect</code> member function follows the same pattern and can be used to remove one listener at a time or all of them at once:</p>
<div class="fragment"><div class="line">dispatcher.sink&lt;an_event&gt;().disconnect&lt;&amp;listener::receive&gt;(&amp;listener);</div><div class="line">dispatcher.sink&lt;another_event&gt;().<a class="code" href="namespaceentt.html#a71889edeeb1f03ecc2b47d183465384c">disconnect</a>(&amp;listener);</div></div><!-- fragment --><p>The <code>trigger</code> member function serves the purpose of sending an immediate event to all the listeners registered so far. It offers a convenient approach that relieves users from having to create the event itself. Instead, it's enough to specify the type of event and provide all the parameters required to construct it.<br />
As an example:</p>
<div class="fragment"><div class="line">dispatcher.trigger&lt;an_event&gt;(42);</div><div class="line">dispatcher.trigger&lt;another_event&gt;();</div></div><!-- fragment --><p>Listeners are invoked immediately, order of execution isn't guaranteed. This method can be used to push around urgent messages like an <em>is terminating</em> notification on a mobile app.</p>
<p>On the other hand, the <code>enqueue</code> member function queues messages together and allows to maintain control over the moment they are sent to listeners. The signature of this method is more or less the same of <code>trigger</code>:</p>
<div class="fragment"><div class="line">dispatcher.enqueue&lt;an_event&gt;(42);</div><div class="line">dispatcher.enqueue&lt;another_event&gt;();</div></div><!-- fragment --><p>Events are stored aside until the <code>update</code> member function is invoked, then all the messages that are still pending are sent to the listeners at once:</p>
<div class="fragment"><div class="line"><span class="comment">// emits all the events of the given type at once</span></div><div class="line">dispatcher.update&lt;my_event&gt;();</div><div class="line"></div><div class="line"><span class="comment">// emits all the events queued so far at once</span></div><div class="line">dispatcher.update();</div></div><!-- fragment --><p>This way users can embed the dispatcher in a loop and literally dispatch events once per tick to their systems.</p>
<h1><a class="anchor" id="autotoc_md90"></a>
Event emitter</h1>
<p>A general purpose event emitter thought mainly for those cases where it comes to working with asynchronous stuff.<br />
Originally designed to fit the requirements of <a href="https://github.com/skypjack/uvw"><code>uvw</code></a> (a wrapper for <code>libuv</code> written in modern C++), it was adapted later to be included in this library.</p>
<p>To create a custom emitter type, derived classes must inherit directly from the base class as:</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>my_emitter: emitter&lt;my_emitter&gt; {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --><p>The full list of accepted types of events isn't required. Handlers are created internally on the fly and thus each type of event is accepted by default.</p>
<p>Whenever an event is published, an emitter provides the listeners with a reference to itself along with a const reference to the event. Therefore listeners have an handy way to work with it without incurring in the need of capturing a reference to the emitter itself.<br />
In addition, an opaque object is returned each time a connection is established between an emitter and a listener, allowing the caller to disconnect them at a later time.<br />
The opaque object used to handle connections is both movable and copyable. On the other side, an event emitter is movable but not copyable by default.</p>
<p>To create new instances of an emitter, no arguments are required:</p>
<div class="fragment"><div class="line">my_emitter emitter{};</div></div><!-- fragment --><p>Listeners must be movable and callable objects (free functions, lambdas, functors, <code>std::function</code>s, whatever) whose function type is:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> Event &amp;, my_emitter &amp;)</div></div><!-- fragment --><p>Where <code>Event</code> is the type of event they want to listen.<br />
There are two ways to attach a listener to an event emitter that differ slightly from each other:</p>
<ul>
<li>To register a long-lived listener, use the <code>on</code> member function. It is meant to register a listener designed to be invoked more than once for the given event type.<br />
As an example:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">auto</span> conn = emitter.on&lt;my_event&gt;([](<span class="keyword">const</span> my_event &amp;event, my_emitter &amp;emitter) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">});</div></div><!-- fragment --><p>The connection object can be freely discarded. Otherwise, it can be used later to disconnect the listener if required.</p>
<ul>
<li>To register a short-lived listener, use the <code>once</code> member function. It is meant to register a listener designed to be invoked only once for the given event type. The listener is automatically disconnected after the first invocation.<br />
As an example:</li>
</ul>
<div class="fragment"><div class="line"><span class="keyword">auto</span> conn = emitter.once&lt;my_event&gt;([](<span class="keyword">const</span> my_event &amp;event, my_emitter &amp;emitter) {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">});</div></div><!-- fragment --><p>The connection object can be freely discarded. Otherwise, it can be used later to disconnect the listener if required.</p>
<p>In both cases, the connection object can be used with the <code>erase</code> member function:</p>
<div class="fragment"><div class="line">emitter.erase(conn);</div></div><!-- fragment --><p>There are also two member functions to use either to disconnect all the listeners for a given type of event or to clear the emitter:</p>
<div class="fragment"><div class="line"><span class="comment">// removes all the listener for the specific event</span></div><div class="line">emitter.clear&lt;my_event&gt;();</div><div class="line"></div><div class="line"><span class="comment">// removes all the listeners registered so far</span></div><div class="line">emitter.clear();</div></div><!-- fragment --><p>To send an event to all the listeners that are interested in it, the <code>publish</code> member function offers a convenient approach that relieves users from having to create the event:</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>my_event { <span class="keywordtype">int</span> i; };</div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line">emitter.publish&lt;my_event&gt;(42);</div></div><!-- fragment --><p>Finally, the <code>empty</code> member function tests if there exists at least either a listener registered with the event emitter or to a given type of event:</p>
<div class="fragment"><div class="line"><span class="keywordtype">bool</span> empty;</div><div class="line"></div><div class="line"><span class="comment">// checks if there is any listener registered for the specific event</span></div><div class="line">empty = emitter.empty&lt;my_event&gt;();</div><div class="line"></div><div class="line"><span class="comment">// checks it there are listeners registered with the event emitter</span></div><div class="line">empty = emitter.empty();</div></div><!-- fragment --><p>In general, the event emitter is a handy tool when the derived classes <em>wrap</em> asynchronous operations, because it introduces a <em>nice-to-have</em> model based on events and listeners that kindly hides the complexity behind the scenes. However it is not limited to such uses. </p>
</div></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>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -0,0 +1,918 @@
<!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::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &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">3.2.0</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_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_9e8a2286698e49212830f433eb636a65.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Owning group.
<a href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="group_8hpp_source.html">group.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:ac46b1e783b4e723442366071f9f23fce"><td class="memItemLeft" align="right" valign="top"><a id="ac46b1e783b4e723442366071f9f23fce"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a> = Entity</td></tr>
<tr class="memdesc:ac46b1e783b4e723442366071f9f23fce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:ac46b1e783b4e723442366071f9f23fce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c83478c5db4749a31a4fb638901a153"><td class="memItemLeft" align="right" valign="top"><a id="a1c83478c5db4749a31a4fb638901a153"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a1c83478c5db4749a31a4fb638901a153">size_type</a> = std::size_t</td></tr>
<tr class="memdesc:a1c83478c5db4749a31a4fb638901a153"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:a1c83478c5db4749a31a4fb638901a153"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90bde6cba7ff622e3ebfa898b3f8a9c1"><td class="memItemLeft" align="right" valign="top"><a id="a90bde6cba7ff622e3ebfa898b3f8a9c1"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a90bde6cba7ff622e3ebfa898b3f8a9c1">iterator_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a90bde6cba7ff622e3ebfa898b3f8a9c1">iterator_type</a></td></tr>
<tr class="memdesc:a90bde6cba7ff622e3ebfa898b3f8a9c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input iterator type. <br /></td></tr>
<tr class="separator:a90bde6cba7ff622e3ebfa898b3f8a9c1"><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:ab1600321e1a656bb9cda64e7254821ac"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:ab1600321e1a656bb9cda64e7254821ac"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a1c83478c5db4749a31a4fb638901a153">size_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ab1600321e1a656bb9cda64e7254821ac">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ab1600321e1a656bb9cda64e7254821ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of existing components of the given type. <a href="#ab1600321e1a656bb9cda64e7254821ac">More...</a><br /></td></tr>
<tr class="separator:ab1600321e1a656bb9cda64e7254821ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf74917323f67e0b81b1253cc42308e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a1c83478c5db4749a31a4fb638901a153">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#acf74917323f67e0b81b1253cc42308e9">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:acf74917323f67e0b81b1253cc42308e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of entities that have the given components. <a href="#acf74917323f67e0b81b1253cc42308e9">More...</a><br /></td></tr>
<tr class="separator:acf74917323f67e0b81b1253cc42308e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb2cd73ac05ceb1f81c97abbf8768b31"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:adb2cd73ac05ceb1f81c97abbf8768b31"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#adb2cd73ac05ceb1f81c97abbf8768b31">empty</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:adb2cd73ac05ceb1f81c97abbf8768b31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the pool of a given component is empty. <a href="#adb2cd73ac05ceb1f81c97abbf8768b31">More...</a><br /></td></tr>
<tr class="separator:adb2cd73ac05ceb1f81c97abbf8768b31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a5015a0bd9284e054f343954b011db8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a6a5015a0bd9284e054f343954b011db8">empty</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a6a5015a0bd9284e054f343954b011db8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the group is empty. <a href="#a6a5015a0bd9284e054f343954b011db8">More...</a><br /></td></tr>
<tr class="separator:a6a5015a0bd9284e054f343954b011db8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a945850dca5e5d13ae5be53eaf863ac38"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a945850dca5e5d13ae5be53eaf863ac38"><td class="memTemplItemLeft" align="right" valign="top">Component *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a945850dca5e5d13ae5be53eaf863ac38">raw</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a945850dca5e5d13ae5be53eaf863ac38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of components of a given pool. <a href="#a945850dca5e5d13ae5be53eaf863ac38">More...</a><br /></td></tr>
<tr class="separator:a945850dca5e5d13ae5be53eaf863ac38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15cbbf28224ee70ff5bf4143c673e310"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a15cbbf28224ee70ff5bf4143c673e310"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a15cbbf28224ee70ff5bf4143c673e310">data</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a15cbbf28224ee70ff5bf4143c673e310"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of entities of a given pool. <a href="#a15cbbf28224ee70ff5bf4143c673e310">More...</a><br /></td></tr>
<tr class="separator:a15cbbf28224ee70ff5bf4143c673e310"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50c2cb5276b7784011db9e937f31ada2"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a50c2cb5276b7784011db9e937f31ada2">data</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a50c2cb5276b7784011db9e937f31ada2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of entities. <a href="#a50c2cb5276b7784011db9e937f31ada2">More...</a><br /></td></tr>
<tr class="separator:a50c2cb5276b7784011db9e937f31ada2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc9327669866ff8d39c4a6e6d2bd2333"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a90bde6cba7ff622e3ebfa898b3f8a9c1">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#acc9327669866ff8d39c4a6e6d2bd2333">begin</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:acc9327669866ff8d39c4a6e6d2bd2333"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator to the first entity that has the given components. <a href="#acc9327669866ff8d39c4a6e6d2bd2333">More...</a><br /></td></tr>
<tr class="separator:acc9327669866ff8d39c4a6e6d2bd2333"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f29253a8f7a4cf2972b1b073bcdf3b2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a90bde6cba7ff622e3ebfa898b3f8a9c1">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a9f29253a8f7a4cf2972b1b073bcdf3b2">end</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a9f29253a8f7a4cf2972b1b073bcdf3b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator that is past the last entity that has the given components. <a href="#a9f29253a8f7a4cf2972b1b073bcdf3b2">More...</a><br /></td></tr>
<tr class="separator:a9f29253a8f7a4cf2972b1b073bcdf3b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65394766edeb7e6aad42fc7a387dacb8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a90bde6cba7ff622e3ebfa898b3f8a9c1">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a65394766edeb7e6aad42fc7a387dacb8">find</a> (const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a65394766edeb7e6aad42fc7a387dacb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds an entity. <a href="#a65394766edeb7e6aad42fc7a387dacb8">More...</a><br /></td></tr>
<tr class="separator:a65394766edeb7e6aad42fc7a387dacb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3f79a1e2f300011eeb9b3420e56fccc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ad3f79a1e2f300011eeb9b3420e56fccc">operator[]</a> (const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a1c83478c5db4749a31a4fb638901a153">size_type</a> pos) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ad3f79a1e2f300011eeb9b3420e56fccc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the identifier that occupies the given position. <a href="#ad3f79a1e2f300011eeb9b3420e56fccc">More...</a><br /></td></tr>
<tr class="separator:ad3f79a1e2f300011eeb9b3420e56fccc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20768da49ef9b9dc4cd8d35e22009819"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a20768da49ef9b9dc4cd8d35e22009819">contains</a> (const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a20768da49ef9b9dc4cd8d35e22009819"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a group contains an entity. <a href="#a20768da49ef9b9dc4cd8d35e22009819">More...</a><br /></td></tr>
<tr class="separator:a20768da49ef9b9dc4cd8d35e22009819"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d76ebfec56ed423b41f7837325f1153"><td class="memTemplParams" colspan="2">template&lt;typename... Component&gt; </td></tr>
<tr class="memitem:a8d76ebfec56ed423b41f7837325f1153"><td class="memTemplItemLeft" align="right" valign="top">decltype(auto)&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a8d76ebfec56ed423b41f7837325f1153">get</a> ([[maybe_unused]] const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a8d76ebfec56ed423b41f7837325f1153"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the components assigned to the given entity. <a href="#a8d76ebfec56ed423b41f7837325f1153">More...</a><br /></td></tr>
<tr class="separator:a8d76ebfec56ed423b41f7837325f1153"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd465a5a0743b54cac72bf0d9163b7f4"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
<tr class="memitem:abd465a5a0743b54cac72bf0d9163b7f4"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#abd465a5a0743b54cac72bf0d9163b7f4">each</a> (Func func) const</td></tr>
<tr class="memdesc:abd465a5a0743b54cac72bf0d9163b7f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterates entities and components and applies the given function object to them. <a href="#abd465a5a0743b54cac72bf0d9163b7f4">More...</a><br /></td></tr>
<tr class="separator:abd465a5a0743b54cac72bf0d9163b7f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc243830b7c8020cfa6a1a75814f3656"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
<tr class="memitem:acc243830b7c8020cfa6a1a75814f3656"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#acc243830b7c8020cfa6a1a75814f3656">less</a> (Func func) const</td></tr>
<tr class="memdesc:acc243830b7c8020cfa6a1a75814f3656"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterates entities and components and applies the given function object to them. <a href="#acc243830b7c8020cfa6a1a75814f3656">More...</a><br /></td></tr>
<tr class="separator:acc243830b7c8020cfa6a1a75814f3656"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ecc1d294fd7fcfc47c38110beb3b5b3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a0ecc1d294fd7fcfc47c38110beb3b5b3">sortable</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a0ecc1d294fd7fcfc47c38110beb3b5b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the group can be sorted. <a href="#a0ecc1d294fd7fcfc47c38110beb3b5b3">More...</a><br /></td></tr>
<tr class="separator:a0ecc1d294fd7fcfc47c38110beb3b5b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86ae2163fd9b2999ff2faba740a9af05"><td class="memTemplParams" colspan="2">template&lt;typename... Component, typename Compare , typename Sort = std_sort, typename... Args&gt; </td></tr>
<tr class="memitem:a86ae2163fd9b2999ff2faba740a9af05"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a86ae2163fd9b2999ff2faba740a9af05">sort</a> (Compare compare, Sort algo=Sort{}, Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:a86ae2163fd9b2999ff2faba740a9af05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sort a group according to the given comparison function. <a href="#a86ae2163fd9b2999ff2faba740a9af05">More...</a><br /></td></tr>
<tr class="separator:a86ae2163fd9b2999ff2faba740a9af05"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a60c928831c22b7dd2216dbc469f68f24"><td class="memItemLeft" align="right" valign="top"><a id="a60c928831c22b7dd2216dbc469f68f24"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a60c928831c22b7dd2216dbc469f68f24">basic_registry&lt; Entity &gt;</a></td></tr>
<tr class="memdesc:a60c928831c22b7dd2216dbc469f68f24"><td class="mdescLeft">&#160;</td><td class="mdescRight">A registry is allowed to create groups. <br /></td></tr>
<tr class="separator:a60c928831c22b7dd2216dbc469f68f24"><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, typename... Exclude, typename... Get, typename... Owned&gt;<br />
class entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</h3>
<p>Owning group. </p>
<p>Owning groups return all the entities and only the entities that have at least the given components. Moreover:</p>
<ul>
<li>It's guaranteed that the entity list is tightly packed in memory for fast iterations.</li>
<li>It's guaranteed that the lists of owned components are tightly packed in memory for even faster iterations and to allow direct access.</li>
<li>They stay true to the order of the owned components and all the owned components have the same order in memory.</li>
</ul>
<p>The more types of components are owned by a group, the faster it is to iterate them.</p>
<p><b>Important</b> </p>
<p>Iterators aren't invalidated if:</p>
<ul>
<li>New instances of the given components are created and assigned to entities.</li>
<li>The entity currently pointed is modified (as an example, if one of the given components is removed from the entity to which the iterator points).</li>
<li>The entity currently pointed is destroyed.</li>
</ul>
<p>In all the other cases, modifying the pools of the given components in any way invalidates all the iterators and using them results in undefined behavior.</p>
<dl class="section note"><dt>Note</dt><dd>Groups share references to the underlying data structures of the registry that generated them. Therefore any change to the entities and to the components made by means of the registry are immediately reflected by all the groups. Moreover, sorting an owning group affects all the instance of the same group (it means that users don't have to call <code>sort</code> on each instance to sort all of them because they share the underlying data structure).</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Lifetime of a group must overcome the one of the registry that generated it. In any other case, attempting to use a group results in undefined behavior.</dd></dl>
<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>
<tr><td class="paramname">Exclude</td><td>Types of components used to filter the group. </td></tr>
<tr><td class="paramname">Get</td><td>Types of components observed by the group. </td></tr>
<tr><td class="paramname">Owned</td><td>Types of components owned by the group. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00487">487</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="acc9327669866ff8d39c4a6e6d2bd2333"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc9327669866ff8d39c4a6e6d2bd2333">&#9670;&nbsp;</a></span>begin()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a90bde6cba7ff622e3ebfa898b3f8a9c1">iterator_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &gt;::begin </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 an iterator to the first entity that has the given components. </p>
<p>The returned iterator points to the first entity that has the given components. If the group is empty, the returned iterator will be equal to <code><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a9f29253a8f7a4cf2972b1b073bcdf3b2" title="Returns an iterator that is past the last entity that has the given components. ">end()</a></code>.</p>
<dl class="section note"><dt>Note</dt><dd>Input iterators stay true to the order imposed to the underlying data structures.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the first entity that has the given components. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00643">643</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a20768da49ef9b9dc4cd8d35e22009819"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20768da49ef9b9dc4cd8d35e22009819">&#9670;&nbsp;</a></span>contains()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &gt;::contains </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</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 a group contains an entity. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entt</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the group contains the given entity, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00691">691</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a15cbbf28224ee70ff5bf4143c673e310"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15cbbf28224ee70ff5bf4143c673e310">&#9670;&nbsp;</a></span>data() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&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_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a>* <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &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.<br />
Moreover, in case the group owns the given component, the range <code>[data&lt;Component&gt;(), data&lt;Component&gt;() + <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ab1600321e1a656bb9cda64e7254821ac" title="Returns the number of existing components of the given type. ">size()</a>]</code> is such that it contains the entities that are part of the group itself.</p>
<dl class="section note"><dt>Note</dt><dd>There are no guarantees on the order of the entities. Use <code>begin</code> and <code>end</code> if you want to iterate the group 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="group_8hpp_source.html#l00609">609</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a50c2cb5276b7784011db9e937f31ada2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a50c2cb5276b7784011db9e937f31ada2">&#9670;&nbsp;</a></span>data() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a>* <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &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. </p>
<p>The returned pointer is such that range <code>[<a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a15cbbf28224ee70ff5bf4143c673e310" title="Direct access to the list of entities of a given pool. ">data()</a>, <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a15cbbf28224ee70ff5bf4143c673e310" title="Direct access to the list of entities of a given pool. ">data()</a> + <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ab1600321e1a656bb9cda64e7254821ac" title="Returns the number of existing components of the given type. ">size()</a>]</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 <code>begin</code> and <code>end</code> if you want to iterate the group in the expected order.</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="group_8hpp_source.html#l00625">625</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="abd465a5a0743b54cac72bf0d9163b7f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd465a5a0743b54cac72bf0d9163b7f4">&#9670;&nbsp;</a></span>each()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &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 entities and components and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided with the entity itself and a set of references to all its components. The <em>constness</em> of the components is as requested.<br />
The signature of the function must be equivalent to one of the following forms:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a>, Owned &amp;..., Get &amp;...);</div><div class="line">void(Owned &amp;..., Get &amp;...);</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Empty types aren't explicitly instantiated. Therefore, temporary objects are returned during iterations. They can be caught only by copy or with const references.</dd></dl>
<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="group_8hpp_source.html#l00747">747</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="adb2cd73ac05ceb1f81c97abbf8768b31"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb2cd73ac05ceb1f81c97abbf8768b31">&#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 , typename... Exclude, typename... Get, typename... Owned&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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &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 a 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="group_8hpp_source.html#l00557">557</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a6a5015a0bd9284e054f343954b011db8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a5015a0bd9284e054f343954b011db8">&#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 , typename... Exclude, typename... Get, typename... Owned&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &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 group is empty. </p>
<dl class="section return"><dt>Returns</dt><dd>True if the group is empty, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00565">565</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a9f29253a8f7a4cf2972b1b073bcdf3b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f29253a8f7a4cf2972b1b073bcdf3b2">&#9670;&nbsp;</a></span>end()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a90bde6cba7ff622e3ebfa898b3f8a9c1">iterator_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &gt;::end </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 an iterator that is past the last entity that has the given components. </p>
<p>The returned iterator points to the entity following the last entity that has the given components. Attempting to dereference the returned iterator results in undefined behavior.</p>
<dl class="section note"><dt>Note</dt><dd>Input iterators stay true to the order imposed to the underlying data structures.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the entity following the last entity that has the given components. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00662">662</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a65394766edeb7e6aad42fc7a387dacb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65394766edeb7e6aad42fc7a387dacb8">&#9670;&nbsp;</a></span>find()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a90bde6cba7ff622e3ebfa898b3f8a9c1">iterator_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &gt;::find </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</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>Finds an entity. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entt</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the given entity if it's found, past the end iterator otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00672">672</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a8d76ebfec56ed423b41f7837325f1153"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d76ebfec56ed423b41f7837325f1153">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&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">decltype(auto) <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &gt;::get </td>
<td>(</td>
<td class="paramtype">[[maybe_unused] ] const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</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 components assigned to the given entity. </p>
<p>Prefer this function instead of <code><a class="el" href="classentt_1_1basic__registry.html#a3a683bb33971cc5a0bbbf4a9409208df" title="Returns references to the given components for an entity. ">registry::get</a></code> during iterations. It has far better performance than its companion function.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid component type results in a compilation error. Attempting to use an entity that doesn't belong to the group results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode if the group doesn't contain the given entity.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Types of components to get. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entt</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The components assigned to the entity. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00713">713</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="acc243830b7c8020cfa6a1a75814f3656"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc243830b7c8020cfa6a1a75814f3656">&#9670;&nbsp;</a></span>less()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &gt;::less </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 entities and components and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided with the entity itself and a set of references to non-empty components. The <em>constness</em> of the components is as requested.<br />
The signature of the function must be equivalent to one of the following forms:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a>, Type &amp;...);</div><div class="line">void(Type &amp;...);</div></div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#abd465a5a0743b54cac72bf0d9163b7f4" title="Iterates entities and components and applies the given function object to them. ">each</a></dd></dl>
<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="group_8hpp_source.html#l00772">772</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="ad3f79a1e2f300011eeb9b3420e56fccc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3f79a1e2f300011eeb9b3420e56fccc">&#9670;&nbsp;</a></span>operator[]()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &gt;::operator[] </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a1c83478c5db4749a31a4fb638901a153">size_type</a>&#160;</td>
<td class="paramname"><em>pos</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 identifier that occupies the given position. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pos</td><td>Position of the element to return. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The identifier that occupies the given position. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00682">682</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a945850dca5e5d13ae5be53eaf863ac38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a945850dca5e5d13ae5be53eaf863ac38">&#9670;&nbsp;</a></span>raw()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &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.<br />
Moreover, in case the group owns the given component, the range <code>[raw&lt;Component&gt;(), raw&lt;Component&gt;() + <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ab1600321e1a656bb9cda64e7254821ac" title="Returns the number of existing components of the given type. ">size()</a>]</code> is such that it contains the instances that are part of the group itself.</p>
<dl class="section note"><dt>Note</dt><dd>There are no guarantees on the order of the components. Use <code>begin</code> and <code>end</code> if you want to iterate the group 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. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00587">587</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="ab1600321e1a656bb9cda64e7254821ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1600321e1a656bb9cda64e7254821ac">&#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 , typename... Exclude, typename... Get, typename... Owned&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_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a1c83478c5db4749a31a4fb638901a153">size_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &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="group_8hpp_source.html#l00538">538</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="acf74917323f67e0b81b1253cc42308e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf74917323f67e0b81b1253cc42308e9">&#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 , typename... Exclude, typename... Get, typename... Owned&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a1c83478c5db4749a31a4fb638901a153">size_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &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 that have the given components. </p>
<dl class="section return"><dt>Returns</dt><dd>Number of entities that have the given components. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00546">546</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a86ae2163fd9b2999ff2faba740a9af05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86ae2163fd9b2999ff2faba740a9af05">&#9670;&nbsp;</a></span>sort()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&gt; </div>
<div class="memtemplate">
template&lt;typename... Component, typename Compare , typename Sort = std_sort, 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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &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>algo</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>Sort a group according to the given comparison function. </p>
<p>Sort the group so that iterating it with a couple of iterators returns entities and components in the expected order. See <code>begin</code> and <code>end</code> for more details.</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 one of the following:</p>
<div class="fragment"><div class="line">bool(std::tuple&lt;Component &amp;...&gt;, std::tuple&lt;Component &amp;...&gt;);</div><div class="line">bool(<span class="keyword">const</span> Component &amp;, <span class="keyword">const</span> Component &amp;);</div><div class="line">bool(<span class="keyword">const</span> Entity, <span class="keyword">const</span> Entity);</div></div><!-- fragment --><p>Where <code>Component</code> are either owned types or not but still such that they are iterated by the group.<br />
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 function 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="section note"><dt>Note</dt><dd>Attempting to iterate elements using a raw pointer returned by a call to either <code>data</code> or <code>raw</code> gives no guarantees on the order, even though <code>sort</code> has been invoked.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Optional types of components to compare. </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">algo</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="group_8hpp_source.html#l00834">834</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a0ecc1d294fd7fcfc47c38110beb3b5b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ecc1d294fd7fcfc47c38110beb3b5b3">&#9670;&nbsp;</a></span>sortable()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get, typename... Owned&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt;, Owned... &gt;::sortable </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 group can be sorted. </p>
<dl class="section return"><dt>Returns</dt><dd>True if the group can be sorted, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00782">782</a> of file <a class="el" href="group_8hpp_source.html">group.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="group_8hpp_source.html">group.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>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -0,0 +1,104 @@
<!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: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.2.0</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_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a60c928831c22b7dd2216dbc469f68f24">basic_registry&lt; Entity &gt;</a> class</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a98d938206557463317eac00c8eeaa73e">begin</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a75b0b56face16da50726650622a84e94">capacity</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a2e5841cfbbad8dbcf4311e60d09a8816">contains</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ad962c0369c08227244cea35d9a72de1a">data</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a6ce0cb9d71aee58db0b1bc7fc8dacfe0">data</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#afb66d4717f6b9e4a19c586eb522544b7">each</a>(Func func) const</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a3cd0ed624125b56cf2dacd9b06d6fff6">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a570955dab379090129a528bf15dbff3a">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ace576f925639c740718a5c67cdaf443a">end</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abc62bcf057442361bf5560d570bad011">find</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a9f4ca1f67341a3a3e1397fb0e61ca662">get</a>([[maybe_unused]] const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a8b74d17f862c35fad975a557de40590f">iterator_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a2728847f1d565d445bb5c1a995f5115e">less</a>(Func func) const</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ad90a0721069352d895191a6c49240e38">operator[]</a>(const size_type pos) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a5be80cb2fc104116469c1fa65b992149">raw</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a6cc71def601dfb3a1c224b74a5c91da5">shrink_to_fit</a>()</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a18fb71cb9621491caf569cf20c99fe3c">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ac8aabc32d123bfa0bc10db289aafff7a">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abdaf90d7a55b932927cfcb6a14cb3068">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a75f3809337978fb02cb31b3155f00dbd">sort</a>(Compare compare, Sort algo=Sort{}, Args &amp;&amp;... args)</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a9970a9683d86e9cc664e01144803d598">sort</a>() const</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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>

View File

@@ -0,0 +1,960 @@
<!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::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &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">3.2.0</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_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html">basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Non-owning group.
<a href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="group_8hpp_source.html">group.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:abd2668a2f5cd24eeb4fe5b20f8001e33"><td class="memItemLeft" align="right" valign="top"><a id="abd2668a2f5cd24eeb4fe5b20f8001e33"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a> = Entity</td></tr>
<tr class="memdesc:abd2668a2f5cd24eeb4fe5b20f8001e33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:abd2668a2f5cd24eeb4fe5b20f8001e33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdaf90d7a55b932927cfcb6a14cb3068"><td class="memItemLeft" align="right" valign="top"><a id="abdaf90d7a55b932927cfcb6a14cb3068"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abdaf90d7a55b932927cfcb6a14cb3068">size_type</a> = std::size_t</td></tr>
<tr class="memdesc:abdaf90d7a55b932927cfcb6a14cb3068"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:abdaf90d7a55b932927cfcb6a14cb3068"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b74d17f862c35fad975a557de40590f"><td class="memItemLeft" align="right" valign="top"><a id="a8b74d17f862c35fad975a557de40590f"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a8b74d17f862c35fad975a557de40590f">iterator_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a8b74d17f862c35fad975a557de40590f">iterator_type</a></td></tr>
<tr class="memdesc:a8b74d17f862c35fad975a557de40590f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input iterator type. <br /></td></tr>
<tr class="separator:a8b74d17f862c35fad975a557de40590f"><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:a18fb71cb9621491caf569cf20c99fe3c"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a18fb71cb9621491caf569cf20c99fe3c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abdaf90d7a55b932927cfcb6a14cb3068">size_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a18fb71cb9621491caf569cf20c99fe3c">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a18fb71cb9621491caf569cf20c99fe3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of existing components of the given type. <a href="#a18fb71cb9621491caf569cf20c99fe3c">More...</a><br /></td></tr>
<tr class="separator:a18fb71cb9621491caf569cf20c99fe3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8aabc32d123bfa0bc10db289aafff7a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abdaf90d7a55b932927cfcb6a14cb3068">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ac8aabc32d123bfa0bc10db289aafff7a">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ac8aabc32d123bfa0bc10db289aafff7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of entities that have the given components. <a href="#ac8aabc32d123bfa0bc10db289aafff7a">More...</a><br /></td></tr>
<tr class="separator:ac8aabc32d123bfa0bc10db289aafff7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75b0b56face16da50726650622a84e94"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abdaf90d7a55b932927cfcb6a14cb3068">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a75b0b56face16da50726650622a84e94">capacity</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a75b0b56face16da50726650622a84e94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of elements that a group has currently allocated space for. <a href="#a75b0b56face16da50726650622a84e94">More...</a><br /></td></tr>
<tr class="separator:a75b0b56face16da50726650622a84e94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cc71def601dfb3a1c224b74a5c91da5"><td class="memItemLeft" align="right" valign="top"><a id="a6cc71def601dfb3a1c224b74a5c91da5"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a6cc71def601dfb3a1c224b74a5c91da5">shrink_to_fit</a> ()</td></tr>
<tr class="memdesc:a6cc71def601dfb3a1c224b74a5c91da5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests the removal of unused capacity. <br /></td></tr>
<tr class="separator:a6cc71def601dfb3a1c224b74a5c91da5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cd0ed624125b56cf2dacd9b06d6fff6"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a3cd0ed624125b56cf2dacd9b06d6fff6"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a3cd0ed624125b56cf2dacd9b06d6fff6">empty</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a3cd0ed624125b56cf2dacd9b06d6fff6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the pool of a given component is empty. <a href="#a3cd0ed624125b56cf2dacd9b06d6fff6">More...</a><br /></td></tr>
<tr class="separator:a3cd0ed624125b56cf2dacd9b06d6fff6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a570955dab379090129a528bf15dbff3a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a570955dab379090129a528bf15dbff3a">empty</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a570955dab379090129a528bf15dbff3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the group is empty. <a href="#a570955dab379090129a528bf15dbff3a">More...</a><br /></td></tr>
<tr class="separator:a570955dab379090129a528bf15dbff3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5be80cb2fc104116469c1fa65b992149"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a5be80cb2fc104116469c1fa65b992149"><td class="memTemplItemLeft" align="right" valign="top">Component *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a5be80cb2fc104116469c1fa65b992149">raw</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a5be80cb2fc104116469c1fa65b992149"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of components of a given pool. <a href="#a5be80cb2fc104116469c1fa65b992149">More...</a><br /></td></tr>
<tr class="separator:a5be80cb2fc104116469c1fa65b992149"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad962c0369c08227244cea35d9a72de1a"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:ad962c0369c08227244cea35d9a72de1a"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ad962c0369c08227244cea35d9a72de1a">data</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ad962c0369c08227244cea35d9a72de1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of entities of a given pool. <a href="#ad962c0369c08227244cea35d9a72de1a">More...</a><br /></td></tr>
<tr class="separator:ad962c0369c08227244cea35d9a72de1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ce0cb9d71aee58db0b1bc7fc8dacfe0"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a6ce0cb9d71aee58db0b1bc7fc8dacfe0">data</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a6ce0cb9d71aee58db0b1bc7fc8dacfe0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of entities. <a href="#a6ce0cb9d71aee58db0b1bc7fc8dacfe0">More...</a><br /></td></tr>
<tr class="separator:a6ce0cb9d71aee58db0b1bc7fc8dacfe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98d938206557463317eac00c8eeaa73e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a8b74d17f862c35fad975a557de40590f">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a98d938206557463317eac00c8eeaa73e">begin</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a98d938206557463317eac00c8eeaa73e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator to the first entity that has the given components. <a href="#a98d938206557463317eac00c8eeaa73e">More...</a><br /></td></tr>
<tr class="separator:a98d938206557463317eac00c8eeaa73e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace576f925639c740718a5c67cdaf443a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a8b74d17f862c35fad975a557de40590f">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ace576f925639c740718a5c67cdaf443a">end</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ace576f925639c740718a5c67cdaf443a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator that is past the last entity that has the given components. <a href="#ace576f925639c740718a5c67cdaf443a">More...</a><br /></td></tr>
<tr class="separator:ace576f925639c740718a5c67cdaf443a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc62bcf057442361bf5560d570bad011"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a8b74d17f862c35fad975a557de40590f">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abc62bcf057442361bf5560d570bad011">find</a> (const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:abc62bcf057442361bf5560d570bad011"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds an entity. <a href="#abc62bcf057442361bf5560d570bad011">More...</a><br /></td></tr>
<tr class="separator:abc62bcf057442361bf5560d570bad011"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad90a0721069352d895191a6c49240e38"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ad90a0721069352d895191a6c49240e38">operator[]</a> (const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abdaf90d7a55b932927cfcb6a14cb3068">size_type</a> pos) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ad90a0721069352d895191a6c49240e38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the identifier that occupies the given position. <a href="#ad90a0721069352d895191a6c49240e38">More...</a><br /></td></tr>
<tr class="separator:ad90a0721069352d895191a6c49240e38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e5841cfbbad8dbcf4311e60d09a8816"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a2e5841cfbbad8dbcf4311e60d09a8816">contains</a> (const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a2e5841cfbbad8dbcf4311e60d09a8816"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a group contains an entity. <a href="#a2e5841cfbbad8dbcf4311e60d09a8816">More...</a><br /></td></tr>
<tr class="separator:a2e5841cfbbad8dbcf4311e60d09a8816"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f4ca1f67341a3a3e1397fb0e61ca662"><td class="memTemplParams" colspan="2">template&lt;typename... Component&gt; </td></tr>
<tr class="memitem:a9f4ca1f67341a3a3e1397fb0e61ca662"><td class="memTemplItemLeft" align="right" valign="top">decltype(auto)&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a9f4ca1f67341a3a3e1397fb0e61ca662">get</a> ([[maybe_unused]] const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a9f4ca1f67341a3a3e1397fb0e61ca662"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the components assigned to the given entity. <a href="#a9f4ca1f67341a3a3e1397fb0e61ca662">More...</a><br /></td></tr>
<tr class="separator:a9f4ca1f67341a3a3e1397fb0e61ca662"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb66d4717f6b9e4a19c586eb522544b7"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
<tr class="memitem:afb66d4717f6b9e4a19c586eb522544b7"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#afb66d4717f6b9e4a19c586eb522544b7">each</a> (Func func) const</td></tr>
<tr class="memdesc:afb66d4717f6b9e4a19c586eb522544b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterates entities and components and applies the given function object to them. <a href="#afb66d4717f6b9e4a19c586eb522544b7">More...</a><br /></td></tr>
<tr class="separator:afb66d4717f6b9e4a19c586eb522544b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2728847f1d565d445bb5c1a995f5115e"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
<tr class="memitem:a2728847f1d565d445bb5c1a995f5115e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a2728847f1d565d445bb5c1a995f5115e">less</a> (Func func) const</td></tr>
<tr class="memdesc:a2728847f1d565d445bb5c1a995f5115e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterates entities and components and applies the given function object to them. <a href="#a2728847f1d565d445bb5c1a995f5115e">More...</a><br /></td></tr>
<tr class="separator:a2728847f1d565d445bb5c1a995f5115e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75f3809337978fb02cb31b3155f00dbd"><td class="memTemplParams" colspan="2">template&lt;typename... Component, typename Compare , typename Sort = std_sort, typename... Args&gt; </td></tr>
<tr class="memitem:a75f3809337978fb02cb31b3155f00dbd"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a75f3809337978fb02cb31b3155f00dbd">sort</a> (Compare compare, Sort algo=Sort{}, Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:a75f3809337978fb02cb31b3155f00dbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sort a group according to the given comparison function. <a href="#a75f3809337978fb02cb31b3155f00dbd">More...</a><br /></td></tr>
<tr class="separator:a75f3809337978fb02cb31b3155f00dbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9970a9683d86e9cc664e01144803d598"><td class="memTemplParams" colspan="2">template&lt;typename Component &gt; </td></tr>
<tr class="memitem:a9970a9683d86e9cc664e01144803d598"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a9970a9683d86e9cc664e01144803d598">sort</a> () const</td></tr>
<tr class="memdesc:a9970a9683d86e9cc664e01144803d598"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sort the shared pool of entities according to the given component. <a href="#a9970a9683d86e9cc664e01144803d598">More...</a><br /></td></tr>
<tr class="separator:a9970a9683d86e9cc664e01144803d598"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a60c928831c22b7dd2216dbc469f68f24"><td class="memItemLeft" align="right" valign="top"><a id="a60c928831c22b7dd2216dbc469f68f24"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a60c928831c22b7dd2216dbc469f68f24">basic_registry&lt; Entity &gt;</a></td></tr>
<tr class="memdesc:a60c928831c22b7dd2216dbc469f68f24"><td class="mdescLeft">&#160;</td><td class="mdescRight">A registry is allowed to create groups. <br /></td></tr>
<tr class="separator:a60c928831c22b7dd2216dbc469f68f24"><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, typename... Exclude, typename... Get&gt;<br />
class entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt; &gt;</h3>
<p>Non-owning group. </p>
<p>A non-owning group returns all the entities and only the entities that have at least the given components. Moreover, it's guaranteed that the entity list is tightly packed in memory for fast iterations.<br />
In general, non-owning groups don't stay true to the order of any set of components unless users explicitly sort them.</p>
<p><b>Important</b> </p>
<p>Iterators aren't invalidated if:</p>
<ul>
<li>New instances of the given components are created and assigned to entities.</li>
<li>The entity currently pointed is modified (as an example, if one of the given components is removed from the entity to which the iterator points).</li>
<li>The entity currently pointed is destroyed.</li>
</ul>
<p>In all the other cases, modifying the pools of the given components in any way invalidates all the iterators and using them results in undefined behavior.</p>
<dl class="section note"><dt>Note</dt><dd>Groups share references to the underlying data structures of the registry that generated them. Therefore any change to the entities and to the components made by means of the registry are immediately reflected by all the groups.<br />
Moreover, sorting a non-owning group affects all the instance of the same group (it means that users don't have to call <code>sort</code> on each instance to sort all of them because they share the set of entities).</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Lifetime of a group must overcome the one of the registry that generated it. In any other case, attempting to use a group results in undefined behavior.</dd></dl>
<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>
<tr><td class="paramname">Exclude</td><td>Types of components used to filter the group. </td></tr>
<tr><td class="paramname">Get</td><td>Type of components observed by the group. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00069">69</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a98d938206557463317eac00c8eeaa73e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98d938206557463317eac00c8eeaa73e">&#9670;&nbsp;</a></span>begin()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a8b74d17f862c35fad975a557de40590f">iterator_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &gt;::begin </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 an iterator to the first entity that has the given components. </p>
<p>The returned iterator points to the first entity that has the given components. If the group is empty, the returned iterator will be equal to <code><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ace576f925639c740718a5c67cdaf443a" title="Returns an iterator that is past the last entity that has the given components. ">end()</a></code>.</p>
<dl class="section note"><dt>Note</dt><dd>Input iterators stay true to the order imposed to the underlying data structures.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the first entity that has the given components. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00220">220</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a75b0b56face16da50726650622a84e94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75b0b56face16da50726650622a84e94">&#9670;&nbsp;</a></span>capacity()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abdaf90d7a55b932927cfcb6a14cb3068">size_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &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 elements that a group has currently allocated space for. </p>
<dl class="section return"><dt>Returns</dt><dd>Capacity of the group. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00124">124</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a2e5841cfbbad8dbcf4311e60d09a8816"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e5841cfbbad8dbcf4311e60d09a8816">&#9670;&nbsp;</a></span>contains()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &gt;::contains </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</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 a group contains an entity. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entt</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the group contains the given entity, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00268">268</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="ad962c0369c08227244cea35d9a72de1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad962c0369c08227244cea35d9a72de1a">&#9670;&nbsp;</a></span>data() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&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_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a>* <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &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 <code>begin</code> and <code>end</code> if you want to iterate the group 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="group_8hpp_source.html#l00186">186</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a6ce0cb9d71aee58db0b1bc7fc8dacfe0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ce0cb9d71aee58db0b1bc7fc8dacfe0">&#9670;&nbsp;</a></span>data() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a>* <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &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. </p>
<p>The returned pointer is such that range <code>[<a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ad962c0369c08227244cea35d9a72de1a" title="Direct access to the list of entities of a given pool. ">data()</a>, <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#ad962c0369c08227244cea35d9a72de1a" title="Direct access to the list of entities of a given pool. ">data()</a> + <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a18fb71cb9621491caf569cf20c99fe3c" title="Returns the number of existing components of the given type. ">size()</a>]</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 <code>begin</code> and <code>end</code> if you want to iterate the group in the expected order.</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="group_8hpp_source.html#l00202">202</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="afb66d4717f6b9e4a19c586eb522544b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb66d4717f6b9e4a19c586eb522544b7">&#9670;&nbsp;</a></span>each()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &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 entities and components and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided with the entity itself and a set of references to all its components. The <em>constness</em> of the components is as requested.<br />
The signature of the function must be equivalent to one of the following forms:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a>, Get &amp;...);</div><div class="line">void(Get &amp;...);</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Empty types aren't explicitly instantiated. Therefore, temporary objects are returned during iterations. They can be caught only by copy or with const references.</dd></dl>
<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="group_8hpp_source.html#l00324">324</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a3cd0ed624125b56cf2dacd9b06d6fff6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cd0ed624125b56cf2dacd9b06d6fff6">&#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 , typename... Exclude, typename... Get&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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &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 a 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="group_8hpp_source.html#l00140">140</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a570955dab379090129a528bf15dbff3a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a570955dab379090129a528bf15dbff3a">&#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 , typename... Exclude, typename... Get&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &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 group is empty. </p>
<dl class="section return"><dt>Returns</dt><dd>True if the group is empty, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00148">148</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="ace576f925639c740718a5c67cdaf443a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace576f925639c740718a5c67cdaf443a">&#9670;&nbsp;</a></span>end()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a8b74d17f862c35fad975a557de40590f">iterator_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &gt;::end </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 an iterator that is past the last entity that has the given components. </p>
<p>The returned iterator points to the entity following the last entity that has the given components. Attempting to dereference the returned iterator results in undefined behavior.</p>
<dl class="section note"><dt>Note</dt><dd>Input iterators stay true to the order imposed to the underlying data structures.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the entity following the last entity that has the given components. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00239">239</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="abc62bcf057442361bf5560d570bad011"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc62bcf057442361bf5560d570bad011">&#9670;&nbsp;</a></span>find()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#a8b74d17f862c35fad975a557de40590f">iterator_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &gt;::find </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</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>Finds an entity. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entt</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the given entity if it's found, past the end iterator otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00249">249</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a9f4ca1f67341a3a3e1397fb0e61ca662"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f4ca1f67341a3a3e1397fb0e61ca662">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&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">decltype(auto) <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &gt;::get </td>
<td>(</td>
<td class="paramtype">[[maybe_unused] ] const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</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 components assigned to the given entity. </p>
<p>Prefer this function instead of <code><a class="el" href="classentt_1_1basic__registry.html#a3a683bb33971cc5a0bbbf4a9409208df" title="Returns references to the given components for an entity. ">registry::get</a></code> during iterations. It has far better performance than its companion function.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an invalid component type results in a compilation error. Attempting to use an entity that doesn't belong to the group results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode if the group doesn't contain the given entity.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Types of components to get. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entt</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The components assigned to the entity. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00290">290</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a2728847f1d565d445bb5c1a995f5115e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2728847f1d565d445bb5c1a995f5115e">&#9670;&nbsp;</a></span>less()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &gt;::less </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 entities and components and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided with the entity itself and a set of references to non-empty components. The <em>constness</em> of the components is as requested.<br />
The signature of the function must be equivalent to one of the following forms:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a>, Type &amp;...);</div><div class="line">void(Type &amp;...);</div></div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#afb66d4717f6b9e4a19c586eb522544b7" title="Iterates entities and components and applies the given function object to them. ">each</a></dd></dl>
<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="group_8hpp_source.html#l00349">349</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="ad90a0721069352d895191a6c49240e38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad90a0721069352d895191a6c49240e38">&#9670;&nbsp;</a></span>operator[]()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abd2668a2f5cd24eeb4fe5b20f8001e33">entity_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &gt;::operator[] </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abdaf90d7a55b932927cfcb6a14cb3068">size_type</a>&#160;</td>
<td class="paramname"><em>pos</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 identifier that occupies the given position. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pos</td><td>Position of the element to return. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The identifier that occupies the given position. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00259">259</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a5be80cb2fc104116469c1fa65b992149"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5be80cb2fc104116469c1fa65b992149">&#9670;&nbsp;</a></span>raw()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename... Exclude, typename... Get&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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &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 <code>begin</code> and <code>end</code> if you want to iterate the group 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. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00167">167</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a18fb71cb9621491caf569cf20c99fe3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18fb71cb9621491caf569cf20c99fe3c">&#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 , typename... Exclude, typename... Get&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_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abdaf90d7a55b932927cfcb6a14cb3068">size_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &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="group_8hpp_source.html#l00107">107</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="ac8aabc32d123bfa0bc10db289aafff7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8aabc32d123bfa0bc10db289aafff7a">&#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 , typename... Exclude, typename... Get&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_8_8_8_01_4_01_4.html#abdaf90d7a55b932927cfcb6a14cb3068">size_type</a> <a class="el" href="classentt_1_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &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 that have the given components. </p>
<dl class="section return"><dt>Returns</dt><dd>Number of entities that have the given components. </dd></dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00115">115</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a75f3809337978fb02cb31b3155f00dbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75f3809337978fb02cb31b3155f00dbd">&#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 , typename... Exclude, typename... Get&gt; </div>
<div class="memtemplate">
template&lt;typename... Component, typename Compare , typename Sort = std_sort, 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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &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>algo</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>Sort a group according to the given comparison function. </p>
<p>Sort the group so that iterating it with a couple of iterators returns entities and components in the expected order. See <code>begin</code> and <code>end</code> for more details.</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 one of the following:</p>
<div class="fragment"><div class="line">bool(std::tuple&lt;Component &amp;...&gt;, std::tuple&lt;Component &amp;...&gt;);</div><div class="line">bool(<span class="keyword">const</span> Component &amp;..., <span class="keyword">const</span> Component &amp;...);</div><div class="line">bool(<span class="keyword">const</span> Entity, <span class="keyword">const</span> Entity);</div></div><!-- fragment --><p>Where <code>Component</code> are such that they are iterated by the group.<br />
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 function 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="section note"><dt>Note</dt><dd>Attempting to iterate elements using a raw pointer returned by a call to either <code>data</code> or <code>raw</code> gives no guarantees on the order, even though <code>sort</code> has been invoked.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Optional types of components to compare. </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">algo</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="group_8hpp_source.html#l00400">400</a> of file <a class="el" href="group_8hpp_source.html">group.hpp</a>.</p>
</div>
</div>
<a id="a9970a9683d86e9cc664e01144803d598"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9970a9683d86e9cc664e01144803d598">&#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 , typename... Exclude, typename... Get&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_1basic__group.html">entt::basic_group</a>&lt; Entity, <a class="el" href="structentt_1_1exclude__t.html">exclude_t</a>&lt; Exclude... &gt;, <a class="el" href="structentt_1_1get__t.html">get_t</a>&lt; Get... &gt; &gt;::sort </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>Sort the shared pool of entities according to the given component. </p>
<p>Non-owning groups of the same type share with the registry a pool of entities with its own order that doesn't depend on the order of any pool of components. Users can order the underlying data structure so that it respects the order of the pool of the given component.</p>
<dl class="section note"><dt>Note</dt><dd>The shared pool of entities and thus its order is affected by the changes to each and every pool that it tracks. Therefore changes to those pools can quickly ruin the order imposed to the pool of entities shared between the non-owning groups.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Type of component to use to impose the order. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="group_8hpp_source.html#l00429">429</a> of file <a class="el" href="group_8hpp_source.html">group.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="group_8hpp_source.html">group.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>

View File

@@ -0,0 +1,102 @@
<!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: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.2.0</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_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a60c928831c22b7dd2216dbc469f68f24">basic_registry&lt; Entity &gt;</a> class</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#acc9327669866ff8d39c4a6e6d2bd2333">begin</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a20768da49ef9b9dc4cd8d35e22009819">contains</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a15cbbf28224ee70ff5bf4143c673e310">data</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a50c2cb5276b7784011db9e937f31ada2">data</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#abd465a5a0743b54cac72bf0d9163b7f4">each</a>(Func func) const</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#adb2cd73ac05ceb1f81c97abbf8768b31">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a6a5015a0bd9284e054f343954b011db8">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a9f29253a8f7a4cf2972b1b073bcdf3b2">end</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ac46b1e783b4e723442366071f9f23fce">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a65394766edeb7e6aad42fc7a387dacb8">find</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a8d76ebfec56ed423b41f7837325f1153">get</a>([[maybe_unused]] const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a90bde6cba7ff622e3ebfa898b3f8a9c1">iterator_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#acc243830b7c8020cfa6a1a75814f3656">less</a>(Func func) const</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ad3f79a1e2f300011eeb9b3420e56fccc">operator[]</a>(const size_type pos) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a945850dca5e5d13ae5be53eaf863ac38">raw</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#ab1600321e1a656bb9cda64e7254821ac">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#acf74917323f67e0b81b1253cc42308e9">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a1c83478c5db4749a31a4fb638901a153">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a86ae2163fd9b2999ff2faba740a9af05">sort</a>(Compare compare, Sort algo=Sort{}, Args &amp;&amp;... args)</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html#a0ecc1d294fd7fcfc47c38110beb3b5b3">sortable</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__group_3_01Entity_00_01exclude__t_3_01Exclude_8_8_8_01_4_00_01get__t_3_01Get_1aada3a14110654dc27700c17c9c2396.html">entt::basic_group&lt; Entity, exclude_t&lt; Exclude... &gt;, get_t&lt; Get... &gt;, Owned... &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -88,7 +88,7 @@ $(function() {
<tr><td class="entry"><a class="el" href="classentt_1_1basic__observer.html#a03dcb6b0999d29bc39410d7ae6d9ac53">operator=</a>(const basic_observer &amp;)=delete</td><td class="entry"><a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__observer.html#a8b7cd199f236a4dee02f202ec0fd6281">operator=</a>(basic_observer &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__observer.html#ab42aeb1e1ffb32b98bc4da4f30755ec1">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__observer.html#a4ffa0bb088e8707d73ae0a5d468140cd">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__observer.html#a147a0e35035fc3c19b67b31d66d2d80b">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__observer.html#afb6fbd2a5ce7bc57013b0bd9ad482599">~basic_observer</a>()=default</td><td class="entry"><a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer&lt; Entity &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -84,10 +84,10 @@ Public Types</h2></td></tr>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#af7a57f53ed7a6c835129480ff6594f7d">entity_type</a> = Entity</td></tr>
<tr class="memdesc:af7a57f53ed7a6c835129480ff6594f7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:af7a57f53ed7a6c835129480ff6594f7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ffa0bb088e8707d73ae0a5d468140cd"><td class="memItemLeft" align="right" valign="top"><a id="a4ffa0bb088e8707d73ae0a5d468140cd"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a4ffa0bb088e8707d73ae0a5d468140cd">size_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__observer.html#a4ffa0bb088e8707d73ae0a5d468140cd">size_type</a></td></tr>
<tr class="memdesc:a4ffa0bb088e8707d73ae0a5d468140cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:a4ffa0bb088e8707d73ae0a5d468140cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a147a0e35035fc3c19b67b31d66d2d80b"><td class="memItemLeft" align="right" valign="top"><a id="a147a0e35035fc3c19b67b31d66d2d80b"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a147a0e35035fc3c19b67b31d66d2d80b">size_type</a> = std::size_t</td></tr>
<tr class="memdesc:a147a0e35035fc3c19b67b31d66d2d80b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:a147a0e35035fc3c19b67b31d66d2d80b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7954b77084292847aa1c8da9f22d8443"><td class="memItemLeft" align="right" valign="top"><a id="a7954b77084292847aa1c8da9f22d8443"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a7954b77084292847aa1c8da9f22d8443">iterator_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__observer.html#a7954b77084292847aa1c8da9f22d8443">iterator_type</a></td></tr>
<tr class="memdesc:a7954b77084292847aa1c8da9f22d8443"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input iterator type. <br /></td></tr>
@@ -129,7 +129,7 @@ Public Member Functions</h2></td></tr>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a1337e8f885ca963383e5a3ed2a354955">disconnect</a> ()</td></tr>
<tr class="memdesc:a1337e8f885ca963383e5a3ed2a354955"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disconnects an observer from the registry it keeps track of. <br /></td></tr>
<tr class="separator:a1337e8f885ca963383e5a3ed2a354955"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab42aeb1e1ffb32b98bc4da4f30755ec1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__observer.html#a4ffa0bb088e8707d73ae0a5d468140cd">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#ab42aeb1e1ffb32b98bc4da4f30755ec1">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:ab42aeb1e1ffb32b98bc4da4f30755ec1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__observer.html#a147a0e35035fc3c19b67b31d66d2d80b">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#ab42aeb1e1ffb32b98bc4da4f30755ec1">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ab42aeb1e1ffb32b98bc4da4f30755ec1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of elements in an observer. <a href="#ab42aeb1e1ffb32b98bc4da4f30755ec1">More...</a><br /></td></tr>
<tr class="separator:ab42aeb1e1ffb32b98bc4da4f30755ec1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0986b7af08f9b1bc70bd01b9bbe66cc4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a0986b7af08f9b1bc70bd01b9bbe66cc4">empty</a> () const ENTT_NOEXCEPT</td></tr>
@@ -605,7 +605,7 @@ template&lt;typename Entity &gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__observer.html#a4ffa0bb088e8707d73ae0a5d468140cd">size_type</a> <a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer</a>&lt; Entity &gt;::size </td>
<td class="memname"><a class="el" href="classentt_1_1basic__observer.html#a147a0e35035fc3c19b67b31d66d2d80b">size_type</a> <a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer</a>&lt; Entity &gt;::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>

View File

@@ -0,0 +1,107 @@
<!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: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</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_1basic__prototype.html">basic_prototype</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">entt::basic_prototype&lt; Entity &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a0a5c5313d46f5f52977e7fc3fe93d865">assign</a>(registry_type &amp;other, const entity_type dst) const</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a6062b4ed6fcf6053ea748b235db47807">assign</a>(const entity_type dst) const</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#ad8cc32084b579a727669e8f0e7b600a9">assign_or_replace</a>(registry_type &amp;other, const entity_type dst) const</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a2884b160480a2e26acefd0d47316c26d">assign_or_replace</a>(const entity_type dst) const</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a3eca09d9203b3ad97d6663e0bf5bb2f8">backend</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#ac6cdd27694a8e9e2bdb576ffca098e1b">backend</a>() ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#acffae325962a54170176025d67d38a80">basic_prototype</a>(registry_type &amp;ref)</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a1592ff421e77a624830cb965c6f52110">basic_prototype</a>(basic_prototype &amp;&amp;other)</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a6f96bf09702ed9b2d911c1d08ff5b0b1">create</a>(registry_type &amp;other) const</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#adb90842d165a76693de962f2cb7444e4">create</a>() const</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a0a8606dc36496d42f6188acdad4906f3">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#ac030e38aaa91c32530493a97a64fe1af">get</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a803649bd8fde6e3adad5c99dd118186a">get</a>() ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a6d4f9ce06a07f9b40ec714b13428326c">has</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a463e0d4a93ce396a069bd181c59ba6e2">operator()</a>(registry_type &amp;other, const entity_type dst) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a081d19f1dbb870c85f2bb215422700c1">operator()</a>(const entity_type dst) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a8e47d98dbba3929f3edfe682975db846">operator()</a>(registry_type &amp;other) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#afa55befc754adbf67d25ebae7aed6a75">operator()</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a24a5c455ba9368897c959f722496fa54">operator=</a>(basic_prototype &amp;&amp;other)</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#aa7b03fff67dee5898849c971bc341962">registry_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#afb3ed35c2b2edcca53a618116208ca94">set</a>(Args &amp;&amp;... args)</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a01d3afe0260e80974f24c1d36b5fbccc">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a26c239c2d51cda5c0f5ff398d6a67f8c">try_get</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a59e50d3b0aabb00952322a72bdaa5c69">try_get</a>() ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a05230038ddbafaca4d5da09dfb247186">unset</a>() ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html#a1181e970dc90a33b823210d33af819d5">~basic_prototype</a>()</td><td class="entry"><a class="el" href="classentt_1_1basic__prototype.html">entt::basic_prototype&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></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>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -463,7 +463,7 @@ template&lt;typename Component , typename... Args&gt; </div>
</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#l00727">727</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00745">745</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -526,7 +526,7 @@ template&lt;typename Component , typename... Args&gt; </div>
</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#l00921">921</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00939">939</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -648,7 +648,7 @@ Listeners and groups aren't copied. It is up to the caller to connect the listen
</dl>
<dl class="section return"><dt>Returns</dt><dd>A fresh copy of the registry. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01534">1534</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01552">1552</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -807,6 +807,9 @@ template&lt;typename... Component, typename... Exclude&gt; </div>
<p>Creates a new entity from a prototype entity. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1basic__registry.html#a32d0bb4c8ad63d78c8ae455dfeb02c59" title="Creates a new entity and returns it. ">create</a></dd></dl>
<p>The components must be copyable for obvious reasons. The source entity must be a valid one.<br />
If no components are provided, the registry will try to copy all the existing types. The non-copyable ones will be ignored.</p>
<dl class="section note"><dt>Note</dt><dd>Specifying the list of components is ways faster than an opaque copy.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Types of components to copy. </td></tr>
@@ -823,7 +826,7 @@ template&lt;typename... Component, typename... Exclude&gt; </div>
</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#l00625">625</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00634">634</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -885,6 +888,9 @@ template&lt;typename... Component, typename It , typename... Exclude&gt; </div>
<p>Assigns each element in a range an entity from a prototype entity. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1basic__registry.html#a32d0bb4c8ad63d78c8ae455dfeb02c59" title="Creates a new entity and returns it. ">create</a></dd></dl>
<p>The components must be copyable for obvious reasons. The entities must be all valid.<br />
If no components are provided, the registry will try to copy all the existing types. The non-copyable ones will be ignored.</p>
<dl class="section note"><dt>Note</dt><dd>Specifying the list of components is ways faster than an opaque copy and uses the batch creation under the hood.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Component</td><td>Types of components to copy. </td></tr>
@@ -902,7 +908,7 @@ template&lt;typename... Component, typename It , typename... Exclude&gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00644">644</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00662">662</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -944,7 +950,7 @@ template&lt;typename Type &gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A valid reference to the object in the context of the registry. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01804">1804</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01822">1822</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -986,7 +992,7 @@ template&lt;typename Type &gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A valid reference to the object in the context of the registry. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01812">1812</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01830">1830</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1035,7 +1041,7 @@ template&lt;typename Type , typename... Args&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Reference to the object. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01765">1765</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01783">1783</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1161,7 +1167,7 @@ Attempting to use an invalid entity results in undefined behavior.<br />
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00677">677</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00695">695</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1219,7 +1225,7 @@ template&lt;typename It &gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00701">701</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00719">719</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1268,7 +1274,7 @@ template&lt;typename Func &gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01197">1197</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01215">1215</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1428,7 +1434,7 @@ template&lt;typename... Component&gt; </div>
</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#l00785">785</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00803">803</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1477,7 +1483,7 @@ template&lt;typename... Component&gt; </div>
</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#l00797">797</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00815">815</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1541,7 +1547,7 @@ template&lt;typename Component , typename... Args&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Reference to the component owned by the entity. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00832">832</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00850">850</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1600,7 +1606,7 @@ template&lt;typename... Owned, typename... Get, typename... Exclude&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created group. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01343">1343</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01361">1361</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1654,7 +1660,7 @@ template&lt;typename... Owned, typename... Get, typename... Exclude&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created group. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01430">1430</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01448">1448</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1697,7 +1703,7 @@ template&lt;typename... Owned, typename... Exclude&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created group. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01445">1445</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01463">1463</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1740,7 +1746,7 @@ template&lt;typename... Owned, typename... Exclude&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created group. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01459">1459</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01477">1477</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1789,7 +1795,7 @@ template&lt;typename... Component&gt; </div>
</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#l00764">764</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00782">782</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1824,7 +1830,7 @@ template&lt;typename Entity&gt; </div>
<dl class="section note"><dt>Note</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#l01678">1678</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01696">1696</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1870,7 +1876,7 @@ template&lt;typename Component &gt; </div>
</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#l00955">955</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<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>
@@ -1916,7 +1922,7 @@ template&lt;typename Component &gt; </div>
</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#l01018">1018</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01036">1036</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -1962,7 +1968,7 @@ template&lt;typename Component &gt; </div>
</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#l00986">986</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01004">1004</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2032,7 +2038,7 @@ template&lt;typename Entity&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the entity has no components assigned, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01222">1222</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01240">1240</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2081,7 +2087,7 @@ template&lt;typename Func &gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01251">1251</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01269">1269</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2121,7 +2127,7 @@ template&lt;typename Component &gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the component belongs to a group, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01310">1310</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01328">1328</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2255,7 +2261,7 @@ template&lt;typename Component &gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00746">746</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00764">764</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2317,7 +2323,7 @@ template&lt;typename Component , typename... Args&gt; </div>
</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#l00893">893</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<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>
@@ -2452,7 +2458,7 @@ template&lt;typename Component &gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01136">1136</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01154">1154</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2492,7 +2498,7 @@ template&lt;typename Component &gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01153">1153</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01171">1171</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2524,7 +2530,7 @@ template&lt;typename Entity&gt; </div>
<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#l01172">1172</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01190">1190</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2587,7 +2593,7 @@ template&lt;typename It &gt; </div>
</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#l01485">1485</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01503">1503</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2636,7 +2642,7 @@ template&lt;typename Type , typename... Args&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the newly created object. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01722">1722</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01740">1740</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2781,7 +2787,7 @@ template&lt;typename Entity&gt; </div>
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#l01647">1647</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01665">1665</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2861,7 +2867,7 @@ template&lt;typename Component , typename Compare , typename Sort = std_sort, t
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01071">1071</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01089">1089</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2912,7 +2918,7 @@ template&lt;typename To , typename From &gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01116">1116</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01134">1134</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -2991,7 +2997,7 @@ Attempting to use invalid entities results in undefined behavior.<br />
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01599">1599</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01617">1617</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -3070,7 +3076,7 @@ template&lt;typename... Component, typename It , typename... Exclude&gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01617">1617</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01635">1635</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -3110,7 +3116,7 @@ template&lt;typename Type &gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the object if it exists in the context of the registry, a null pointer otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01777">1777</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01795">1795</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -3150,7 +3156,7 @@ template&lt;typename Type &gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the object if it exists in the context of the registry, a null pointer otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01787">1787</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01805">1805</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -3199,7 +3205,7 @@ template&lt;typename... Component&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointers to the components owned by the entity. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00851">851</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00869">869</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -3248,7 +3254,7 @@ template&lt;typename... Component&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointers to the components owned by the entity. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00864">864</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l00882">882</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -3329,7 +3335,7 @@ template&lt;typename Type &gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01747">1747</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01765">1765</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -3458,7 +3464,7 @@ template&lt;typename... Component&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created view. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01293">1293</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01311">1311</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>
@@ -3509,7 +3515,7 @@ template&lt;typename... Component&gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created view. </dd></dl>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01299">1299</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="registry_8hpp_source.html#l01317">1317</a> of file <a class="el" href="registry_8hpp_source.html">registry.hpp</a>.</p>
</div>
</div>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -76,10 +76,10 @@ $(function() {
<tr><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html#a79fe059a28f768f4dc82edf48438cce0">each</a>(Func func) const</td><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html#a2483047bb494ac1bea3b1823bec87985">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html#a777a70d6c1905a32b8a68b0b87cc9b85">end</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html#a8347b5b209e9dd8962c7b98c3314bae6">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html#a7ede80f53e93473099819167d42bf2f1">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html#afbaa87a1aa3eacd54ec3a5462faa10da">iterator_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html#a8a14205c30a77fae500ff244a8f9041e">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html#af8fef2e30d39eaa7ce736539a55c2a1a">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html#aabb4450ce3d686fe05bd92e5975d11fb">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view&lt; Entity &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -81,14 +81,14 @@ $(function() {
<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:a8347b5b209e9dd8962c7b98c3314bae6"><td class="memItemLeft" align="right" valign="top"><a id="a8347b5b209e9dd8962c7b98c3314bae6"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#a8347b5b209e9dd8962c7b98c3314bae6">entity_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__runtime__view.html#a8347b5b209e9dd8962c7b98c3314bae6">entity_type</a></td></tr>
<tr class="memdesc:a8347b5b209e9dd8962c7b98c3314bae6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:a8347b5b209e9dd8962c7b98c3314bae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8fef2e30d39eaa7ce736539a55c2a1a"><td class="memItemLeft" align="right" valign="top"><a id="af8fef2e30d39eaa7ce736539a55c2a1a"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#af8fef2e30d39eaa7ce736539a55c2a1a">size_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__runtime__view.html#af8fef2e30d39eaa7ce736539a55c2a1a">size_type</a></td></tr>
<tr class="memdesc:af8fef2e30d39eaa7ce736539a55c2a1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:af8fef2e30d39eaa7ce736539a55c2a1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ede80f53e93473099819167d42bf2f1"><td class="memItemLeft" align="right" valign="top"><a id="a7ede80f53e93473099819167d42bf2f1"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#a7ede80f53e93473099819167d42bf2f1">entity_type</a> = Entity</td></tr>
<tr class="memdesc:a7ede80f53e93473099819167d42bf2f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:a7ede80f53e93473099819167d42bf2f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabb4450ce3d686fe05bd92e5975d11fb"><td class="memItemLeft" align="right" valign="top"><a id="aabb4450ce3d686fe05bd92e5975d11fb"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#aabb4450ce3d686fe05bd92e5975d11fb">size_type</a> = std::size_t</td></tr>
<tr class="memdesc:aabb4450ce3d686fe05bd92e5975d11fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:aabb4450ce3d686fe05bd92e5975d11fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbaa87a1aa3eacd54ec3a5462faa10da"><td class="memItemLeft" align="right" valign="top"><a id="afbaa87a1aa3eacd54ec3a5462faa10da"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#afbaa87a1aa3eacd54ec3a5462faa10da">iterator_type</a> = iterator</td></tr>
<tr class="memdesc:afbaa87a1aa3eacd54ec3a5462faa10da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input iterator type. <br /></td></tr>
@@ -96,7 +96,7 @@ using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
</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:a8a14205c30a77fae500ff244a8f9041e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__runtime__view.html#af8fef2e30d39eaa7ce736539a55c2a1a">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#a8a14205c30a77fae500ff244a8f9041e">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:a8a14205c30a77fae500ff244a8f9041e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__runtime__view.html#aabb4450ce3d686fe05bd92e5975d11fb">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#a8a14205c30a77fae500ff244a8f9041e">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a8a14205c30a77fae500ff244a8f9041e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimates the number of entities that have the given components. <a href="#a8a14205c30a77fae500ff244a8f9041e">More...</a><br /></td></tr>
<tr class="separator:a8a14205c30a77fae500ff244a8f9041e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2483047bb494ac1bea3b1823bec87985"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#a2483047bb494ac1bea3b1823bec87985">empty</a> () const ENTT_NOEXCEPT</td></tr>
@@ -108,7 +108,7 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a777a70d6c1905a32b8a68b0b87cc9b85"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__runtime__view.html#afbaa87a1aa3eacd54ec3a5462faa10da">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#a777a70d6c1905a32b8a68b0b87cc9b85">end</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a777a70d6c1905a32b8a68b0b87cc9b85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator that is past the last entity that has the given components. <a href="#a777a70d6c1905a32b8a68b0b87cc9b85">More...</a><br /></td></tr>
<tr class="separator:a777a70d6c1905a32b8a68b0b87cc9b85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3754c1d13392fc18daaf2003867a64fd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#a3754c1d13392fc18daaf2003867a64fd">contains</a> (const <a class="el" href="classentt_1_1basic__runtime__view.html#a8347b5b209e9dd8962c7b98c3314bae6">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:a3754c1d13392fc18daaf2003867a64fd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__runtime__view.html#a3754c1d13392fc18daaf2003867a64fd">contains</a> (const <a class="el" href="classentt_1_1basic__runtime__view.html#a7ede80f53e93473099819167d42bf2f1">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a3754c1d13392fc18daaf2003867a64fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a view contains an entity. <a href="#a3754c1d13392fc18daaf2003867a64fd">More...</a><br /></td></tr>
<tr class="separator:a3754c1d13392fc18daaf2003867a64fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79fe059a28f768f4dc82edf48438cce0"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
@@ -197,7 +197,7 @@ template&lt;typename Entity &gt; </div>
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view</a>&lt; Entity &gt;::contains </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__runtime__view.html#a8347b5b209e9dd8962c7b98c3314bae6">entity_type</a>&#160;</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__runtime__view.html#a7ede80f53e93473099819167d42bf2f1">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</em></td><td>)</td>
<td> const</td>
</tr>
@@ -253,7 +253,7 @@ template&lt;typename Func &gt; </div>
<p>Iterates entities and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided only with the entity itself. To get the components, users can use the registry with which the view was built.<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_1basic__runtime__view.html#a8347b5b209e9dd8962c7b98c3314bae6">entity_type</a>);</div></div><!-- fragment --><dl class="tparams"><dt>Template Parameters</dt><dd>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__runtime__view.html#a7ede80f53e93473099819167d42bf2f1">entity_type</a>);</div></div><!-- fragment --><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>
@@ -348,7 +348,7 @@ template&lt;typename Entity &gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__runtime__view.html#af8fef2e30d39eaa7ce736539a55c2a1a">size_type</a> <a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view</a>&lt; Entity &gt;::size </td>
<td class="memname"><a class="el" href="classentt_1_1basic__runtime__view.html#aabb4450ce3d686fe05bd92e5975d11fb">size_type</a> <a class="el" href="classentt_1_1basic__runtime__view.html">entt::basic_runtime_view</a>&lt; Entity &gt;::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -85,7 +85,7 @@ $(function() {
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ae1a16cb354a9ed5ded92b6edcddce15e">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__storage.html#a43640288a074495b549779ad271d7010">end</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__storage.html">entt::basic_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__storage.html#a9922f88c0ed8f587ff4ae09745f67ae9">end</a>() ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__storage.html">entt::basic_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__storage.html#ab2520abd2591d114866414f275cbdaa7">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__storage.html">entt::basic_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__storage.html#ab49ab5a065759dcd17f6c0b6a0b8fcba">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__storage.html">entt::basic_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af79345df59154e5ea9e58b7efa7ff8f0">extent</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a0ed57521bb3279b5ed3cd397b65abf01">find</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__storage.html#ab9f40b67e8a21a0aa2071ea127a1e4b9">get</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__storage.html">entt::basic_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -103,7 +103,7 @@ $(function() {
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ab0481dde89f07e9ca50d79777de898b6">respect</a>(const sparse_set &amp;other) ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__storage.html#a208fc8c4400c12e41229345badd0bc99">shrink_to_fit</a>()</td><td class="entry"><a class="el" href="classentt_1_1basic__storage.html">entt::basic_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a340dff7484f1e58feff58a5f0627e190">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__storage.html#ab820e508dfbc4442bc9a114cf49efde7">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__storage.html">entt::basic_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__storage.html#afffeca2fda54eebf889c2e4f447ab37b">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__storage.html">entt::basic_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__storage.html#ac9b5e700778b280a69bb13faff484756">sort</a>(iterator_type first, iterator_type last, Compare compare, Sort algo=Sort{}, Args &amp;&amp;... args)</td><td class="entry"><a class="el" href="classentt_1_1basic__storage.html">entt::basic_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a8ef544aaed30126797f6f0b9a9f8b9e8">sparse_set</a>()=default</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af684a44e129f3aafd311814b5972378f">sparse_set</a>(const sparse_set &amp;other)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -101,14 +101,14 @@ Public Types</h2></td></tr>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage.html#aa4e4358d25212b71d9629e470b845c53">object_type</a> = Type</td></tr>
<tr class="memdesc:aa4e4358d25212b71d9629e470b845c53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of the objects associated with the entities. <br /></td></tr>
<tr class="separator:aa4e4358d25212b71d9629e470b845c53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2520abd2591d114866414f275cbdaa7"><td class="memItemLeft" align="right" valign="top"><a id="ab2520abd2591d114866414f275cbdaa7"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage.html#ab2520abd2591d114866414f275cbdaa7">entity_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html#a9a1dbe5ab2dbb098beae0bff56bbf780">underlying_type::entity_type</a></td></tr>
<tr class="memdesc:ab2520abd2591d114866414f275cbdaa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:ab2520abd2591d114866414f275cbdaa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab820e508dfbc4442bc9a114cf49efde7"><td class="memItemLeft" align="right" valign="top"><a id="ab820e508dfbc4442bc9a114cf49efde7"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage.html#ab820e508dfbc4442bc9a114cf49efde7">size_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">underlying_type::size_type</a></td></tr>
<tr class="memdesc:ab820e508dfbc4442bc9a114cf49efde7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:ab820e508dfbc4442bc9a114cf49efde7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab49ab5a065759dcd17f6c0b6a0b8fcba"><td class="memItemLeft" align="right" valign="top"><a id="ab49ab5a065759dcd17f6c0b6a0b8fcba"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage.html#ab49ab5a065759dcd17f6c0b6a0b8fcba">entity_type</a> = Entity</td></tr>
<tr class="memdesc:ab49ab5a065759dcd17f6c0b6a0b8fcba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:ab49ab5a065759dcd17f6c0b6a0b8fcba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afffeca2fda54eebf889c2e4f447ab37b"><td class="memItemLeft" align="right" valign="top"><a id="afffeca2fda54eebf889c2e4f447ab37b"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage.html#afffeca2fda54eebf889c2e4f447ab37b">size_type</a> = std::size_t</td></tr>
<tr class="memdesc:afffeca2fda54eebf889c2e4f447ab37b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:afffeca2fda54eebf889c2e4f447ab37b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a1c32a0adebc8c3dc279064742c858f"><td class="memItemLeft" align="right" valign="top"><a id="a9a1c32a0adebc8c3dc279064742c858f"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage.html#a9a1c32a0adebc8c3dc279064742c858f">iterator_type</a> = iterator&lt; false &gt;</td></tr>
<tr class="memdesc:a9a1c32a0adebc8c3dc279064742c858f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Random access iterator type. <br /></td></tr>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -81,7 +81,7 @@ $(function() {
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ab69719626bee1add76096046db86a170">destroy</a>(const entity_type entt)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ae1a16cb354a9ed5ded92b6edcddce15e">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#aa56ba13f8c81dd153417fd0054e23a0b">end</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::basic_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#adcf45b53722e877c6c8b92e87ecc7824">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::basic_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a3f21a71d6e4a2aea789f668d6739e450">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::basic_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af79345df59154e5ea9e58b7efa7ff8f0">extent</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a0ed57521bb3279b5ed3cd397b65abf01">find</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#acd4baaae6a45b994ff2890034e423954">get</a>([[maybe_unused]] const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::basic_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -96,7 +96,7 @@ $(function() {
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ab0481dde89f07e9ca50d79777de898b6">respect</a>(const sparse_set &amp;other) ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a75f5d70148a149e4cbc485c7a7b00dda">shrink_to_fit</a>()</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a340dff7484f1e58feff58a5f0627e190">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a9c0a52b283bc9b0ac2b7bf72cc76f996">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::basic_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#ace05b6c2a6490285dc232b17edea2899">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::basic_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#afae939a408911c573256cf0299d76828">sort</a>(iterator_type first, iterator_type last, Compare compare, Sort algo=Sort{}, Args &amp;&amp;... args)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a8ef544aaed30126797f6f0b9a9f8b9e8">sparse_set</a>()=default</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af684a44e129f3aafd311814b5972378f">sparse_set</a>(const sparse_set &amp;other)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -100,14 +100,14 @@ Public Types</h2></td></tr>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#af67063212a566afa51deede112b70d2a">object_type</a> = Type</td></tr>
<tr class="memdesc:af67063212a566afa51deede112b70d2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of the objects associated with the entities. <br /></td></tr>
<tr class="separator:af67063212a566afa51deede112b70d2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcf45b53722e877c6c8b92e87ecc7824"><td class="memItemLeft" align="right" valign="top"><a id="adcf45b53722e877c6c8b92e87ecc7824"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#adcf45b53722e877c6c8b92e87ecc7824">entity_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html#a9a1dbe5ab2dbb098beae0bff56bbf780">underlying_type::entity_type</a></td></tr>
<tr class="memdesc:adcf45b53722e877c6c8b92e87ecc7824"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:adcf45b53722e877c6c8b92e87ecc7824"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c0a52b283bc9b0ac2b7bf72cc76f996"><td class="memItemLeft" align="right" valign="top"><a id="a9c0a52b283bc9b0ac2b7bf72cc76f996"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a9c0a52b283bc9b0ac2b7bf72cc76f996">size_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">underlying_type::size_type</a></td></tr>
<tr class="memdesc:a9c0a52b283bc9b0ac2b7bf72cc76f996"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:a9c0a52b283bc9b0ac2b7bf72cc76f996"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f21a71d6e4a2aea789f668d6739e450"><td class="memItemLeft" align="right" valign="top"><a id="a3f21a71d6e4a2aea789f668d6739e450"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a3f21a71d6e4a2aea789f668d6739e450">entity_type</a> = Entity</td></tr>
<tr class="memdesc:a3f21a71d6e4a2aea789f668d6739e450"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:a3f21a71d6e4a2aea789f668d6739e450"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace05b6c2a6490285dc232b17edea2899"><td class="memItemLeft" align="right" valign="top"><a id="ace05b6c2a6490285dc232b17edea2899"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#ace05b6c2a6490285dc232b17edea2899">size_type</a> = std::size_t</td></tr>
<tr class="memdesc:ace05b6c2a6490285dc232b17edea2899"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:ace05b6c2a6490285dc232b17edea2899"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2136db82a122b336298bd909c07c629b"><td class="memItemLeft" align="right" valign="top"><a id="a2136db82a122b336298bd909c07c629b"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a2136db82a122b336298bd909c07c629b">iterator_type</a> = iterator</td></tr>
<tr class="memdesc:a2136db82a122b336298bd909c07c629b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Random access iterator type. <br /></td></tr>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -79,7 +79,7 @@ $(function() {
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view.html#a9d19f70eda47e20c8c6d97b7f2c05f11">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view.html#af7916ac310c1ec40c3cb5426d74d641d">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view.html#a1c17f8511d0e12087fbdd3b9b5cc9e4a">end</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view.html#aa8098ec2a26d9386d68c0b664d21d93e">find</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view.html#aaa4f1d01440c37739502d3d73a28c4ca">get</a>([[maybe_unused]] const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view.html#adad369b0a841ef254549668348fed0c5">iterator_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
@@ -88,7 +88,7 @@ $(function() {
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view.html#acb3b8c843b1ded37a8bac4e9d434d048">raw</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view.html#a05e540230bfb537a7574da0f8d4eaaa5">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view.html#acb9ee6ba89ed94297808c4ee04d21f1e">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view.html#a8f3ec253d7fc6da42e9eb0e5c8f6a655">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -81,14 +81,14 @@ $(function() {
<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:a4d733f92580b2623300174292e47c7cf"><td class="memItemLeft" align="right" valign="top"><a id="a4d733f92580b2623300174292e47c7cf"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a></td></tr>
<tr class="memdesc:a4d733f92580b2623300174292e47c7cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:a4d733f92580b2623300174292e47c7cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f3ec253d7fc6da42e9eb0e5c8f6a655"><td class="memItemLeft" align="right" valign="top"><a id="a8f3ec253d7fc6da42e9eb0e5c8f6a655"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#a8f3ec253d7fc6da42e9eb0e5c8f6a655">size_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__view.html#a8f3ec253d7fc6da42e9eb0e5c8f6a655">size_type</a></td></tr>
<tr class="memdesc:a8f3ec253d7fc6da42e9eb0e5c8f6a655"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:a8f3ec253d7fc6da42e9eb0e5c8f6a655"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a233ceb14c3a9988b57a024b97751ba36"><td class="memItemLeft" align="right" valign="top"><a id="a233ceb14c3a9988b57a024b97751ba36"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> = Entity</td></tr>
<tr class="memdesc:a233ceb14c3a9988b57a024b97751ba36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:a233ceb14c3a9988b57a024b97751ba36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2e0680b9ee027ee17b4585b19339f39"><td class="memItemLeft" align="right" valign="top"><a id="aa2e0680b9ee027ee17b4585b19339f39"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a> = std::size_t</td></tr>
<tr class="memdesc:aa2e0680b9ee027ee17b4585b19339f39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:aa2e0680b9ee027ee17b4585b19339f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adad369b0a841ef254549668348fed0c5"><td class="memItemLeft" align="right" valign="top"><a id="adad369b0a841ef254549668348fed0c5"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#adad369b0a841ef254549668348fed0c5">iterator_type</a> = iterator</td></tr>
<tr class="memdesc:adad369b0a841ef254549668348fed0c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input iterator type. <br /></td></tr>
@@ -97,10 +97,10 @@ using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a05e540230bfb537a7574da0f8d4eaaa5"><td class="memTemplParams" colspan="2">template&lt;typename Comp &gt; </td></tr>
<tr class="memitem:a05e540230bfb537a7574da0f8d4eaaa5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view.html#a8f3ec253d7fc6da42e9eb0e5c8f6a655">size_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#a05e540230bfb537a7574da0f8d4eaaa5">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:a05e540230bfb537a7574da0f8d4eaaa5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#a05e540230bfb537a7574da0f8d4eaaa5">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a05e540230bfb537a7574da0f8d4eaaa5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of existing components of the given type. <a href="#a05e540230bfb537a7574da0f8d4eaaa5">More...</a><br /></td></tr>
<tr class="separator:a05e540230bfb537a7574da0f8d4eaaa5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb9ee6ba89ed94297808c4ee04d21f1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view.html#a8f3ec253d7fc6da42e9eb0e5c8f6a655">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#acb9ee6ba89ed94297808c4ee04d21f1e">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:acb9ee6ba89ed94297808c4ee04d21f1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#acb9ee6ba89ed94297808c4ee04d21f1e">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:acb9ee6ba89ed94297808c4ee04d21f1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimates the number of entities that have the given components. <a href="#acb9ee6ba89ed94297808c4ee04d21f1e">More...</a><br /></td></tr>
<tr class="separator:acb9ee6ba89ed94297808c4ee04d21f1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d19f70eda47e20c8c6d97b7f2c05f11"><td class="memTemplParams" colspan="2">template&lt;typename Comp &gt; </td></tr>
@@ -115,7 +115,7 @@ Public Member Functions</h2></td></tr>
<tr class="memdesc:acb3b8c843b1ded37a8bac4e9d434d048"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of components of a given pool. <a href="#acb3b8c843b1ded37a8bac4e9d434d048">More...</a><br /></td></tr>
<tr class="separator:acb3b8c843b1ded37a8bac4e9d434d048"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2122c6c128744f4617fab34dca651c3"><td class="memTemplParams" colspan="2">template&lt;typename Comp &gt; </td></tr>
<tr class="memitem:ac2122c6c128744f4617fab34dca651c3"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#ac2122c6c128744f4617fab34dca651c3">data</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:ac2122c6c128744f4617fab34dca651c3"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#ac2122c6c128744f4617fab34dca651c3">data</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ac2122c6c128744f4617fab34dca651c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of entities of a given pool. <a href="#ac2122c6c128744f4617fab34dca651c3">More...</a><br /></td></tr>
<tr class="separator:ac2122c6c128744f4617fab34dca651c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00d2bb01727273bf40acdf1a57588fc7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view.html#adad369b0a841ef254549668348fed0c5">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#a00d2bb01727273bf40acdf1a57588fc7">begin</a> () const ENTT_NOEXCEPT</td></tr>
@@ -124,14 +124,14 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a1c17f8511d0e12087fbdd3b9b5cc9e4a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view.html#adad369b0a841ef254549668348fed0c5">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#a1c17f8511d0e12087fbdd3b9b5cc9e4a">end</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a1c17f8511d0e12087fbdd3b9b5cc9e4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator that is past the last entity that has the given components. <a href="#a1c17f8511d0e12087fbdd3b9b5cc9e4a">More...</a><br /></td></tr>
<tr class="separator:a1c17f8511d0e12087fbdd3b9b5cc9e4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8098ec2a26d9386d68c0b664d21d93e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view.html#adad369b0a841ef254549668348fed0c5">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#aa8098ec2a26d9386d68c0b664d21d93e">find</a> (const <a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:aa8098ec2a26d9386d68c0b664d21d93e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view.html#adad369b0a841ef254549668348fed0c5">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#aa8098ec2a26d9386d68c0b664d21d93e">find</a> (const <a class="el" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:aa8098ec2a26d9386d68c0b664d21d93e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds an entity. <a href="#aa8098ec2a26d9386d68c0b664d21d93e">More...</a><br /></td></tr>
<tr class="separator:aa8098ec2a26d9386d68c0b664d21d93e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8dc82a3867a4ae26e8e80b5abc2e2118"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#a8dc82a3867a4ae26e8e80b5abc2e2118">contains</a> (const <a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:a8dc82a3867a4ae26e8e80b5abc2e2118"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#a8dc82a3867a4ae26e8e80b5abc2e2118">contains</a> (const <a class="el" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a8dc82a3867a4ae26e8e80b5abc2e2118"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a view contains an entity. <a href="#a8dc82a3867a4ae26e8e80b5abc2e2118">More...</a><br /></td></tr>
<tr class="separator:a8dc82a3867a4ae26e8e80b5abc2e2118"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa4f1d01440c37739502d3d73a28c4ca"><td class="memTemplParams" colspan="2">template&lt;typename... Comp&gt; </td></tr>
<tr class="memitem:aaa4f1d01440c37739502d3d73a28c4ca"><td class="memTemplItemLeft" align="right" valign="top">decltype(auto)&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#aaa4f1d01440c37739502d3d73a28c4ca">get</a> ([[maybe_unused]] const <a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:aaa4f1d01440c37739502d3d73a28c4ca"><td class="memTemplItemLeft" align="right" valign="top">decltype(auto)&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view.html#aaa4f1d01440c37739502d3d73a28c4ca">get</a> ([[maybe_unused]] const <a class="el" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:aaa4f1d01440c37739502d3d73a28c4ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the components assigned to the given entity. <a href="#aaa4f1d01440c37739502d3d73a28c4ca">More...</a><br /></td></tr>
<tr class="separator:aaa4f1d01440c37739502d3d73a28c4ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1019208022f9a4a35ade26f3f35c097f"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
@@ -233,7 +233,7 @@ template&lt;typename Entity, typename... Component&gt; </div>
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::contains </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a>&#160;</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</em></td><td>)</td>
<td> const</td>
</tr>
@@ -272,7 +272,7 @@ template&lt;typename Comp &gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a>* <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::data </td>
<td class="memname">const <a class="el" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>* <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::data </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
@@ -331,7 +331,7 @@ template&lt;typename Func &gt; </div>
<p>Iterates entities and components and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided with the entity itself and a set of references to all its components. The <em>constness</em> of the components is as requested.<br />
The signature of the function must be equivalent to one of the following forms:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a>, Component &amp;...);</div><div class="line">void(Component &amp;...);</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Empty types aren't explicitly instantiated. Therefore, temporary objects are returned during iterations. They can be caught only by copy or with const references.</dd></dl>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>, Component &amp;...);</div><div class="line">void(Component &amp;...);</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Empty types aren't explicitly instantiated. Therefore, temporary objects are returned during iterations. They can be caught only by copy or with const references.</dd></dl>
<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>
@@ -380,7 +380,7 @@ template&lt;typename Comp , typename Func &gt; </div>
<p>Iterates entities and components and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided with the entity itself and a set of references to all its components. The <em>constness</em> of the components is as requested.<br />
The signature of the function must be equivalent to one of the following forms:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a>, Component &amp;...);</div><div class="line">void(Component &amp;...);</div></div><!-- fragment --><p>The pool of the suggested component is used to lead the iterations. The returned entities will therefore respect the order of the pool associated with that type.<br />
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>, Component &amp;...);</div><div class="line">void(Component &amp;...);</div></div><!-- fragment --><p>The pool of the suggested component is used to lead the iterations. The returned entities will therefore respect the order of the pool associated with that type.<br />
It is no longer guaranteed that the performance is the best possible, but there will be greater control over the order of iteration.</p>
<dl class="section note"><dt>Note</dt><dd>Empty types aren't explicitly instantiated. Therefore, temporary objects are returned during iterations. They can be caught only by copy or with const references.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
@@ -521,7 +521,7 @@ template&lt;typename Entity, typename... Component&gt; </div>
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__view.html#adad369b0a841ef254549668348fed0c5">iterator_type</a> <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::find </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a>&#160;</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</em></td><td>)</td>
<td> const</td>
</tr>
@@ -562,7 +562,7 @@ template&lt;typename... Comp&gt; </div>
<tr>
<td class="memname">decltype(auto) <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::get </td>
<td>(</td>
<td class="paramtype">[[maybe_unused] ] const <a class="el" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a>&#160;</td>
<td class="paramtype">[[maybe_unused] ] const <a class="el" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</em></td><td>)</td>
<td> const</td>
</tr>
@@ -627,7 +627,7 @@ template&lt;typename Func &gt; </div>
<p>Iterates entities and components and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided with the entity itself and a set of references to non-empty components. The <em>constness</em> of the components is as requested.<br />
The signature of the function must be equivalent to one of the following forms:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a>, Type &amp;...);</div><div class="line">void(Type &amp;...);</div></div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1basic__view.html#a1019208022f9a4a35ade26f3f35c097f" title="Iterates entities and components and applies the given function object to them. ">each</a></dd></dl>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>, Type &amp;...);</div><div class="line">void(Type &amp;...);</div></div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1basic__view.html#a1019208022f9a4a35ade26f3f35c097f" title="Iterates entities and components and applies the given function object to them. ">each</a></dd></dl>
<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>
@@ -676,7 +676,7 @@ template&lt;typename Comp , typename Func &gt; </div>
<p>Iterates entities and components and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided with the entity itself and a set of references to non-empty components. The <em>constness</em> of the components is as requested.<br />
The signature of the function must be equivalent to one of the following forms:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view.html#a4d733f92580b2623300174292e47c7cf">entity_type</a>, Type &amp;...);</div><div class="line">void(Type &amp;...);</div></div><!-- fragment --><p>The pool of the suggested component is used to lead the iterations. The returned entities will therefore respect the order of the pool associated with that type.<br />
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>, Type &amp;...);</div><div class="line">void(Type &amp;...);</div></div><!-- fragment --><p>The pool of the suggested component is used to lead the iterations. The returned entities will therefore respect the order of the pool associated with that type.<br />
It is no longer guaranteed that the performance is the best possible, but there will be greater control over the order of iteration.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1basic__view.html#a1019208022f9a4a35ade26f3f35c097f" title="Iterates entities and components and applies the given function object to them. ">each</a></dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
@@ -753,7 +753,7 @@ template&lt;typename Comp &gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__view.html#a8f3ec253d7fc6da42e9eb0e5c8f6a655">size_type</a> <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::size </td>
<td class="memname"><a class="el" href="classentt_1_1basic__view.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a> <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
@@ -791,7 +791,7 @@ template&lt;typename Entity, typename... Component&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__view.html#a8f3ec253d7fc6da42e9eb0e5c8f6a655">size_type</a> <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::size </td>
<td class="memname"><a class="el" href="classentt_1_1basic__view.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a> <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -77,7 +77,7 @@ $(function() {
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a1019208022f9a4a35ade26f3f35c097f">each</a>(Func func) const</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#af7916ac310c1ec40c3cb5426d74d641d">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a1c17f8511d0e12087fbdd3b9b5cc9e4a">end</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aa8098ec2a26d9386d68c0b664d21d93e">find</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a55c708083311799867acab1954e530a9">get</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a11420baf6cdbf1a97f3861784bd5fac2">iterator_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
@@ -86,7 +86,7 @@ $(function() {
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a28da2cdc89a3600cd01ca820e13352f6">raw</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a07488b51f1575b2e5740f3d5f21e0524">raw_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#acb9ee6ba89ed94297808c4ee04d21f1e">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecab46810f8e3a65a3aa46e14028b40a">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html">entt::basic_view&lt; Entity, Component &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -84,14 +84,14 @@ Public Types</h2></td></tr>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a07488b51f1575b2e5740f3d5f21e0524">raw_type</a> = Component</td></tr>
<tr class="memdesc:a07488b51f1575b2e5740f3d5f21e0524"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of component iterated by the view. <br /></td></tr>
<tr class="separator:a07488b51f1575b2e5740f3d5f21e0524"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecda0b0101603b9342248086dcb71ec5"><td class="memItemLeft" align="right" valign="top"><a id="aecda0b0101603b9342248086dcb71ec5"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a> = typename pool_type::entity_type</td></tr>
<tr class="memdesc:aecda0b0101603b9342248086dcb71ec5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:aecda0b0101603b9342248086dcb71ec5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecab46810f8e3a65a3aa46e14028b40a"><td class="memItemLeft" align="right" valign="top"><a id="aecab46810f8e3a65a3aa46e14028b40a"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecab46810f8e3a65a3aa46e14028b40a">size_type</a> = typename pool_type::size_type</td></tr>
<tr class="memdesc:aecab46810f8e3a65a3aa46e14028b40a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:aecab46810f8e3a65a3aa46e14028b40a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a233ceb14c3a9988b57a024b97751ba36"><td class="memItemLeft" align="right" valign="top"><a id="a233ceb14c3a9988b57a024b97751ba36"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> = Entity</td></tr>
<tr class="memdesc:a233ceb14c3a9988b57a024b97751ba36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:a233ceb14c3a9988b57a024b97751ba36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2e0680b9ee027ee17b4585b19339f39"><td class="memItemLeft" align="right" valign="top"><a id="aa2e0680b9ee027ee17b4585b19339f39"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a> = std::size_t</td></tr>
<tr class="memdesc:aa2e0680b9ee027ee17b4585b19339f39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:aa2e0680b9ee027ee17b4585b19339f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11420baf6cdbf1a97f3861784bd5fac2"><td class="memItemLeft" align="right" valign="top"><a id="a11420baf6cdbf1a97f3861784bd5fac2"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a11420baf6cdbf1a97f3861784bd5fac2">iterator_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a11420baf6cdbf1a97f3861784bd5fac2">iterator_type</a></td></tr>
<tr class="memdesc:a11420baf6cdbf1a97f3861784bd5fac2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input iterator type. <br /></td></tr>
@@ -99,7 +99,7 @@ using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cla
</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:acb9ee6ba89ed94297808c4ee04d21f1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecab46810f8e3a65a3aa46e14028b40a">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#acb9ee6ba89ed94297808c4ee04d21f1e">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:acb9ee6ba89ed94297808c4ee04d21f1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#acb9ee6ba89ed94297808c4ee04d21f1e">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:acb9ee6ba89ed94297808c4ee04d21f1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of entities that have the given component. <a href="#acb9ee6ba89ed94297808c4ee04d21f1e">More...</a><br /></td></tr>
<tr class="separator:acb9ee6ba89ed94297808c4ee04d21f1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7916ac310c1ec40c3cb5426d74d641d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#af7916ac310c1ec40c3cb5426d74d641d">empty</a> () const ENTT_NOEXCEPT</td></tr>
@@ -108,7 +108,7 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a28da2cdc89a3600cd01ca820e13352f6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a07488b51f1575b2e5740f3d5f21e0524">raw_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a28da2cdc89a3600cd01ca820e13352f6">raw</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a28da2cdc89a3600cd01ca820e13352f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of components. <a href="#a28da2cdc89a3600cd01ca820e13352f6">More...</a><br /></td></tr>
<tr class="separator:a28da2cdc89a3600cd01ca820e13352f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a612381efadb0c6d68b43965e6d1149"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a3a612381efadb0c6d68b43965e6d1149">data</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:a3a612381efadb0c6d68b43965e6d1149"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a3a612381efadb0c6d68b43965e6d1149">data</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a3a612381efadb0c6d68b43965e6d1149"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of entities. <a href="#a3a612381efadb0c6d68b43965e6d1149">More...</a><br /></td></tr>
<tr class="separator:a3a612381efadb0c6d68b43965e6d1149"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00d2bb01727273bf40acdf1a57588fc7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a11420baf6cdbf1a97f3861784bd5fac2">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a00d2bb01727273bf40acdf1a57588fc7">begin</a> () const ENTT_NOEXCEPT</td></tr>
@@ -117,16 +117,16 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a1c17f8511d0e12087fbdd3b9b5cc9e4a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a11420baf6cdbf1a97f3861784bd5fac2">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a1c17f8511d0e12087fbdd3b9b5cc9e4a">end</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a1c17f8511d0e12087fbdd3b9b5cc9e4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator that is past the last entity that has the given component. <a href="#a1c17f8511d0e12087fbdd3b9b5cc9e4a">More...</a><br /></td></tr>
<tr class="separator:a1c17f8511d0e12087fbdd3b9b5cc9e4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8098ec2a26d9386d68c0b664d21d93e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a11420baf6cdbf1a97f3861784bd5fac2">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aa8098ec2a26d9386d68c0b664d21d93e">find</a> (const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:aa8098ec2a26d9386d68c0b664d21d93e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a11420baf6cdbf1a97f3861784bd5fac2">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aa8098ec2a26d9386d68c0b664d21d93e">find</a> (const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:aa8098ec2a26d9386d68c0b664d21d93e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds an entity. <a href="#aa8098ec2a26d9386d68c0b664d21d93e">More...</a><br /></td></tr>
<tr class="separator:aa8098ec2a26d9386d68c0b664d21d93e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08e5f6d88283b8e90ce252fcae447932"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a08e5f6d88283b8e90ce252fcae447932">operator[]</a> (const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecab46810f8e3a65a3aa46e14028b40a">size_type</a> pos) const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:a08e5f6d88283b8e90ce252fcae447932"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a08e5f6d88283b8e90ce252fcae447932">operator[]</a> (const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a> pos) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a08e5f6d88283b8e90ce252fcae447932"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the identifier that occupies the given position. <a href="#a08e5f6d88283b8e90ce252fcae447932">More...</a><br /></td></tr>
<tr class="separator:a08e5f6d88283b8e90ce252fcae447932"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8dc82a3867a4ae26e8e80b5abc2e2118"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a8dc82a3867a4ae26e8e80b5abc2e2118">contains</a> (const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:a8dc82a3867a4ae26e8e80b5abc2e2118"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a8dc82a3867a4ae26e8e80b5abc2e2118">contains</a> (const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a8dc82a3867a4ae26e8e80b5abc2e2118"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a view contains an entity. <a href="#a8dc82a3867a4ae26e8e80b5abc2e2118">More...</a><br /></td></tr>
<tr class="separator:a8dc82a3867a4ae26e8e80b5abc2e2118"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55c708083311799867acab1954e530a9"><td class="memItemLeft" align="right" valign="top">decltype(auto)&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a55c708083311799867acab1954e530a9">get</a> (const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memitem:a55c708083311799867acab1954e530a9"><td class="memItemLeft" align="right" valign="top">decltype(auto)&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a55c708083311799867acab1954e530a9">get</a> (const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a55c708083311799867acab1954e530a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the component assigned to the given entity. <a href="#a55c708083311799867acab1954e530a9">More...</a><br /></td></tr>
<tr class="separator:a55c708083311799867acab1954e530a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1019208022f9a4a35ade26f3f35c097f"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
@@ -220,7 +220,7 @@ template&lt;typename Entity , typename Component &gt; </div>
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::contains </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a>&#160;</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</em></td><td>)</td>
<td> const</td>
</tr>
@@ -257,7 +257,7 @@ template&lt;typename Entity , typename Component &gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a>* <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::data </td>
<td class="memname">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>* <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::data </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
@@ -310,7 +310,7 @@ template&lt;typename Func &gt; </div>
<p>Iterates entities and components and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided with the entity itself and a reference to its component. The <em>constness</em> of the component is as requested.<br />
The signature of the function must be equivalent to one of the following forms:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a>, Component &amp;);</div><div class="line">void(Component &amp;);</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Empty types aren't explicitly instantiated. Therefore, temporary objects are returned during iterations. They can be caught only by copy or with const references.</dd></dl>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>, Component &amp;);</div><div class="line">void(Component &amp;);</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Empty types aren't explicitly instantiated. Therefore, temporary objects are returned during iterations. They can be caught only by copy or with const references.</dd></dl>
<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>
@@ -408,7 +408,7 @@ template&lt;typename Entity , typename Component &gt; </div>
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a11420baf6cdbf1a97f3861784bd5fac2">iterator_type</a> <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::find </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a>&#160;</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</em></td><td>)</td>
<td> const</td>
</tr>
@@ -447,7 +447,7 @@ template&lt;typename Entity , typename Component &gt; </div>
<tr>
<td class="memname">decltype(auto) <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::get </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a>&#160;</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</em></td><td>)</td>
<td> const</td>
</tr>
@@ -506,8 +506,8 @@ template&lt;typename Func &gt; </div>
<p>Iterates entities and components and applies the given function object to them. </p>
<p>The function object is invoked for each entity. It is provided with the entity itself and a reference to its component if it's a non-empty one. The <em>constness</em> of the component is as requested.<br />
The signature of the function must be equivalent to one of the following forms in case the component isn't an empty one:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a>, Component &amp;);</div><div class="line">void(Component &amp;);</div></div><!-- fragment --><p>In case the component is an empty one instead, the following forms are accepted:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a>);</div><div class="line">void();</div></div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a1019208022f9a4a35ade26f3f35c097f" title="Iterates entities and components and applies the given function object to them. ">each</a></dd></dl>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>, Component &amp;);</div><div class="line">void(Component &amp;);</div></div><!-- fragment --><p>In case the component is an empty one instead, the following forms are accepted:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a>);</div><div class="line">void();</div></div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a1019208022f9a4a35ade26f3f35c097f" title="Iterates entities and components and applies the given function object to them. ">each</a></dd></dl>
<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>
@@ -537,9 +537,9 @@ template&lt;typename Entity , typename Component &gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecda0b0101603b9342248086dcb71ec5">entity_type</a> <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::operator[] </td>
<td class="memname"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#a233ceb14c3a9988b57a024b97751ba36">entity_type</a> <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::operator[] </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecab46810f8e3a65a3aa46e14028b40a">size_type</a>&#160;</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a>&#160;</td>
<td class="paramname"><em>pos</em></td><td>)</td>
<td> const</td>
</tr>
@@ -610,7 +610,7 @@ template&lt;typename Entity , typename Component &gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aecab46810f8e3a65a3aa46e14028b40a">size_type</a> <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::size </td>
<td class="memname"><a class="el" href="classentt_1_1basic__view_3_01Entity_00_01Component_01_4.html#aa2e0680b9ee027ee17b4585b19339f39">size_type</a> <a class="el" href="classentt_1_1basic__view.html">entt::basic_view</a>&lt; Entity, Component &gt;::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>
@@ -87,7 +87,9 @@ Inheritance diagram for entt::connection:</div>
<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:a1d11f6b9d00a3f0e5364111438a1cee5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1connection.html#a1d11f6b9d00a3f0e5364111438a1cee5">connection</a> ()=default</td></tr>
<tr class="memitem:a1d11f6b9d00a3f0e5364111438a1cee5"><td class="memItemLeft" align="right" valign="top"><a id="a1d11f6b9d00a3f0e5364111438a1cee5"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1connection.html#a1d11f6b9d00a3f0e5364111438a1cee5">connection</a> ()=default</td></tr>
<tr class="memdesc:a1d11f6b9d00a3f0e5364111438a1cee5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:a1d11f6b9d00a3f0e5364111438a1cee5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96098253d2abdc1a6bc3770b2914feb5"><td class="memItemLeft" align="right" valign="top"><a id="a96098253d2abdc1a6bc3770b2914feb5"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1connection.html#a96098253d2abdc1a6bc3770b2914feb5">connection</a> (const <a class="el" href="classentt_1_1connection.html">connection</a> &amp;)=default</td></tr>
@@ -124,34 +126,8 @@ template&lt;typename &gt; </td></tr>
<p class="definition">Definition at line <a class="el" href="sigh_8hpp_source.html#l00153">153</a> of file <a class="el" href="sigh_8hpp_source.html">sigh.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a1d11f6b9d00a3f0e5364111438a1cee5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d11f6b9d00a3f0e5364111438a1cee5">&#9670;&nbsp;</a></span>connection() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">entt::connection::connection </td>
<td>(</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 constructor. </p>
</div>
</div>
<a id="a382faa75cdfc741f36ff433b6c72550d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a382faa75cdfc741f36ff433b6c72550d">&#9670;&nbsp;</a></span>connection() <span class="overload">[2/2]</span></h2>
<h2 class="memtitle"><span class="permalink"><a href="#a382faa75cdfc741f36ff433b6c72550d">&#9670;&nbsp;</a></span>connection()</h2>
<div class="memitem">
<div class="memproto">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,127 @@
<!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: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</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_1default__storage.html">default_storage</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">entt::default_storage&lt; Entity, Type, typename &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a98fafc49edc4fc42c0d1ba961a382b01">batch</a>(It first, It last)</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a8f733430bd73c5c498f1a64fc75be114">batch</a>(It first, It last, const object_type &amp;value)</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a71bb41582069c0d7e3bc65f1cade91f8">begin</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a70e5e8c13abcc93f6bafcfb77477236b">begin</a>() ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a30267005e552fce0d2a9b4e4d70d6656">capacity</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#ada741ea78c35b3d580df57ef8c33a5e2">cbegin</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a4803512a33cbeccd9aaabf9d56ddbb22">cend</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a452694d348f341a019d7121d12907939">const_iterator_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a89e5fbdc2c93467042b6996744892425">construct</a>(const entity_type entt, Args &amp;&amp;... args)</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a4f6d293b9bc7227de22c86722881083f">entt::sparse_set::construct</a>(const entity_type entt)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a2eafe4975271769b08fe7f7d4924992f">data</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a349f0273ab8efc42c059664edf3b47ac">destroy</a>(const entity_type entt) override</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#aedf563d410f1288b175b2d67522b5bb5">entt::sparse_set::destroy</a>(const entity_type entt)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ae1a16cb354a9ed5ded92b6edcddce15e">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a1976a4a5aaf1c0a7b9a56ec06da24fed">end</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a02d6db1a606d4c3f2d0fe8167b8fd2e0">end</a>() ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a83a08d373a2ca9e2cf558de34ee3ae9d">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af79345df59154e5ea9e58b7efa7ff8f0">extent</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a0ed57521bb3279b5ed3cd397b65abf01">find</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a61656fb5c67cb9d1c8686bda75f1c63a">get</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a1f39875bd9f247b17b6bbe72f4acf85c">get</a>(const entity_type entt) ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ae5fdeb500ab138905118a4ebb018895a">entt::sparse_set::get</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af4eb4faf1aa28d20717716bea7981f5b">has</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a771c558246411b577d420425040c0ed8">iterator_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a057a98613022bfc4a95b93fa49a951b1">object_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a32a00ca96cc7e78089fb7120d144de34">operator=</a>(const sparse_set &amp;other)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a7cb1c0bffe341b847537956075b398fa">operator=</a>(sparse_set &amp;&amp;)=default</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#af486735ea8b6009ebd785497c6705f73">raw</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a7cff2ab3a6eaa29ab59ad868bb6c808b">raw</a>() ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a50ecc470d39c9f40f12f1164eb448f6e">reserve</a>(const size_type cap) override</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#aabfddf33cb086063a471ee06d1778690">entt::sparse_set::reserve</a>(const size_type cap)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a4989da26f220b19e5f380449cc2b5298">reset</a>() override</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ab0481dde89f07e9ca50d79777de898b6">respect</a>(const sparse_set &amp;other) ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a815dc60f963706ec43aeaba1e9108923">shrink_to_fit</a>() override</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a340dff7484f1e58feff58a5f0627e190">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#ac9134701c111fd54faeab56f77113c8e">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#adad11ef61ee1953d963c5036c6972613">sort</a>(iterator_type first, iterator_type last, Compare compare, Sort algo=Sort{}, Args &amp;&amp;... args)</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#afae939a408911c573256cf0299d76828">entt::sparse_set::sort</a>(iterator_type first, iterator_type last, Compare compare, Sort algo=Sort{}, Args &amp;&amp;... args)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a8ef544aaed30126797f6f0b9a9f8b9e8">sparse_set</a>()=default</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af684a44e129f3aafd311814b5972378f">sparse_set</a>(const sparse_set &amp;other)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af8f4f137b5ac0984599067d5408db5bf">sparse_set</a>(sparse_set &amp;&amp;)=default</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a58a3f827c19c4e63550e601a2b3dcd65">swap</a>(const size_type lhs, const size_type rhs) ENTT_NOEXCEPT override</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#afb754f7b178b591042cae2389365a37e">entt::sparse_set::swap</a>(const size_type lhs, const size_type rhs) ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage.html#ae22b0e9504cea4081a24168dd41bb958">try_get</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage.html#a38c22c59b8df432be8ac8edee9fc6d8f">try_get</a>(const entity_type entt) ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage.html">entt::default_storage&lt; Entity, Type, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a74c49e0d205b6240bf14ac3003cfcbd1">~sparse_set</a>() ENTT_NOEXCEPT=default</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></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>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
<map id="entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;" name="entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;">
<area shape="rect" id="node2" href="$classentt_1_1sparse__set.html" title="Basic sparse set implementation. " alt="" coords="6,5,181,32"/>
</map>

View File

@@ -0,0 +1,114 @@
<!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: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</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_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a15651e5a1fd629714b279b90c680b7e9">batch</a>(It first, It last, const object_type &amp;={})</td><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a642460f7f0ca8e42220c43c785467063">entt::sparse_set::batch</a>(It first, It last)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a1e2ea918b12f8be96b09c9bc11e31098">begin</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a30267005e552fce0d2a9b4e4d70d6656">capacity</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a407834674d9010a910b84a5a7bce53d1">cbegin</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a9c4a7c733317610193d537ace20de9ae">cend</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a4f6d293b9bc7227de22c86722881083f">construct</a>(const entity_type entt)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a2eafe4975271769b08fe7f7d4924992f">data</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#aedf563d410f1288b175b2d67522b5bb5">destroy</a>(const entity_type entt)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ae1a16cb354a9ed5ded92b6edcddce15e">empty</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a08220253d8c3058314e875da3718545f">end</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a5900eeb999c9066ea163121e001588a0">entity_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af79345df59154e5ea9e58b7efa7ff8f0">extent</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a0ed57521bb3279b5ed3cd397b65abf01">find</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a9b6c15c42f98bbc411b0f3aa09de7a4a">get</a>([[maybe_unused]] const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ae5fdeb500ab138905118a4ebb018895a">entt::sparse_set::get</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af4eb4faf1aa28d20717716bea7981f5b">has</a>(const entity_type entt) const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a520dce16d31a7bf8aecbc891254458dc">object_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a32a00ca96cc7e78089fb7120d144de34">operator=</a>(const sparse_set &amp;other)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a7cb1c0bffe341b847537956075b398fa">operator=</a>(sparse_set &amp;&amp;)=default</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#aabfddf33cb086063a471ee06d1778690">reserve</a>(const size_type cap)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a46d1553f6837b467f1ddf8ae3dece3d2">reset</a>()</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ab0481dde89f07e9ca50d79777de898b6">respect</a>(const sparse_set &amp;other) ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#ad410641d1403e3b0c38c119511c6a54c">shrink_to_fit</a>()</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a340dff7484f1e58feff58a5f0627e190">size</a>() const ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a1d6d474e8b1703c42144cda3a865eeb5">size_type</a> typedef</td><td class="entry"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#afae939a408911c573256cf0299d76828">sort</a>(iterator_type first, iterator_type last, Compare compare, Sort algo=Sort{}, Args &amp;&amp;... args)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a8ef544aaed30126797f6f0b9a9f8b9e8">sparse_set</a>()=default</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af684a44e129f3aafd311814b5972378f">sparse_set</a>(const sparse_set &amp;other)</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#af8f4f137b5ac0984599067d5408db5bf">sparse_set</a>(sparse_set &amp;&amp;)=default</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#afb754f7b178b591042cae2389365a37e">swap</a>(const size_type lhs, const size_type rhs) ENTT_NOEXCEPT</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classentt_1_1sparse__set.html#a74c49e0d205b6240bf14ac3003cfcbd1">~sparse_set</a>() ENTT_NOEXCEPT=default</td><td class="entry"><a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></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>

View File

@@ -0,0 +1,3 @@
<map id="entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;" name="entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;">
<area shape="rect" id="node2" href="$classentt_1_1sparse__set.html" title="Basic sparse set implementation. " alt="" coords="6,5,181,32"/>
</map>

View File

@@ -0,0 +1,511 @@
<!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::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &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">3.1.0</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_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html">default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</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="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__emptc8f1012d1b55fc8f6a716a0092de110f.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Default storage implementation.
<a href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="default__storage_8hpp_source.html">default_storage.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empt4dc96ab5410a272f95b104e8656e9c34.png" border="0" usemap="#entt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="entt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4_inherit__map" id="entt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4_inherit__map">
<area shape="rect" id="node2" href="classentt_1_1sparse__set.html" title="Basic sparse set implementation. " alt="" coords="6,5,181,32"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__emptd5cc8eda4b0752e289f5df62c03872a0.png" border="0" usemap="#entt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4_coll__map" alt="Collaboration graph"/></div>
<map name="entt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4_coll__map" id="entt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4_coll__map">
<area shape="rect" id="node2" href="classentt_1_1sparse__set.html" title="Basic sparse set implementation. " alt="" coords="6,5,181,32"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:a520dce16d31a7bf8aecbc891254458dc"><td class="memItemLeft" align="right" valign="top"><a id="a520dce16d31a7bf8aecbc891254458dc"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a520dce16d31a7bf8aecbc891254458dc">object_type</a> = Type</td></tr>
<tr class="memdesc:a520dce16d31a7bf8aecbc891254458dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of the objects associated with the entities. <br /></td></tr>
<tr class="separator:a520dce16d31a7bf8aecbc891254458dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5900eeb999c9066ea163121e001588a0"><td class="memItemLeft" align="right" valign="top"><a id="a5900eeb999c9066ea163121e001588a0"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a5900eeb999c9066ea163121e001588a0">entity_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html#a9a1dbe5ab2dbb098beae0bff56bbf780">underlying_type::entity_type</a></td></tr>
<tr class="memdesc:a5900eeb999c9066ea163121e001588a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:a5900eeb999c9066ea163121e001588a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d6d474e8b1703c42144cda3a865eeb5"><td class="memItemLeft" align="right" valign="top"><a id="a1d6d474e8b1703c42144cda3a865eeb5"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a1d6d474e8b1703c42144cda3a865eeb5">size_type</a> = typename <a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">underlying_type::size_type</a></td></tr>
<tr class="memdesc:a1d6d474e8b1703c42144cda3a865eeb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:a1d6d474e8b1703c42144cda3a865eeb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8866eb6823b8ddf03a49f601b4e04623"><td class="memItemLeft" align="right" valign="top"><a id="a8866eb6823b8ddf03a49f601b4e04623"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a> = iterator</td></tr>
<tr class="memdesc:a8866eb6823b8ddf03a49f601b4e04623"><td class="mdescLeft">&#160;</td><td class="mdescRight">Random access iterator type. <br /></td></tr>
<tr class="separator:a8866eb6823b8ddf03a49f601b4e04623"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classentt_1_1sparse__set"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classentt_1_1sparse__set')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td></tr>
<tr class="memitem:a9a1dbe5ab2dbb098beae0bff56bbf780 inherit pub_types_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a id="a9a1dbe5ab2dbb098beae0bff56bbf780"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a9a1dbe5ab2dbb098beae0bff56bbf780">entity_type</a> = Entity</td></tr>
<tr class="memdesc:a9a1dbe5ab2dbb098beae0bff56bbf780 inherit pub_types_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying entity identifier. <br /></td></tr>
<tr class="separator:a9a1dbe5ab2dbb098beae0bff56bbf780 inherit pub_types_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d2138b0eb8c7ac968e9e38a9e981ec1 inherit pub_types_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a id="a3d2138b0eb8c7ac968e9e38a9e981ec1"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">size_type</a> = std::size_t</td></tr>
<tr class="memdesc:a3d2138b0eb8c7ac968e9e38a9e981ec1 inherit pub_types_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsigned integer type. <br /></td></tr>
<tr class="separator:a3d2138b0eb8c7ac968e9e38a9e981ec1 inherit pub_types_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a580b210d5a24c49ca8c255646f3bb469 inherit pub_types_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a id="a580b210d5a24c49ca8c255646f3bb469"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a580b210d5a24c49ca8c255646f3bb469">iterator_type</a> = iterator</td></tr>
<tr class="memdesc:a580b210d5a24c49ca8c255646f3bb469 inherit pub_types_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Random access iterator type. <br /></td></tr>
<tr class="separator:a580b210d5a24c49ca8c255646f3bb469 inherit pub_types_classentt_1_1sparse__set"><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:a407834674d9010a910b84a5a7bce53d1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a407834674d9010a910b84a5a7bce53d1">cbegin</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a407834674d9010a910b84a5a7bce53d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator to the beginning. <a href="#a407834674d9010a910b84a5a7bce53d1">More...</a><br /></td></tr>
<tr class="separator:a407834674d9010a910b84a5a7bce53d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e2ea918b12f8be96b09c9bc11e31098"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a1e2ea918b12f8be96b09c9bc11e31098">begin</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a1e2ea918b12f8be96b09c9bc11e31098"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator to the beginning. <a href="#a1e2ea918b12f8be96b09c9bc11e31098">More...</a><br /></td></tr>
<tr class="separator:a1e2ea918b12f8be96b09c9bc11e31098"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c4a7c733317610193d537ace20de9ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a9c4a7c733317610193d537ace20de9ae">cend</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a9c4a7c733317610193d537ace20de9ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator to the end. <a href="#a9c4a7c733317610193d537ace20de9ae">More...</a><br /></td></tr>
<tr class="separator:a9c4a7c733317610193d537ace20de9ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08220253d8c3058314e875da3718545f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a08220253d8c3058314e875da3718545f">end</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a08220253d8c3058314e875da3718545f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator to the end. <a href="#a08220253d8c3058314e875da3718545f">More...</a><br /></td></tr>
<tr class="separator:a08220253d8c3058314e875da3718545f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b6c15c42f98bbc411b0f3aa09de7a4a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a520dce16d31a7bf8aecbc891254458dc">object_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a9b6c15c42f98bbc411b0f3aa09de7a4a">get</a> ([[maybe_unused]] const <a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a5900eeb999c9066ea163121e001588a0">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a9b6c15c42f98bbc411b0f3aa09de7a4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the object associated with an entity. <a href="#a9b6c15c42f98bbc411b0f3aa09de7a4a">More...</a><br /></td></tr>
<tr class="separator:a9b6c15c42f98bbc411b0f3aa09de7a4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15651e5a1fd629714b279b90c680b7e9"><td class="memTemplParams" colspan="2">template&lt;typename It &gt; </td></tr>
<tr class="memitem:a15651e5a1fd629714b279b90c680b7e9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a15651e5a1fd629714b279b90c680b7e9">batch</a> (It first, It last, const <a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a520dce16d31a7bf8aecbc891254458dc">object_type</a> &amp;={})</td></tr>
<tr class="memdesc:a15651e5a1fd629714b279b90c680b7e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assigns one or more entities to a storage. <a href="#a15651e5a1fd629714b279b90c680b7e9">More...</a><br /></td></tr>
<tr class="separator:a15651e5a1fd629714b279b90c680b7e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classentt_1_1sparse__set"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classentt_1_1sparse__set')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classentt_1_1sparse__set.html">entt::sparse_set&lt; Entity &gt;</a></td></tr>
<tr class="memitem:a8ef544aaed30126797f6f0b9a9f8b9e8 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a id="a8ef544aaed30126797f6f0b9a9f8b9e8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a8ef544aaed30126797f6f0b9a9f8b9e8">sparse_set</a> ()=default</td></tr>
<tr class="memdesc:a8ef544aaed30126797f6f0b9a9f8b9e8 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:a8ef544aaed30126797f6f0b9a9f8b9e8 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af684a44e129f3aafd311814b5972378f inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#af684a44e129f3aafd311814b5972378f">sparse_set</a> (const <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a> &amp;other)</td></tr>
<tr class="memdesc:af684a44e129f3aafd311814b5972378f inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <a href="classentt_1_1sparse__set.html#af684a44e129f3aafd311814b5972378f">More...</a><br /></td></tr>
<tr class="separator:af684a44e129f3aafd311814b5972378f inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8f4f137b5ac0984599067d5408db5bf inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a id="af8f4f137b5ac0984599067d5408db5bf"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#af8f4f137b5ac0984599067d5408db5bf">sparse_set</a> (<a class="el" href="classentt_1_1sparse__set.html">sparse_set</a> &amp;&amp;)=default</td></tr>
<tr class="memdesc:af8f4f137b5ac0984599067d5408db5bf inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default move constructor. <br /></td></tr>
<tr class="separator:af8f4f137b5ac0984599067d5408db5bf inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74c49e0d205b6240bf14ac3003cfcbd1 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a id="a74c49e0d205b6240bf14ac3003cfcbd1"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a74c49e0d205b6240bf14ac3003cfcbd1">~sparse_set</a> () ENTT_NOEXCEPT=default</td></tr>
<tr class="memdesc:a74c49e0d205b6240bf14ac3003cfcbd1 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default destructor. <br /></td></tr>
<tr class="separator:a74c49e0d205b6240bf14ac3003cfcbd1 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32a00ca96cc7e78089fb7120d144de34 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1sparse__set.html">sparse_set</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a32a00ca96cc7e78089fb7120d144de34">operator=</a> (const <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a> &amp;other)</td></tr>
<tr class="memdesc:a32a00ca96cc7e78089fb7120d144de34 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy assignment operator. <a href="classentt_1_1sparse__set.html#a32a00ca96cc7e78089fb7120d144de34">More...</a><br /></td></tr>
<tr class="separator:a32a00ca96cc7e78089fb7120d144de34 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cb1c0bffe341b847537956075b398fa inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1sparse__set.html">sparse_set</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a7cb1c0bffe341b847537956075b398fa">operator=</a> (<a class="el" href="classentt_1_1sparse__set.html">sparse_set</a> &amp;&amp;)=default</td></tr>
<tr class="memdesc:a7cb1c0bffe341b847537956075b398fa inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default move assignment operator. <a href="classentt_1_1sparse__set.html#a7cb1c0bffe341b847537956075b398fa">More...</a><br /></td></tr>
<tr class="separator:a7cb1c0bffe341b847537956075b398fa inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabfddf33cb086063a471ee06d1778690 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#aabfddf33cb086063a471ee06d1778690">reserve</a> (const <a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">size_type</a> cap)</td></tr>
<tr class="memdesc:aabfddf33cb086063a471ee06d1778690 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increases the capacity of a sparse set. <a href="classentt_1_1sparse__set.html#aabfddf33cb086063a471ee06d1778690">More...</a><br /></td></tr>
<tr class="separator:aabfddf33cb086063a471ee06d1778690 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30267005e552fce0d2a9b4e4d70d6656 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a30267005e552fce0d2a9b4e4d70d6656">capacity</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a30267005e552fce0d2a9b4e4d70d6656 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of elements that a sparse set has currently allocated space for. <a href="classentt_1_1sparse__set.html#a30267005e552fce0d2a9b4e4d70d6656">More...</a><br /></td></tr>
<tr class="separator:a30267005e552fce0d2a9b4e4d70d6656 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad410641d1403e3b0c38c119511c6a54c inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a id="ad410641d1403e3b0c38c119511c6a54c"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#ad410641d1403e3b0c38c119511c6a54c">shrink_to_fit</a> ()</td></tr>
<tr class="memdesc:ad410641d1403e3b0c38c119511c6a54c inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests the removal of unused capacity. <br /></td></tr>
<tr class="separator:ad410641d1403e3b0c38c119511c6a54c inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af79345df59154e5ea9e58b7efa7ff8f0 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#af79345df59154e5ea9e58b7efa7ff8f0">extent</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:af79345df59154e5ea9e58b7efa7ff8f0 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the extent of a sparse set. <a href="classentt_1_1sparse__set.html#af79345df59154e5ea9e58b7efa7ff8f0">More...</a><br /></td></tr>
<tr class="separator:af79345df59154e5ea9e58b7efa7ff8f0 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a340dff7484f1e58feff58a5f0627e190 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a340dff7484f1e58feff58a5f0627e190">size</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a340dff7484f1e58feff58a5f0627e190 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of elements in a sparse set. <a href="classentt_1_1sparse__set.html#a340dff7484f1e58feff58a5f0627e190">More...</a><br /></td></tr>
<tr class="separator:a340dff7484f1e58feff58a5f0627e190 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1a16cb354a9ed5ded92b6edcddce15e inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#ae1a16cb354a9ed5ded92b6edcddce15e">empty</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ae1a16cb354a9ed5ded92b6edcddce15e inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether a sparse set is empty. <a href="classentt_1_1sparse__set.html#ae1a16cb354a9ed5ded92b6edcddce15e">More...</a><br /></td></tr>
<tr class="separator:ae1a16cb354a9ed5ded92b6edcddce15e inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2eafe4975271769b08fe7f7d4924992f inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1sparse__set.html#a9a1dbe5ab2dbb098beae0bff56bbf780">entity_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a2eafe4975271769b08fe7f7d4924992f">data</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a2eafe4975271769b08fe7f7d4924992f inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the internal packed array. <a href="classentt_1_1sparse__set.html#a2eafe4975271769b08fe7f7d4924992f">More...</a><br /></td></tr>
<tr class="separator:a2eafe4975271769b08fe7f7d4924992f inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06743336f265989b48e106a3d3bd1562 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1sparse__set.html#a580b210d5a24c49ca8c255646f3bb469">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a06743336f265989b48e106a3d3bd1562">begin</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a06743336f265989b48e106a3d3bd1562 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator to the beginning. <a href="classentt_1_1sparse__set.html#a06743336f265989b48e106a3d3bd1562">More...</a><br /></td></tr>
<tr class="separator:a06743336f265989b48e106a3d3bd1562 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69d6c1288f673c6f92d2b1b028d6aa75 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1sparse__set.html#a580b210d5a24c49ca8c255646f3bb469">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a69d6c1288f673c6f92d2b1b028d6aa75">end</a> () const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a69d6c1288f673c6f92d2b1b028d6aa75 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator to the end. <a href="classentt_1_1sparse__set.html#a69d6c1288f673c6f92d2b1b028d6aa75">More...</a><br /></td></tr>
<tr class="separator:a69d6c1288f673c6f92d2b1b028d6aa75 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ed57521bb3279b5ed3cd397b65abf01 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1sparse__set.html#a580b210d5a24c49ca8c255646f3bb469">iterator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a0ed57521bb3279b5ed3cd397b65abf01">find</a> (const <a class="el" href="classentt_1_1sparse__set.html#a9a1dbe5ab2dbb098beae0bff56bbf780">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a0ed57521bb3279b5ed3cd397b65abf01 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds an entity. <a href="classentt_1_1sparse__set.html#a0ed57521bb3279b5ed3cd397b65abf01">More...</a><br /></td></tr>
<tr class="separator:a0ed57521bb3279b5ed3cd397b65abf01 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4eb4faf1aa28d20717716bea7981f5b inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#af4eb4faf1aa28d20717716bea7981f5b">has</a> (const <a class="el" href="classentt_1_1sparse__set.html#a9a1dbe5ab2dbb098beae0bff56bbf780">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:af4eb4faf1aa28d20717716bea7981f5b inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a sparse set contains an entity. <a href="classentt_1_1sparse__set.html#af4eb4faf1aa28d20717716bea7981f5b">More...</a><br /></td></tr>
<tr class="separator:af4eb4faf1aa28d20717716bea7981f5b inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5fdeb500ab138905118a4ebb018895a inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#ae5fdeb500ab138905118a4ebb018895a">get</a> (const <a class="el" href="classentt_1_1sparse__set.html#a9a1dbe5ab2dbb098beae0bff56bbf780">entity_type</a> entt) const ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ae5fdeb500ab138905118a4ebb018895a inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the position of an entity in a sparse set. <a href="classentt_1_1sparse__set.html#ae5fdeb500ab138905118a4ebb018895a">More...</a><br /></td></tr>
<tr class="separator:ae5fdeb500ab138905118a4ebb018895a inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f6d293b9bc7227de22c86722881083f inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a4f6d293b9bc7227de22c86722881083f">construct</a> (const <a class="el" href="classentt_1_1sparse__set.html#a9a1dbe5ab2dbb098beae0bff56bbf780">entity_type</a> entt)</td></tr>
<tr class="memdesc:a4f6d293b9bc7227de22c86722881083f inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assigns an entity to a sparse set. <a href="classentt_1_1sparse__set.html#a4f6d293b9bc7227de22c86722881083f">More...</a><br /></td></tr>
<tr class="separator:a4f6d293b9bc7227de22c86722881083f inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a642460f7f0ca8e42220c43c785467063 inherit pub_methods_classentt_1_1sparse__set"><td class="memTemplParams" colspan="2">template&lt;typename It &gt; </td></tr>
<tr class="memitem:a642460f7f0ca8e42220c43c785467063 inherit pub_methods_classentt_1_1sparse__set"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a642460f7f0ca8e42220c43c785467063">batch</a> (It first, It last)</td></tr>
<tr class="memdesc:a642460f7f0ca8e42220c43c785467063 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assigns one or more entities to a sparse set. <a href="classentt_1_1sparse__set.html#a642460f7f0ca8e42220c43c785467063">More...</a><br /></td></tr>
<tr class="separator:a642460f7f0ca8e42220c43c785467063 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedf563d410f1288b175b2d67522b5bb5 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#aedf563d410f1288b175b2d67522b5bb5">destroy</a> (const <a class="el" href="classentt_1_1sparse__set.html#a9a1dbe5ab2dbb098beae0bff56bbf780">entity_type</a> entt)</td></tr>
<tr class="memdesc:aedf563d410f1288b175b2d67522b5bb5 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes an entity from a sparse set. <a href="classentt_1_1sparse__set.html#aedf563d410f1288b175b2d67522b5bb5">More...</a><br /></td></tr>
<tr class="separator:aedf563d410f1288b175b2d67522b5bb5 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb754f7b178b591042cae2389365a37e inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#afb754f7b178b591042cae2389365a37e">swap</a> (const <a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">size_type</a> lhs, const <a class="el" href="classentt_1_1sparse__set.html#a3d2138b0eb8c7ac968e9e38a9e981ec1">size_type</a> rhs) ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:afb754f7b178b591042cae2389365a37e inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps two entities in the internal packed array. <a href="classentt_1_1sparse__set.html#afb754f7b178b591042cae2389365a37e">More...</a><br /></td></tr>
<tr class="separator:afb754f7b178b591042cae2389365a37e inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afae939a408911c573256cf0299d76828 inherit pub_methods_classentt_1_1sparse__set"><td class="memTemplParams" colspan="2">template&lt;typename Compare , typename Sort = std_sort, typename... Args&gt; </td></tr>
<tr class="memitem:afae939a408911c573256cf0299d76828 inherit pub_methods_classentt_1_1sparse__set"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#afae939a408911c573256cf0299d76828">sort</a> (<a class="el" href="classentt_1_1sparse__set.html#a580b210d5a24c49ca8c255646f3bb469">iterator_type</a> first, <a class="el" href="classentt_1_1sparse__set.html#a580b210d5a24c49ca8c255646f3bb469">iterator_type</a> last, Compare compare, Sort algo=Sort{}, Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:afae939a408911c573256cf0299d76828 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sort elements according to the given comparison function. <a href="classentt_1_1sparse__set.html#afae939a408911c573256cf0299d76828">More...</a><br /></td></tr>
<tr class="separator:afae939a408911c573256cf0299d76828 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0481dde89f07e9ca50d79777de898b6 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#ab0481dde89f07e9ca50d79777de898b6">respect</a> (const <a class="el" href="classentt_1_1sparse__set.html">sparse_set</a> &amp;other) ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:ab0481dde89f07e9ca50d79777de898b6 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sort entities according to their order in another sparse set. <a href="classentt_1_1sparse__set.html#ab0481dde89f07e9ca50d79777de898b6">More...</a><br /></td></tr>
<tr class="separator:ab0481dde89f07e9ca50d79777de898b6 inherit pub_methods_classentt_1_1sparse__set"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46d1553f6837b467f1ddf8ae3dece3d2 inherit pub_methods_classentt_1_1sparse__set"><td class="memItemLeft" align="right" valign="top"><a id="a46d1553f6837b467f1ddf8ae3dece3d2"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1sparse__set.html#a46d1553f6837b467f1ddf8ae3dece3d2">reset</a> ()</td></tr>
<tr class="memdesc:a46d1553f6837b467f1ddf8ae3dece3d2 inherit pub_methods_classentt_1_1sparse__set"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets a sparse set. <br /></td></tr>
<tr class="separator:a46d1553f6837b467f1ddf8ae3dece3d2 inherit pub_methods_classentt_1_1sparse__set"><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, typename Type&gt;<br />
class entt::default_storage&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;</h3>
<p>Default storage implementation. </p>
<p>This class is a refinement of a sparse set that associates an object to an entity. The main purpose of this class is to extend sparse sets to store components in a registry. It guarantees fast access both to the elements and to the entities.</p>
<dl class="section note"><dt>Note</dt><dd>Entities and objects have the same order. It's guaranteed both in case of raw access (either to entities or objects) and when using random or input access iterators.</dd>
<dd>
Internal data structures arrange elements to maximize performance. Because of that, there are no guarantees that elements have the expected order when iterate directly the internal packed array (see <code>raw</code> and <code>size</code> member functions for that). Use <code>begin</code> and <code>end</code> instead.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Empty types aren't explicitly instantiated. Temporary objects are returned in place of the instances of the components and raw access isn't available for them.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1sparse__set.html#a8ef544aaed30126797f6f0b9a9f8b9e8" title="Default constructor. ">sparse_set&lt;Entity&gt;</a></dd></dl>
<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>
<tr><td class="paramname">Type</td><td>Type of objects assigned to the entities. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="default__storage_8hpp_source.html#l00495">495</a> of file <a class="el" href="default__storage_8hpp_source.html">default_storage.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a15651e5a1fd629714b279b90c680b7e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15651e5a1fd629714b279b90c680b7e9">&#9670;&nbsp;</a></span>batch()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename Type &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_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a> <a class="el" href="classentt_1_1default__storage.html">entt::default_storage</a>&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;::batch </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>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a520dce16d31a7bf8aecbc891254458dc">object_type</a> &amp;&#160;</td>
<td class="paramname"> = <code>{}</code>&#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 one or more entities to a storage. </p>
<p>The object type must be at least default constructible.</p>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to assign an entity that already belongs to the storage results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode if the storage already contains the given entity.</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 entities. </td></tr>
<tr><td class="paramname">last</td><td>An iterator past the last element of the range of entities. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the list of instances just created and sorted the same of the entities. </dd></dl>
<p class="definition">Definition at line <a class="el" href="default__storage_8hpp_source.html#l00690">690</a> of file <a class="el" href="default__storage_8hpp_source.html">default_storage.hpp</a>.</p>
</div>
</div>
<a id="a1e2ea918b12f8be96b09c9bc11e31098"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e2ea918b12f8be96b09c9bc11e31098">&#9670;&nbsp;</a></span>begin()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename Type &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a> <a class="el" href="classentt_1_1default__storage.html">entt::default_storage</a>&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;::begin </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 an iterator to the beginning. </p>
<p>The returned iterator points to the first instance of the given type. If the storage is empty, the returned iterator will be equal to <code><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a08220253d8c3058314e875da3718545f" title="Returns an iterator to the end. ">end()</a></code>.</p>
<dl class="section note"><dt>Note</dt><dd>Input iterators stay true to the order imposed by a call to either <code>sort</code> or <code>respect</code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the first instance of the given type. </dd></dl>
<p class="definition">Definition at line <a class="el" href="default__storage_8hpp_source.html#l00624">624</a> of file <a class="el" href="default__storage_8hpp_source.html">default_storage.hpp</a>.</p>
</div>
</div>
<a id="a407834674d9010a910b84a5a7bce53d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a407834674d9010a910b84a5a7bce53d1">&#9670;&nbsp;</a></span>cbegin()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename Type &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a> <a class="el" href="classentt_1_1default__storage.html">entt::default_storage</a>&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;::cbegin </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 an iterator to the beginning. </p>
<p>The returned iterator points to the first instance of the given type. If the storage is empty, the returned iterator will be equal to <code><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a08220253d8c3058314e875da3718545f" title="Returns an iterator to the end. ">end()</a></code>.</p>
<dl class="section note"><dt>Note</dt><dd>Input iterators stay true to the order imposed by a call to either <code>sort</code> or <code>respect</code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the first instance of the given type. </dd></dl>
<p class="definition">Definition at line <a class="el" href="default__storage_8hpp_source.html#l00618">618</a> of file <a class="el" href="default__storage_8hpp_source.html">default_storage.hpp</a>.</p>
</div>
</div>
<a id="a9c4a7c733317610193d537ace20de9ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c4a7c733317610193d537ace20de9ae">&#9670;&nbsp;</a></span>cend()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename Type &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a> <a class="el" href="classentt_1_1default__storage.html">entt::default_storage</a>&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;::cend </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 an iterator to the end. </p>
<p>The returned iterator points to the element following the last instance of the given type. Attempting to dereference the returned iterator results in undefined behavior.</p>
<dl class="section note"><dt>Note</dt><dd>Input iterators stay true to the order imposed by a call to either <code>sort</code> or <code>respect</code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the element following the last instance of the given type. </dd></dl>
<p class="definition">Definition at line <a class="el" href="default__storage_8hpp_source.html#l00642">642</a> of file <a class="el" href="default__storage_8hpp_source.html">default_storage.hpp</a>.</p>
</div>
</div>
<a id="a08220253d8c3058314e875da3718545f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08220253d8c3058314e875da3718545f">&#9670;&nbsp;</a></span>end()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename Type &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a8866eb6823b8ddf03a49f601b4e04623">iterator_type</a> <a class="el" href="classentt_1_1default__storage.html">entt::default_storage</a>&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;::end </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 an iterator to the end. </p>
<p>The returned iterator points to the element following the last instance of the given type. Attempting to dereference the returned iterator results in undefined behavior.</p>
<dl class="section note"><dt>Note</dt><dd>Input iterators stay true to the order imposed by a call to either <code>sort</code> or <code>respect</code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the element following the last instance of the given type. </dd></dl>
<p class="definition">Definition at line <a class="el" href="default__storage_8hpp_source.html#l00647">647</a> of file <a class="el" href="default__storage_8hpp_source.html">default_storage.hpp</a>.</p>
</div>
</div>
<a id="a9b6c15c42f98bbc411b0f3aa09de7a4a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b6c15c42f98bbc411b0f3aa09de7a4a">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity , typename Type &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a520dce16d31a7bf8aecbc891254458dc">object_type</a> <a class="el" href="classentt_1_1default__storage.html">entt::default_storage</a>&lt; Entity, Type, std::enable_if_t&lt; std::is_empty_v&lt; Type &gt; &gt; &gt;::get </td>
<td>(</td>
<td class="paramtype">[[maybe_unused] ] const <a class="el" href="classentt_1_1default__storage_3_01Entity_00_01Type_00_01std_1_1enable__if__t_3_01std_1_1is__empty__v_3_01Type_01_4_01_4_01_4.html#a5900eeb999c9066ea163121e001588a0">entity_type</a>&#160;</td>
<td class="paramname"><em>entt</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 object associated with an entity. </p>
<dl class="section note"><dt>Note</dt><dd>Empty types aren't explicitly instantiated. Therefore, this function always returns a temporary object.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Attempting to use an entity that doesn't belong to the storage results in undefined behavior.<br />
An assertion will abort the execution at runtime in debug mode if the storage doesn't contain the given entity.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entt</td><td>A valid entity identifier. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The object associated with the entity. </dd></dl>
<p class="definition">Definition at line <a class="el" href="default__storage_8hpp_source.html#l00667">667</a> of file <a class="el" href="default__storage_8hpp_source.html">default_storage.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="default__storage_8hpp_source.html">default_storage.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>

View File

@@ -0,0 +1,3 @@
<map id="entt::default_storage&lt; Entity, Type, typename &gt;" name="entt::default_storage&lt; Entity, Type, typename &gt;">
<area shape="rect" id="node2" href="$classentt_1_1sparse__set.html" title="Basic sparse set implementation. " alt="" coords="9,5,184,32"/>
</map>

View File

@@ -0,0 +1 @@
bda36e92f9c25b68bd13ae38f332b518

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -0,0 +1,3 @@
<map id="entt::default_storage&lt; Entity, Type, typename &gt;" name="entt::default_storage&lt; Entity, Type, typename &gt;">
<area shape="rect" id="node2" href="$classentt_1_1sparse__set.html" title="Basic sparse set implementation. " alt="" coords="9,5,184,32"/>
</map>

View File

@@ -0,0 +1 @@
53519f1a7a457b92c3090211034acee8

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

View File

@@ -22,7 +22,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.1.0</span>
&#160;<span id="projectnumber">3.1.1</span>
</div>
</td>
</tr>

Some files were not shown because too many files have changed in this diff Show More