Files
entt/classentt_1_1basic__observer.html
2021-12-21 13:20:51 +01:00

643 lines
40 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<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.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>EnTT: entt::basic_observer&lt; Entity &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">EnTT
&#160;<span id="projectnumber">3.9.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceentt.html">entt</a></li><li class="navelem"><a class="el" href="classentt_1_1basic__observer.html">basic_observer</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_1basic__observer-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">entt::basic_observer&lt; Entity &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Observer.
<a href="classentt_1_1basic__observer.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="observer_8hpp_source.html">observer.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:af7a57f53ed7a6c835129480ff6594f7d"><td class="memItemLeft" align="right" valign="top"><a id="af7a57f53ed7a6c835129480ff6594f7d"></a>
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: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:a3b57e5efae80301542b1b4011debb680"><td class="memItemLeft" align="right" valign="top"><a id="a3b57e5efae80301542b1b4011debb680"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a3b57e5efae80301542b1b4011debb680">iterator</a> = typename <a class="el" href="classentt_1_1basic__sparse__set.html">basic_sparse_set</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__observer.html#a3b57e5efae80301542b1b4011debb680">iterator</a></td></tr>
<tr class="memdesc:a3b57e5efae80301542b1b4011debb680"><td class="mdescLeft">&#160;</td><td class="mdescRight">Random access iterator type. <br /></td></tr>
<tr class="separator:a3b57e5efae80301542b1b4011debb680"><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:adfb08de0ef1c0f57fadc6f6d171b931a"><td class="memItemLeft" align="right" valign="top"><a id="adfb08de0ef1c0f57fadc6f6d171b931a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#adfb08de0ef1c0f57fadc6f6d171b931a">basic_observer</a> ()</td></tr>
<tr class="memdesc:adfb08de0ef1c0f57fadc6f6d171b931a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:adfb08de0ef1c0f57fadc6f6d171b931a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa685204c94266b5631c13540012e73c2"><td class="memItemLeft" align="right" valign="top"><a id="aa685204c94266b5631c13540012e73c2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#aa685204c94266b5631c13540012e73c2">basic_observer</a> (const <a class="el" href="classentt_1_1basic__observer.html">basic_observer</a> &amp;)=delete</td></tr>
<tr class="memdesc:aa685204c94266b5631c13540012e73c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default copy constructor, deleted on purpose. <br /></td></tr>
<tr class="separator:aa685204c94266b5631c13540012e73c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accbe2546b1b74de1a59e673cb6250413"><td class="memItemLeft" align="right" valign="top"><a id="accbe2546b1b74de1a59e673cb6250413"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#accbe2546b1b74de1a59e673cb6250413">basic_observer</a> (<a class="el" href="classentt_1_1basic__observer.html">basic_observer</a> &amp;&amp;)=delete</td></tr>
<tr class="memdesc:accbe2546b1b74de1a59e673cb6250413"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default move constructor, deleted on purpose. <br /></td></tr>
<tr class="separator:accbe2546b1b74de1a59e673cb6250413"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abef3c847acf610f1a6f856b05f0f0721"><td class="memTemplParams" colspan="2">template&lt;typename... Matcher&gt; </td></tr>
<tr class="memitem:abef3c847acf610f1a6f856b05f0f0721"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#abef3c847acf610f1a6f856b05f0f0721">basic_observer</a> (<a class="el" href="classentt_1_1basic__registry.html">basic_registry</a>&lt; <a class="el" href="classentt_1_1basic__observer.html#af7a57f53ed7a6c835129480ff6594f7d">entity_type</a> &gt; &amp;reg, <a class="el" href="structentt_1_1basic__collector.html">basic_collector</a>&lt; Matcher... &gt;)</td></tr>
<tr class="memdesc:abef3c847acf610f1a6f856b05f0f0721"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an observer and connects it to a given registry. <a href="classentt_1_1basic__observer.html#abef3c847acf610f1a6f856b05f0f0721">More...</a><br /></td></tr>
<tr class="separator:abef3c847acf610f1a6f856b05f0f0721"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb6fbd2a5ce7bc57013b0bd9ad482599"><td class="memItemLeft" align="right" valign="top"><a id="afb6fbd2a5ce7bc57013b0bd9ad482599"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#afb6fbd2a5ce7bc57013b0bd9ad482599">~basic_observer</a> ()=default</td></tr>
<tr class="memdesc:afb6fbd2a5ce7bc57013b0bd9ad482599"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default destructor. <br /></td></tr>
<tr class="separator:afb6fbd2a5ce7bc57013b0bd9ad482599"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03dcb6b0999d29bc39410d7ae6d9ac53"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__observer.html">basic_observer</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a03dcb6b0999d29bc39410d7ae6d9ac53">operator=</a> (const <a class="el" href="classentt_1_1basic__observer.html">basic_observer</a> &amp;)=delete</td></tr>
<tr class="memdesc:a03dcb6b0999d29bc39410d7ae6d9ac53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default copy assignment operator, deleted on purpose. <a href="classentt_1_1basic__observer.html#a03dcb6b0999d29bc39410d7ae6d9ac53">More...</a><br /></td></tr>
<tr class="separator:a03dcb6b0999d29bc39410d7ae6d9ac53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b7cd199f236a4dee02f202ec0fd6281"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__observer.html">basic_observer</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a8b7cd199f236a4dee02f202ec0fd6281">operator=</a> (<a class="el" href="classentt_1_1basic__observer.html">basic_observer</a> &amp;&amp;)=delete</td></tr>
<tr class="memdesc:a8b7cd199f236a4dee02f202ec0fd6281"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default move assignment operator, deleted on purpose. <a href="classentt_1_1basic__observer.html#a8b7cd199f236a4dee02f202ec0fd6281">More...</a><br /></td></tr>
<tr class="separator:a8b7cd199f236a4dee02f202ec0fd6281"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d69a8bc866b01cc677de492bc436209"><td class="memTemplParams" colspan="2">template&lt;typename... Matcher&gt; </td></tr>
<tr class="memitem:a7d69a8bc866b01cc677de492bc436209"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a7d69a8bc866b01cc677de492bc436209">connect</a> (<a class="el" href="classentt_1_1basic__registry.html">basic_registry</a>&lt; <a class="el" href="classentt_1_1basic__observer.html#af7a57f53ed7a6c835129480ff6594f7d">entity_type</a> &gt; &amp;reg, <a class="el" href="structentt_1_1basic__collector.html">basic_collector</a>&lt; Matcher... &gt;)</td></tr>
<tr class="memdesc:a7d69a8bc866b01cc677de492bc436209"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connects an observer to a given registry. <a href="classentt_1_1basic__observer.html#a7d69a8bc866b01cc677de492bc436209">More...</a><br /></td></tr>
<tr class="separator:a7d69a8bc866b01cc677de492bc436209"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1337e8f885ca963383e5a3ed2a354955"><td class="memItemLeft" align="right" valign="top"><a id="a1337e8f885ca963383e5a3ed2a354955"></a>
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:aae9024a8c5b14adfe90690a56fa09935"><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#aae9024a8c5b14adfe90690a56fa09935">size</a> () const</td></tr>
<tr class="memdesc:aae9024a8c5b14adfe90690a56fa09935"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of elements in an observer. <a href="classentt_1_1basic__observer.html#aae9024a8c5b14adfe90690a56fa09935">More...</a><br /></td></tr>
<tr class="separator:aae9024a8c5b14adfe90690a56fa09935"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a591a0ed89d0b2cabfb51b729bfb33c3e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a591a0ed89d0b2cabfb51b729bfb33c3e">empty</a> () const</td></tr>
<tr class="memdesc:a591a0ed89d0b2cabfb51b729bfb33c3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether an observer is empty. <a href="classentt_1_1basic__observer.html#a591a0ed89d0b2cabfb51b729bfb33c3e">More...</a><br /></td></tr>
<tr class="separator:a591a0ed89d0b2cabfb51b729bfb33c3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bbec438ee2735301a47725e0c137187"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classentt_1_1basic__observer.html#af7a57f53ed7a6c835129480ff6594f7d">entity_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a9bbec438ee2735301a47725e0c137187">data</a> () const</td></tr>
<tr class="memdesc:a9bbec438ee2735301a47725e0c137187"><td class="mdescLeft">&#160;</td><td class="mdescRight">Direct access to the list of entities of the observer. <a href="classentt_1_1basic__observer.html#a9bbec438ee2735301a47725e0c137187">More...</a><br /></td></tr>
<tr class="separator:a9bbec438ee2735301a47725e0c137187"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2067fca77f219bea0b5a341583a1544f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__observer.html#a3b57e5efae80301542b1b4011debb680">iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a2067fca77f219bea0b5a341583a1544f">begin</a> () const</td></tr>
<tr class="memdesc:a2067fca77f219bea0b5a341583a1544f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator to the first entity of the observer. <a href="classentt_1_1basic__observer.html#a2067fca77f219bea0b5a341583a1544f">More...</a><br /></td></tr>
<tr class="separator:a2067fca77f219bea0b5a341583a1544f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a730adbbd4f425bbf9d69b8bb4a0e2ac2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__observer.html#a3b57e5efae80301542b1b4011debb680">iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a730adbbd4f425bbf9d69b8bb4a0e2ac2">end</a> () const</td></tr>
<tr class="memdesc:a730adbbd4f425bbf9d69b8bb4a0e2ac2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator that is past the last entity of the observer. <a href="classentt_1_1basic__observer.html#a730adbbd4f425bbf9d69b8bb4a0e2ac2">More...</a><br /></td></tr>
<tr class="separator:a730adbbd4f425bbf9d69b8bb4a0e2ac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade730cb09309ed7077616a908b25c2e7"><td class="memItemLeft" align="right" valign="top"><a id="ade730cb09309ed7077616a908b25c2e7"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#ade730cb09309ed7077616a908b25c2e7">clear</a> ()</td></tr>
<tr class="memdesc:ade730cb09309ed7077616a908b25c2e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the underlying container. <br /></td></tr>
<tr class="separator:ade730cb09309ed7077616a908b25c2e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a181a6724835a3a41e33610003f738525"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
<tr class="memitem:a181a6724835a3a41e33610003f738525"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a181a6724835a3a41e33610003f738525">each</a> (Func func) const</td></tr>
<tr class="memdesc:a181a6724835a3a41e33610003f738525"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterates entities and applies the given function object to them. <a href="classentt_1_1basic__observer.html#a181a6724835a3a41e33610003f738525">More...</a><br /></td></tr>
<tr class="separator:a181a6724835a3a41e33610003f738525"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a535f3ddf32641a54e1c8861519933c97"><td class="memTemplParams" colspan="2">template&lt;typename Func &gt; </td></tr>
<tr class="memitem:a535f3ddf32641a54e1c8861519933c97"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classentt_1_1basic__observer.html#a535f3ddf32641a54e1c8861519933c97">each</a> (Func func)</td></tr>
<tr class="memdesc:a535f3ddf32641a54e1c8861519933c97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterates entities and applies the given function object to them, then clears the observer. <a href="classentt_1_1basic__observer.html#a535f3ddf32641a54e1c8861519933c97">More...</a><br /></td></tr>
<tr class="separator:a535f3ddf32641a54e1c8861519933c97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename Entity&gt;<br />
class entt::basic_observer&lt; Entity &gt;</h3>
<p>Observer. </p>
<p>An observer returns all the entities and only the entities that fit the requirements of at least one matcher. Moreover, it's guaranteed that the entity list is tightly packed in memory for fast iterations.<br />
In general, observers don't stay true to the order of any set of components.</p>
<p>Observers work mainly with two types of matchers, provided through a collector:</p>
<ul>
<li>Observing matcher: an observer will return at least all the living entities for which one or more of the given components have been updated and not yet destroyed.</li>
<li>Grouping matcher: an observer will return at least all the living entities that would have entered the given group if it existed and that would have not yet left it.</li>
</ul>
<p>If an entity respects the requirements of multiple matchers, it will be returned once and only once by the observer in any case.</p>
<p>Matchers support also filtering by means of a <em>where</em> clause that accepts both a list of types and an exclusion list.<br />
Whenever a matcher finds that an entity matches its requirements, the condition of the filter is verified before to register the entity itself. Moreover, a registered entity isn't returned by the observer if the condition set by the filter is broken in the meantime.</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 warning"><dt>Warning</dt><dd>Lifetime of an observer doesn't necessarily have to overcome that of the registry to which it is connected. However, the observer must be disconnected from the registry before being destroyed to avoid crashes due to dangling pointers.</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="classentt_1_1entt__traits.html" title="Entity traits.">entt_traits</a> for more details). </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="observer_8hpp_source.html#l00165">165</a> of file <a class="el" href="observer_8hpp_source.html">observer.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="abef3c847acf610f1a6f856b05f0f0721"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abef3c847acf610f1a6f856b05f0f0721">&#9670;&nbsp;</a></span>basic_observer()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<div class="memtemplate">
template&lt;typename... Matcher&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer</a>&lt; Entity &gt;::<a class="el" href="classentt_1_1basic__observer.html">basic_observer</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classentt_1_1basic__registry.html">basic_registry</a>&lt; <a class="el" href="classentt_1_1basic__observer.html#af7a57f53ed7a6c835129480ff6594f7d">entity_type</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>reg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structentt_1_1basic__collector.html">basic_collector</a>&lt; Matcher... &gt;&#160;</td>
<td class="paramname">&#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>Creates an observer and connects it to a given registry. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Matcher</td><td>Types of matchers to use to initialize the observer. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reg</td><td>A valid reference to a registry. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="observer_8hpp_source.html#l00291">291</a> of file <a class="el" href="observer_8hpp_source.html">observer.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a2067fca77f219bea0b5a341583a1544f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2067fca77f219bea0b5a341583a1544f">&#9670;&nbsp;</a></span>begin()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__observer.html#a3b57e5efae80301542b1b4011debb680">iterator</a> <a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer</a>&lt; Entity &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 of the observer. </p>
<p>The returned iterator points to the first entity of the observer. If the container is empty, the returned iterator will be equal to <code><a class="el" href="classentt_1_1basic__observer.html#a730adbbd4f425bbf9d69b8bb4a0e2ac2" title="Returns an iterator that is past the last entity of the observer.">end()</a></code>.</p>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the first entity of the observer. </dd></dl>
<p class="definition">Definition at line <a class="el" href="observer_8hpp_source.html#l00371">371</a> of file <a class="el" href="observer_8hpp_source.html">observer.hpp</a>.</p>
</div>
</div>
<a id="a7d69a8bc866b01cc677de492bc436209"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d69a8bc866b01cc677de492bc436209">&#9670;&nbsp;</a></span>connect()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<div class="memtemplate">
template&lt;typename... Matcher&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__observer.html">entt::basic_observer</a>&lt; Entity &gt;::connect </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classentt_1_1basic__registry.html">basic_registry</a>&lt; <a class="el" href="classentt_1_1basic__observer.html#af7a57f53ed7a6c835129480ff6594f7d">entity_type</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>reg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structentt_1_1basic__collector.html">basic_collector</a>&lt; Matcher... &gt;&#160;</td>
<td class="paramname">&#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>Connects an observer to a given registry. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Matcher</td><td>Types of matchers to use to initialize the observer. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reg</td><td>A valid reference to a registry. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="observer_8hpp_source.html#l00317">317</a> of file <a class="el" href="observer_8hpp_source.html">observer.hpp</a>.</p>
</div>
</div>
<a id="a9bbec438ee2735301a47725e0c137187"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bbec438ee2735301a47725e0c137187">&#9670;&nbsp;</a></span>data()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classentt_1_1basic__observer.html#af7a57f53ed7a6c835129480ff6594f7d">entity_type</a>* <a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer</a>&lt; Entity &gt;::data </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Direct access to the list of entities of the observer. </p>
<p>The returned pointer is such that range <code>[<a class="el" href="classentt_1_1basic__observer.html#a9bbec438ee2735301a47725e0c137187" title="Direct access to the list of entities of the observer.">data()</a>, <a class="el" href="classentt_1_1basic__observer.html#a9bbec438ee2735301a47725e0c137187" title="Direct access to the list of entities of the observer.">data()</a> + <a class="el" href="classentt_1_1basic__observer.html#aae9024a8c5b14adfe90690a56fa09935" title="Returns the number of elements in an observer.">size()</a>)</code> is always a valid range, even if the container is empty.</p>
<dl class="section note"><dt>Note</dt><dd>Entities are in the reverse order as returned by the <code>begin</code>/<code>end</code> iterators.</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="observer_8hpp_source.html#l00359">359</a> of file <a class="el" href="observer_8hpp_source.html">observer.hpp</a>.</p>
</div>
</div>
<a id="a535f3ddf32641a54e1c8861519933c97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a535f3ddf32641a54e1c8861519933c97">&#9670;&nbsp;</a></span>each() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<div class="memtemplate">
template&lt;typename 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__observer.html">entt::basic_observer</a>&lt; Entity &gt;::each </td>
<td>(</td>
<td class="paramtype">Func&#160;</td>
<td class="paramname"><em>func</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterates entities and applies the given function object to them, then clears the observer. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classentt_1_1basic__observer.html#a181a6724835a3a41e33610003f738525" title="Iterates entities 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="observer_8hpp_source.html#l00424">424</a> of file <a class="el" href="observer_8hpp_source.html">observer.hpp</a>.</p>
</div>
</div>
<a id="a181a6724835a3a41e33610003f738525"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a181a6724835a3a41e33610003f738525">&#9670;&nbsp;</a></span>each() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<div class="memtemplate">
template&lt;typename 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__observer.html">entt::basic_observer</a>&lt; Entity &gt;::each </td>
<td>(</td>
<td class="paramtype">Func&#160;</td>
<td class="paramname"><em>func</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterates entities and applies the given function object to them. </p>
<p>The function object is invoked for each entity.<br />
The signature of the function must be equivalent to the following form:</p>
<div class="fragment"><div class="line">void(<span class="keyword">const</span> <a class="code" href="classentt_1_1basic__observer.html#af7a57f53ed7a6c835129480ff6594f7d">entity_type</a>);</div>
<div class="ttc" id="aclassentt_1_1basic__observer_html_af7a57f53ed7a6c835129480ff6594f7d"><div class="ttname"><a href="classentt_1_1basic__observer.html#af7a57f53ed7a6c835129480ff6594f7d">entt::basic_observer::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="observer_8hpp_source.html#l00269">observer.hpp:269</a></div></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>
</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="observer_8hpp_source.html#l00408">408</a> of file <a class="el" href="observer_8hpp_source.html">observer.hpp</a>.</p>
</div>
</div>
<a id="a591a0ed89d0b2cabfb51b729bfb33c3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a591a0ed89d0b2cabfb51b729bfb33c3e">&#9670;&nbsp;</a></span>empty()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer</a>&lt; Entity &gt;::empty </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks whether an observer is empty. </p>
<dl class="section return"><dt>Returns</dt><dd>True if the observer is empty, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="observer_8hpp_source.html#l00343">343</a> of file <a class="el" href="observer_8hpp_source.html">observer.hpp</a>.</p>
</div>
</div>
<a id="a730adbbd4f425bbf9d69b8bb4a0e2ac2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a730adbbd4f425bbf9d69b8bb4a0e2ac2">&#9670;&nbsp;</a></span>end()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__observer.html#a3b57e5efae80301542b1b4011debb680">iterator</a> <a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer</a>&lt; Entity &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 of the observer. </p>
<p>The returned iterator points to the entity following the last entity of the observer. Attempting to dereference the returned iterator results in undefined behavior.</p>
<dl class="section return"><dt>Returns</dt><dd>An iterator to the entity following the last entity of the observer. </dd></dl>
<p class="definition">Definition at line <a class="el" href="observer_8hpp_source.html#l00385">385</a> of file <a class="el" href="observer_8hpp_source.html">observer.hpp</a>.</p>
</div>
</div>
<a id="a8b7cd199f236a4dee02f202ec0fd6281"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b7cd199f236a4dee02f202ec0fd6281">&#9670;&nbsp;</a></span>operator=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__observer.html">basic_observer</a>&amp; <a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer</a>&lt; Entity &gt;::operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classentt_1_1basic__observer.html">basic_observer</a>&lt; Entity &gt; &amp;&amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default move assignment operator, deleted on purpose. </p>
<dl class="section return"><dt>Returns</dt><dd>This observer. </dd></dl>
</div>
</div>
<a id="a03dcb6b0999d29bc39410d7ae6d9ac53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03dcb6b0999d29bc39410d7ae6d9ac53">&#9670;&nbsp;</a></span>operator=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__observer.html">basic_observer</a>&amp; <a class="el" href="classentt_1_1basic__observer.html">entt::basic_observer</a>&lt; Entity &gt;::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classentt_1_1basic__observer.html">basic_observer</a>&lt; Entity &gt; &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Default copy assignment operator, deleted on purpose. </p>
<dl class="section return"><dt>Returns</dt><dd>This observer. </dd></dl>
</div>
</div>
<a id="aae9024a8c5b14adfe90690a56fa09935"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae9024a8c5b14adfe90690a56fa09935">&#9670;&nbsp;</a></span>size()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Entity &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_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>
</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 in an observer. </p>
<dl class="section return"><dt>Returns</dt><dd>Number of elements. </dd></dl>
<p class="definition">Definition at line <a class="el" href="observer_8hpp_source.html#l00335">335</a> of file <a class="el" href="observer_8hpp_source.html">observer.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/entt/entity/<a class="el" href="entity_2fwd_8hpp_source.html">fwd.hpp</a></li>
<li>src/entt/entity/<a class="el" href="observer_8hpp_source.html">observer.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>