API reference v3.15.0
This commit is contained in:
+53
-33
@@ -3,13 +3,15 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.10.0"/>
|
||||
<meta name="generator" content="Doxygen 1.13.2"/>
|
||||
<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>
|
||||
<script type="text/javascript" src="clipboard.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="cookie.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
@@ -23,7 +25,7 @@
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">EnTT<span id="projectnumber"> 3.14.0</span>
|
||||
<div id="projectname">EnTT<span id="projectnumber"> 3.15.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -31,23 +33,33 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.10.0 -->
|
||||
<!-- Generated by Doxygen 1.13.2 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() { codefold.init(0); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
initMenu('',true,false,'search.php','Search',false);
|
||||
$(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function(){ initResizable(false); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
@@ -70,11 +82,12 @@ $(function() {
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
<div id="doc-content">
|
||||
<div><div class="header">
|
||||
<div class="headertitle"><div class="title">Crash Course: cooperative scheduler</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><p><a class="anchor" id="crash-course-cooperative-scheduler"></a> </p>
|
||||
<div class="textblock"><p><a class="anchor" id="crash-course-cooperative-scheduler"></a></p>
|
||||
<h1><a class="anchor" id="table-of-contents-11"></a>
|
||||
Table of Contents</h1>
|
||||
<ul>
|
||||
@@ -92,13 +105,13 @@ Introduction</h1>
|
||||
<h1><a class="anchor" id="the-process"></a>
|
||||
The process</h1>
|
||||
<p>A typical task inherits from the <code>process</code> class template that stays true to the CRTP idiom. Moreover, derived classes specify what the intended type for elapsed times is.</p>
|
||||
<p>A process should expose publicly the following member functions whether needed (note that it isn't required to define a function unless the derived class wants to <em>override</em> the default behavior):</p>
|
||||
<p>A process should expose publicly the following member functions whether needed (note that it is not 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">This is invoked once per tick until a process is explicitly aborted or ends 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 <em>properly</em>. The <code>void *</code> parameter is an opaque pointer to user data (if any) forwarded directly to the process during an update.</p>
|
||||
<p class="startli">This is invoked once per tick until a process is explicitly aborted or ends either with or without errors. Technically speaking, this member function is not strictly required. However, each process should at least define it to work <em>properly</em>. 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">This is invoked when the process joins the running queue of a scheduler. It happens usually as soon as the process is attached to the scheduler if it's a top level one, otherwise when it replaces its parent if it's a <em>continuation</em>.</p>
|
||||
<p class="startli">This is invoked when the process joins the running queue of a scheduler. It happens usually when the process is attached to the scheduler if it is a top level one, or when it replaces its parent if it is a <em>continuation</em>.</p>
|
||||
</li>
|
||||
<li><p class="startli"><code>void succeeded();</code></p>
|
||||
<p class="startli">This is invoked in case of success, immediately after an update and during the same tick.</p>
|
||||
@@ -116,7 +129,7 @@ The process</h1>
|
||||
<div class="fragment"><div class="line"><span class="keyword">struct </span>my_process: <a class="code hl_class" href="classentt_1_1process.html">entt::process</a><my_process, std::uint32_t> {</div>
|
||||
<div class="line"> <span class="keyword">using </span>delta_type = std::uint32_t;</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <a class="code hl_function" href="namespaceentt.html#a12e4d0c58f9c4cc6f5513c39c530b9b7">my_process</a>(delta_type delay)</div>
|
||||
<div class="line"> my_process(delta_type delay)</div>
|
||||
<div class="line"> : remaining{delay}</div>
|
||||
<div class="line"> {}</div>
|
||||
<div class="line"> </div>
|
||||
@@ -131,14 +144,13 @@ The process</h1>
|
||||
<div class="line"> }</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"><span class="keyword">private</span>:</div>
|
||||
<div class="line"> delta_type <a class="code hl_function" href="namespaceentt.html#a12e4d0c58f9c4cc6f5513c39c530b9b7">remaining</a>;</div>
|
||||
<div class="line"> delta_type remaining;</div>
|
||||
<div class="line">};</div>
|
||||
<div class="ttc" id="aclassentt_1_1process_html"><div class="ttname"><a href="classentt_1_1process.html">entt::process</a></div><div class="ttdoc">Base class for processes.</div><div class="ttdef"><b>Definition</b> <a href="process_8hpp_source.html#l00071">process.hpp:71</a></div></div>
|
||||
<div class="ttc" id="aclassentt_1_1process_html_a4380dab12dc4c7559ada2182468aa1db"><div class="ttname"><a href="classentt_1_1process.html#a4380dab12dc4c7559ada2182468aa1db">entt::process::succeed</a></div><div class="ttdeci">void succeed() noexcept</div><div class="ttdoc">Terminates a process with success if it's still alive.</div><div class="ttdef"><b>Definition</b> <a href="process_8hpp_source.html#l00123">process.hpp:123</a></div></div>
|
||||
<div class="ttc" id="anamespaceentt_html_a12e4d0c58f9c4cc6f5513c39c530b9b7"><div class="ttname"><a href="namespaceentt.html#a12e4d0c58f9c4cc6f5513c39c530b9b7">entt::make_obj_using_allocator</a></div><div class="ttdeci">constexpr Type make_obj_using_allocator(const Allocator &allocator, Args &&...args)</div><div class="ttdoc">Uses-allocator construction utility (waiting for C++20).</div><div class="ttdef"><b>Definition</b> <a href="memory_8hpp_source.html#l00219">memory.hpp:219</a></div></div>
|
||||
<div class="ttc" id="aclassentt_1_1process_html_a4380dab12dc4c7559ada2182468aa1db"><div class="ttname"><a href="classentt_1_1process.html#a4380dab12dc4c7559ada2182468aa1db">entt::process::succeed</a></div><div class="ttdeci">void succeed() noexcept</div><div class="ttdoc">Terminates a process with success if it's still alive.</div><div class="ttdef"><b>Definition</b> <a href="process_8hpp_source.html#l00123">process.hpp:123</a></div></div>
|
||||
</div><!-- fragment --><h2><a class="anchor" id="adaptor"></a>
|
||||
Adaptor</h2>
|
||||
<p>Lambdas and functors can't be used directly with a scheduler because they aren't properly defined processes with managed life cycles.<br />
|
||||
<p>Lambdas and functors cannot be used directly with a scheduler because 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 callbacks to invoke whenever a process terminates 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>
|
||||
@@ -150,40 +162,45 @@ Adaptor</h2>
|
||||
<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>
|
||||
<p>Note that usually users should not 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="the-scheduler"></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 <em>child</em>. 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>A cooperative scheduler runs different processes and helps manage their life cycles.</p>
|
||||
<p>Each process is invoked once per tick. If it terminates, it is removed automatically from the scheduler, and it is never invoked again. Otherwise, it is a good candidate to run one more time the next tick.<br />
|
||||
A process can also have a <em>child</em>. 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 is easy to create a 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 hl_class" href="classentt_1_1basic__scheduler.html">entt::basic_scheduler<std::uint64_t></a> scheduler;</div>
|
||||
<div class="ttc" id="aclassentt_1_1basic__scheduler_html"><div class="ttname"><a href="classentt_1_1basic__scheduler.html">entt::basic_scheduler</a></div><div class="ttdoc">Cooperative scheduler for processes.</div><div class="ttdef"><b>Definition</b> <a href="scheduler_8hpp_source.html#l00082">scheduler.hpp:82</a></div></div>
|
||||
</div><!-- fragment --><p>Otherwise, the <code>scheduler</code> alias is also available for the most common cases. It uses <code>std::uint32_t</code> as a default type:</p>
|
||||
<div class="fragment"><div class="line"><a class="code hl_class" href="classentt_1_1basic__scheduler.html">entt::scheduler</a> scheduler;</div>
|
||||
<div class="fragment"><div class="line"><a class="code hl_typedef" href="namespaceentt.html#afb4634a5b738455e0b6d35bb5444dbf4">entt::scheduler</a> scheduler;</div>
|
||||
<div class="ttc" id="anamespaceentt_html_afb4634a5b738455e0b6d35bb5444dbf4"><div class="ttname"><a href="namespaceentt.html#afb4634a5b738455e0b6d35bb5444dbf4">entt::scheduler</a></div><div class="ttdeci">basic_scheduler<> scheduler</div><div class="ttdoc">Alias declaration for the most common use case.</div><div class="ttdef"><b>Definition</b> <a href="process_2fwd_8hpp_source.html#l00016">fwd.hpp:16</a></div></div>
|
||||
</div><!-- fragment --><p>The class 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.empty();</div>
|
||||
<div class="line"><span class="keyword">const</span> <span class="keyword">auto</span> empty = scheduler.<a class="code hl_function" href="classentt_1_1basic__scheduler.html#a0148252d629fa78ebfe688519013c9c4">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 hl_typedef" href="classentt_1_1basic__scheduler.html#a65ce482b6daa9eb3117075b7d4eaecc7">entt::scheduler::size_type</a> size = scheduler.size();</div>
|
||||
<div class="line"><a class="code hl_typedef" href="classentt_1_1basic__scheduler.html#a65ce482b6daa9eb3117075b7d4eaecc7">entt::scheduler::size_type</a> size = scheduler.<a class="code hl_function" href="classentt_1_1basic__scheduler.html#a438e626f597bee890ab71d2d6d2c589f">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.clear();</div>
|
||||
<div class="ttc" id="aclassentt_1_1basic__scheduler_html_a65ce482b6daa9eb3117075b7d4eaecc7"><div class="ttname"><a href="classentt_1_1basic__scheduler.html#a65ce482b6daa9eb3117075b7d4eaecc7">entt::basic_scheduler::size_type</a></div><div class="ttdeci">std::size_t size_type</div><div class="ttdoc">Unsigned integer type.</div><div class="ttdef"><b>Definition</b> <a href="scheduler_8hpp_source.html#l00097">scheduler.hpp:97</a></div></div>
|
||||
</div><!-- fragment --><p>To attach a process to a scheduler there are mainly two ways:</p>
|
||||
<div class="line">scheduler.<a class="code hl_function" href="classentt_1_1basic__scheduler.html#ae92f6e2916a21e4225bb93cc747a90af">clear</a>();</div>
|
||||
<div class="ttc" id="aclassentt_1_1basic__scheduler_html_a0148252d629fa78ebfe688519013c9c4"><div class="ttname"><a href="classentt_1_1basic__scheduler.html#a0148252d629fa78ebfe688519013c9c4">entt::basic_scheduler::empty</a></div><div class="ttdeci">bool empty() const noexcept</div><div class="ttdoc">Returns true if at least a process is currently scheduled.</div><div class="ttdef"><b>Definition</b> <a href="scheduler_8hpp_source.html#l00181">scheduler.hpp:181</a></div></div>
|
||||
<div class="ttc" id="aclassentt_1_1basic__scheduler_html_a438e626f597bee890ab71d2d6d2c589f"><div class="ttname"><a href="classentt_1_1basic__scheduler.html#a438e626f597bee890ab71d2d6d2c589f">entt::basic_scheduler::size</a></div><div class="ttdeci">size_type size() const noexcept</div><div class="ttdoc">Number of processes currently scheduled.</div><div class="ttdef"><b>Definition</b> <a href="scheduler_8hpp_source.html#l00173">scheduler.hpp:173</a></div></div>
|
||||
<div class="ttc" id="aclassentt_1_1basic__scheduler_html_a65ce482b6daa9eb3117075b7d4eaecc7"><div class="ttname"><a href="classentt_1_1basic__scheduler.html#a65ce482b6daa9eb3117075b7d4eaecc7">entt::basic_scheduler<>::size_type</a></div><div class="ttdeci">std::size_t size_type</div><div class="ttdef"><b>Definition</b> <a href="scheduler_8hpp_source.html#l00097">scheduler.hpp:97</a></div></div>
|
||||
<div class="ttc" id="aclassentt_1_1basic__scheduler_html_ae92f6e2916a21e4225bb93cc747a90af"><div class="ttname"><a href="classentt_1_1basic__scheduler.html#ae92f6e2916a21e4225bb93cc747a90af">entt::basic_scheduler::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Discards all scheduled processes.</div><div class="ttdef"><b>Definition</b> <a href="scheduler_8hpp_source.html#l00191">scheduler.hpp:191</a></div></div>
|
||||
</div><!-- fragment --><p>To attach a process to a scheduler, there are mainly two ways:</p>
|
||||
<ul>
|
||||
<li><p class="startli">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:</p>
|
||||
<div class="fragment"><div class="line">scheduler.attach<my_process>(1000u);</div>
|
||||
<li><p class="startli">If the process inherits from the <code>process</code> class template, it is enough to indicate its type and submit all the parameters required to construct it to the <code>attach</code> member function:</p>
|
||||
<div class="fragment"><div class="line">scheduler.<a class="code hl_function" href="classentt_1_1basic__scheduler.html#afdde3b5231b2c45739f94b1a4206bce8">attach</a><my_process>(1000u);</div>
|
||||
<div class="ttc" id="aclassentt_1_1basic__scheduler_html_afdde3b5231b2c45739f94b1a4206bce8"><div class="ttname"><a href="classentt_1_1basic__scheduler.html#afdde3b5231b2c45739f94b1a4206bce8">entt::basic_scheduler::attach</a></div><div class="ttdeci">basic_scheduler & attach(Args &&...args)</div><div class="ttdoc">Schedules a process for the next tick.</div><div class="ttdef"><b>Definition</b> <a href="scheduler_8hpp_source.html#l00221">scheduler.hpp:221</a></div></div>
|
||||
</div><!-- fragment --></li>
|
||||
<li><p class="startli">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:</p>
|
||||
<div class="fragment"><div class="line">scheduler.attach([](<span class="keyword">auto</span>...){ <span class="comment">/* ... */</span> });</div>
|
||||
<li><p class="startli">Otherwise, in case of a lambda or a functor, it is enough to provide an instance of the class to the <code>attach</code> member function:</p>
|
||||
<div class="fragment"><div class="line">scheduler.<a class="code hl_function" href="classentt_1_1basic__scheduler.html#afdde3b5231b2c45739f94b1a4206bce8">attach</a>([](<span class="keyword">auto</span>...){ <span class="comment">/* ... */</span> });</div>
|
||||
</div><!-- fragment --></li>
|
||||
</ul>
|
||||
<p>In both cases, the scheduler is returned and its <code>then</code> member function can be used 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.attach([](<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">scheduler.<a class="code hl_function" href="classentt_1_1basic__scheduler.html#afdde3b5231b2c45739f94b1a4206bce8">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>
|
||||
@@ -194,21 +211,24 @@ The scheduler</h1>
|
||||
<div class="line">.then<my_process>(1000u);</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">scheduler.<a class="code hl_function" href="classentt_1_1basic__scheduler.html#aac8d0d131f7e1214c4191048762ccd09">update</a>(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, &data);</div>
|
||||
<div class="line">scheduler.<a class="code hl_function" href="classentt_1_1basic__scheduler.html#aac8d0d131f7e1214c4191048762ccd09">update</a>(delta, &data);</div>
|
||||
<div class="ttc" id="aclassentt_1_1basic__scheduler_html_aac8d0d131f7e1214c4191048762ccd09"><div class="ttname"><a href="classentt_1_1basic__scheduler.html#aac8d0d131f7e1214c4191048762ccd09">entt::basic_scheduler::update</a></div><div class="ttdeci">void update(const delta_type delta, void *data=nullptr)</div><div class="ttdoc">Updates all scheduled processes.</div><div class="ttdef"><b>Definition</b> <a href="scheduler_8hpp_source.html#l00326">scheduler.hpp:326</a></div></div>
|
||||
</div><!-- fragment --><p>In addition to these functions, the scheduler offers an <code>abort</code> member function that is 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">scheduler.<a class="code hl_function" href="classentt_1_1basic__scheduler.html#ab4995b2a91865c59e909057bfb010505">abort</a>(<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 class="line">scheduler.<a class="code hl_function" href="classentt_1_1basic__scheduler.html#ab4995b2a91865c59e909057bfb010505">abort</a>();</div>
|
||||
<div class="ttc" id="aclassentt_1_1basic__scheduler_html_ab4995b2a91865c59e909057bfb010505"><div class="ttname"><a href="classentt_1_1basic__scheduler.html#ab4995b2a91865c59e909057bfb010505">entt::basic_scheduler::abort</a></div><div class="ttdeci">void abort(const bool immediate=false)</div><div class="ttdoc">Aborts all scheduled processes.</div><div class="ttdef"><b>Definition</b> <a href="scheduler_8hpp_source.html#l00352">scheduler.hpp:352</a></div></div>
|
||||
</div><!-- fragment --> </div></div><!-- contents -->
|
||||
</div><!-- PageDoc -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0
|
||||
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2
|
||||
</small></address>
|
||||
</div><!-- doc-content -->
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user