Files
entt/structentt_1_1ServiceLocator.html
2018-06-04 08:58:07 +02:00

365 lines
19 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>entt: entt::ServiceLocator&lt; Service &gt; Struct Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">entt
&#160;<span id="projectnumber">2.6.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceentt.html">entt</a></li><li class="navelem"><a class="el" href="structentt_1_1ServiceLocator.html">ServiceLocator</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="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="structentt_1_1ServiceLocator-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">entt::ServiceLocator&lt; Service &gt; Struct Template Reference<span class="mlabels"><span class="mlabel">final</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>Service locator, nothing more.
<a href="structentt_1_1ServiceLocator.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="locator_8hpp_source.html">locator.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:a0631b136adf579365fb444bc5e8f1416"><td class="memItemLeft" align="right" valign="top"><a id="a0631b136adf579365fb444bc5e8f1416"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structentt_1_1ServiceLocator.html#a0631b136adf579365fb444bc5e8f1416">service_type</a> = Service</td></tr>
<tr class="memdesc:a0631b136adf579365fb444bc5e8f1416"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of service offered. <br /></td></tr>
<tr class="separator:a0631b136adf579365fb444bc5e8f1416"><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:a9806fa1d96f6edfb5b946b11acabc0da"><td class="memItemLeft" align="right" valign="top"><a id="a9806fa1d96f6edfb5b946b11acabc0da"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structentt_1_1ServiceLocator.html#a9806fa1d96f6edfb5b946b11acabc0da">ServiceLocator</a> ()=delete</td></tr>
<tr class="memdesc:a9806fa1d96f6edfb5b946b11acabc0da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor, deleted on purpose. <br /></td></tr>
<tr class="separator:a9806fa1d96f6edfb5b946b11acabc0da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0dc69f829f93c86b6537cf0c133ef75"><td class="memItemLeft" align="right" valign="top"><a id="af0dc69f829f93c86b6537cf0c133ef75"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structentt_1_1ServiceLocator.html#af0dc69f829f93c86b6537cf0c133ef75">~ServiceLocator</a> ()=delete</td></tr>
<tr class="memdesc:af0dc69f829f93c86b6537cf0c133ef75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default destructor, deleted on purpose. <br /></td></tr>
<tr class="separator:af0dc69f829f93c86b6537cf0c133ef75"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:afb0038914d828b6b3483484cc906ec44"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structentt_1_1ServiceLocator.html#afb0038914d828b6b3483484cc906ec44">empty</a> () ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:afb0038914d828b6b3483484cc906ec44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests if a valid service implementation is set. <a href="#afb0038914d828b6b3483484cc906ec44">More...</a><br /></td></tr>
<tr class="separator:afb0038914d828b6b3483484cc906ec44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87a0d27f2ce4ac8a94229e32853503ca"><td class="memItemLeft" align="right" valign="top">static std::weak_ptr&lt; Service &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structentt_1_1ServiceLocator.html#a87a0d27f2ce4ac8a94229e32853503ca">get</a> () ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a87a0d27f2ce4ac8a94229e32853503ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a weak pointer to a service implementation, if any. <a href="#a87a0d27f2ce4ac8a94229e32853503ca">More...</a><br /></td></tr>
<tr class="separator:a87a0d27f2ce4ac8a94229e32853503ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a746c27214142cdd98c650c9cc66bf165"><td class="memItemLeft" align="right" valign="top">static Service &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structentt_1_1ServiceLocator.html#a746c27214142cdd98c650c9cc66bf165">ref</a> () ENTT_NOEXCEPT</td></tr>
<tr class="memdesc:a746c27214142cdd98c650c9cc66bf165"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a weak reference to a service implementation, if any. <a href="#a746c27214142cdd98c650c9cc66bf165">More...</a><br /></td></tr>
<tr class="separator:a746c27214142cdd98c650c9cc66bf165"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf8d8b8d70ed082d54516def7500ec5c"><td class="memTemplParams" colspan="2">template&lt;typename Impl = Service, typename... Args&gt; </td></tr>
<tr class="memitem:abf8d8b8d70ed082d54516def7500ec5c"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structentt_1_1ServiceLocator.html#abf8d8b8d70ed082d54516def7500ec5c">set</a> (Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:abf8d8b8d70ed082d54516def7500ec5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets or replaces a service. <a href="#abf8d8b8d70ed082d54516def7500ec5c">More...</a><br /></td></tr>
<tr class="separator:abf8d8b8d70ed082d54516def7500ec5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad913de8d4a2dcf39b925773e42cbfff5"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structentt_1_1ServiceLocator.html#ad913de8d4a2dcf39b925773e42cbfff5">set</a> (std::shared_ptr&lt; Service &gt; ptr)</td></tr>
<tr class="memdesc:ad913de8d4a2dcf39b925773e42cbfff5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets or replaces a service. <a href="#ad913de8d4a2dcf39b925773e42cbfff5">More...</a><br /></td></tr>
<tr class="separator:ad913de8d4a2dcf39b925773e42cbfff5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac52892a5692c15c8b230a5020adb0847"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structentt_1_1ServiceLocator.html#ac52892a5692c15c8b230a5020adb0847">reset</a> ()</td></tr>
<tr class="memdesc:ac52892a5692c15c8b230a5020adb0847"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets a service. <a href="#ac52892a5692c15c8b230a5020adb0847">More...</a><br /></td></tr>
<tr class="separator:ac52892a5692c15c8b230a5020adb0847"><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 Service&gt;<br />
struct entt::ServiceLocator&lt; Service &gt;</h3>
<p>Service locator, nothing more. </p>
<p>A service locator can be used to do what it promises: locate services.<br />
Usually service locators are tightly bound to the services they expose and thus it's hard to define a general purpose class to do that. This template based implementation tries to fill the gap and to get rid of the burden of defining a different specific locator for each application.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Service</td><td>Type of service managed by the locator. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="locator_8hpp_source.html#l00026">26</a> of file <a class="el" href="locator_8hpp_source.html">locator.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="afb0038914d828b6b3483484cc906ec44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb0038914d828b6b3483484cc906ec44">&#9670;&nbsp;</a></span>empty()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Service &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool <a class="el" href="structentt_1_1ServiceLocator.html">entt::ServiceLocator</a>&lt; Service &gt;::empty </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Tests if a valid service implementation is set. </p>
<dl class="section return"><dt>Returns</dt><dd>True if the service is set, false otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="locator_8hpp_source.html#l00039">39</a> of file <a class="el" href="locator_8hpp_source.html">locator.hpp</a>.</p>
</div>
</div>
<a id="a87a0d27f2ce4ac8a94229e32853503ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a87a0d27f2ce4ac8a94229e32853503ca">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Service &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static std::weak_ptr&lt;Service&gt; <a class="el" href="structentt_1_1ServiceLocator.html">entt::ServiceLocator</a>&lt; Service &gt;::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a weak pointer to a service implementation, if any. </p>
<p>Clients of a service shouldn't retain references to it. The recommended way is to retrieve the service implementation currently set each and every time the need of using it arises. Otherwise users can incur in unexpected behaviors.</p>
<dl class="section return"><dt>Returns</dt><dd>A reference to the service implementation currently set, if any. </dd></dl>
<p class="definition">Definition at line <a class="el" href="locator_8hpp_source.html#l00053">53</a> of file <a class="el" href="locator_8hpp_source.html">locator.hpp</a>.</p>
</div>
</div>
<a id="a746c27214142cdd98c650c9cc66bf165"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a746c27214142cdd98c650c9cc66bf165">&#9670;&nbsp;</a></span>ref()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Service &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static Service&amp; <a class="el" href="structentt_1_1ServiceLocator.html">entt::ServiceLocator</a>&lt; Service &gt;::ref </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a weak reference to a service implementation, if any. </p>
<p>Clients of a service shouldn't retain references to it. The recommended way is to retrieve the service implementation currently set each and every time the need of using it arises. Otherwise users can incur in unexpected behaviors.</p>
<dl class="section warning"><dt>Warning</dt><dd>In case no service implementation has been set, a call to this function results in undefined behavior.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>A reference to the service implementation currently set, if any. </dd></dl>
<p class="definition">Definition at line <a class="el" href="locator_8hpp_source.html#l00071">71</a> of file <a class="el" href="locator_8hpp_source.html">locator.hpp</a>.</p>
</div>
</div>
<a id="ac52892a5692c15c8b230a5020adb0847"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac52892a5692c15c8b230a5020adb0847">&#9670;&nbsp;</a></span>reset()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Service &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void <a class="el" href="structentt_1_1ServiceLocator.html">entt::ServiceLocator</a>&lt; Service &gt;::reset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Resets a service. </p>
<p>The service is no longer valid after a reset. </p>
<p class="definition">Definition at line <a class="el" href="locator_8hpp_source.html#l00100">100</a> of file <a class="el" href="locator_8hpp_source.html">locator.hpp</a>.</p>
</div>
</div>
<a id="abf8d8b8d70ed082d54516def7500ec5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf8d8b8d70ed082d54516def7500ec5c">&#9670;&nbsp;</a></span>set() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Service &gt; </div>
<div class="memtemplate">
template&lt;typename Impl = Service, typename... Args&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void <a class="el" href="structentt_1_1ServiceLocator.html">entt::ServiceLocator</a>&lt; Service &gt;::set </td>
<td>(</td>
<td class="paramtype">Args &amp;&amp;...&#160;</td>
<td class="paramname"><em>args</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets or replaces a service. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Impl</td><td>Type of the new service to use. </td></tr>
<tr><td class="paramname">Args</td><td>Types of arguments to use to construct the service. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">args</td><td>Parameters to use to construct the service. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="locator_8hpp_source.html#l00082">82</a> of file <a class="el" href="locator_8hpp_source.html">locator.hpp</a>.</p>
</div>
</div>
<a id="ad913de8d4a2dcf39b925773e42cbfff5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad913de8d4a2dcf39b925773e42cbfff5">&#9670;&nbsp;</a></span>set() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Service &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void <a class="el" href="structentt_1_1ServiceLocator.html">entt::ServiceLocator</a>&lt; Service &gt;::set </td>
<td>(</td>
<td class="paramtype">std::shared_ptr&lt; Service &gt;&#160;</td>
<td class="paramname"><em>ptr</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets or replaces a service. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ptr</td><td>Service to use to replace the current one. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="locator_8hpp_source.html#l00090">90</a> of file <a class="el" href="locator_8hpp_source.html">locator.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>src/entt/locator/<a class="el" href="locator_8hpp_source.html">locator.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>