continuable/namespacecti_1_1transforms.html
Denis Blank 94dc953ba9 Publish
2023-03-21 21:05:30 +01:00

287 lines
20 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>cti::transforms namespace | Continuable</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<link rel="stylesheet" href="base.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<link rel="stylesheet" href="terminal.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<link rel="stylesheet" href="atom-one-dark.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#23373B" />
</head>
<body>
<header><nav id="navigation">
<div class="m-container">
<div class="m-row">
<a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">Continuable <span class="m-thin">4.1.0</span></a>
<div class="m-col-t-4 m-hide-m m-text-right m-nopadr">
<a href="#search" class="m-dox-search-icon" title="Search" onclick="return showSearch()"><svg style="height: 0.9rem;" viewBox="0 0 16 16">
<path d="m6 0c-3.3144 0-6 2.6856-6 6 0 3.3144 2.6856 6 6 6 1.4858 0 2.8463-0.54083 3.8945-1.4355-0.0164 0.33797 0.14734 0.75854 0.5 1.1504l3.2227 3.7891c0.55185 0.6139 1.4517 0.66544 2.002 0.11524 0.55022-0.55022 0.49866-1.4501-0.11524-2.002l-3.7891-3.2246c-0.39184-0.35266-0.81242-0.51469-1.1504-0.5 0.89472-1.0482 1.4355-2.4088 1.4355-3.8945 0-3.3128-2.6856-5.998-6-5.998zm0 1.5625a4.4375 4.4375 0 0 1 4.4375 4.4375 4.4375 4.4375 0 0 1-4.4375 4.4375 4.4375 4.4375 0 0 1-4.4375-4.4375 4.4375 4.4375 0 0 1 4.4375-4.4375z"/>
</svg></a>
<a id="m-navbar-show" href="#navigation" title="Show navigation"></a>
<a id="m-navbar-hide" href="#" title="Hide navigation"></a>
</div>
<div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
<div class="m-row">
<ol class="m-col-t-6 m-col-m-none">
<li>
<a href="tutorial.html">Tutorial</a>
<ol>
<li><a href="tutorial-creating-continuables.html">Creating continuables</a></li>
<li><a href="tutorial-chaining-continuables.html">Chaining continuables</a></li>
<li><a href="tutorial-connecting-continuables.html">Connecting continuables</a></li>
<li><a href="tutorial-transforming-continuables.html">Transforming continuables</a></li>
<li><a href="tutorial-awaiting-continuables.html">Awaiting continuables</a></li>
<li><a href="tutorial-promisify-continuables.html">Promisify functions</a></li>
</ol>
</li>
<li>
<a href="pages.html">Pages</a>
<ol>
<li><a href="installation.html">Installation</a></li>
<li><a href="tutorial.html">Tutorial</a></li>
<li><a href="configuration.html">Configuration</a></li>
<li><a href="changelog.html">Changelog</a></li>
</ol>
</li>
<li>
<a href="modules.html">Modules</a>
<ol>
<li><a href="group___base.html">Base</a></li>
<li><a href="group___connections.html">Connections</a></li>
<li><a href="group___promisify.html">Promisify</a></li>
<li><a href="group___testing.html">Testing</a></li>
<li><a href="group___types.html">Types</a></li>
<li><a href="group___transforms.html">Transforms</a></li>
<li><a href="group___traversal.html">Traversal</a></li>
</ol>
</li>
</ol>
<ol class="m-col-t-6 m-col-m-none" start="4">
<li>
<a href="namespacecti.html">cti</a>
<ol>
<li><a href="namespacecti_1_1transforms.html" id="m-navbar-current">cti::transforms</a></li>
<li><a href="classcti_1_1continuable__base.html">cti::continuable_base</a></li>
<li><a href="classcti_1_1promise__base.html">cti::promise_base</a></li>
</ol>
</li>
<li class="m-show-m"><a href="#search" class="m-dox-search-icon" title="Search" onclick="return showSearch()"><svg style="height: 0.9rem;" viewBox="0 0 16 16">
<path d="m6 0c-3.3144 0-6 2.6856-6 6 0 3.3144 2.6856 6 6 6 1.4858 0 2.8463-0.54083 3.8945-1.4355-0.0164 0.33797 0.14734 0.75854 0.5 1.1504l3.2227 3.7891c0.55185 0.6139 1.4517 0.66544 2.002 0.11524 0.55022-0.55022 0.49866-1.4501-0.11524-2.002l-3.7891-3.2246c-0.39184-0.35266-0.81242-0.51469-1.1504-0.5 0.89472-1.0482 1.4355-2.4088 1.4355-3.8945 0-3.3128-2.6856-5.998-6-5.998zm0 1.5625a4.4375 4.4375 0 0 1 4.4375 4.4375 4.4375 4.4375 0 0 1-4.4375 4.4375 4.4375 4.4375 0 0 1-4.4375-4.4375 4.4375 4.4375 0 0 1 4.4375-4.4375z"/>
</svg> Search</a></li>
</ol>
<ol class="m-col-t-6 m-col-m-none">
<li>
<a href="https://github.com/Naios/continuable" aria-label="View source on Github"><i class="fa fa-github"></i> Code</a>
</li>
</ol>
</div>
</div>
</div>
</div>
</nav></header>
<main><article>
<div class="m-container m-container-inflatable">
<div class="m-row">
<div class="m-col-l-10 m-push-l-1">
<h1>
<span class="m-breadcrumb"><a href="namespacecti.html">cti</a>::<wbr/></span>transforms <span class="m-thin">namespace</span>
</h1>
<p>The namespace transforms declares callable objects that transform any <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> to an object or to a <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> itself.</p>
<div class="m-block m-default">
<h3>Contents</h3>
<ul>
<li>
Reference
<ul>
<li><a href="#func-members">Functions</a></li>
</ul>
</li>
</ul>
</div>
<p>Transforms can be applied to continuables through using the <a href="classcti_1_1continuable__base.html#abcf4cf105aa17826bcc3c2278f6ea1b5" class="m-dox">cti::<wbr />continuable_base::<wbr />apply</a> method accordingly.</p>
<section id="func-members">
<h2><a href="#func-members">Functions</a></h2>
<dl class="m-dox">
<dt>
<span class="m-dox-wrap-bumper">auto <a href="#a4b98e7d3680486c926b64cd07a6adadb" class="m-dox">to_future</a>(</span><span class="m-dox-wrap">) -&gt; auto</span>
</dt>
<dd>Returns a transform that if applied to a continuable, it will start the continuation chain and returns the asynchronous result as <code>std::future&lt;...&gt;</code>.</dd>
<dt>
<span class="m-dox-wrap-bumper">auto <a href="#a087d7b1c359b9f7d4a89d201d8493416" class="m-dox">wait</a>(</span><span class="m-dox-wrap">) -&gt; auto</span>
</dt>
<dd>Returns a transform that if applied to a continuable, it will start the continuation chain and returns the result synchronously. The current thread is blocked until the continuation chain is finished.</dd>
<dt>
<div class="m-dox-template">template&lt;typename Rep, typename Period&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="#a46d91cdd1e5153ca4a7f42fda616dd34" class="m-dox">wait_for</a>(</span><span class="m-dox-wrap">std::chrono::duration&lt;Rep, Period&gt; duration) -&gt; auto</span>
</dt>
<dd>Returns a transform that if applied to a continuable, it will start the continuation chain and returns the result synchronously. The current thread is blocked until the continuation chain is finished.</dd>
<dt>
<div class="m-dox-template">template&lt;typename Clock, typename Duration&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="#aad924bf66494a6bb199192d7af2b8aea" class="m-dox">wait_until</a>(</span><span class="m-dox-wrap">std::chrono::time_point&lt;Clock, Duration&gt; time_point) -&gt; auto</span>
</dt>
<dd>Returns a transform that if applied to a continuable, it will start the continuation chain and returns the result synchronously. The current thread is blocked until the continuation chain is finished.</dd>
</dl>
</section>
<section>
<h2>Function documentation</h2>
<section class="m-dox-details" id="a4b98e7d3680486c926b64cd07a6adadb"><div>
<h3>
<span class="m-dox-wrap-bumper">auto cti::<wbr />transforms::<wbr /></span><span class="m-dox-wrap"><span class="m-dox-wrap-bumper"><a href="#a4b98e7d3680486c926b64cd07a6adadb" class="m-dox-self">to_future</a>(</span><span class="m-dox-wrap">)</span></span>
</h3>
<p>Returns a transform that if applied to a continuable, it will start the continuation chain and returns the asynchronous result as <code>std::future&lt;...&gt;</code>.</p>
<table class="m-table m-fullwidth m-flat">
<tfoot>
<tr>
<th style="width: 1%">Returns</th>
<td><p>Returns a <code>std::future&lt;...&gt;</code> which becomes ready as soon as the the continuation chain has finished. The signature of the future depends on the result type:</p><table class="m-table"><thead><tr><th>Continuation type</th><th>Return type</th></tr></thead><tbody><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;&gt;</code></td><td><code>std::future&lt;void&gt;</code></td></tr><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;Arg&gt;</code></td><td><code>std::future&lt;Arg&gt;</code></td></tr><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;Args...&gt;</code></td><td><code>std::future&lt;std::tuple&lt;Args...&gt;&gt;</code></td></tr></tbody></table></td>
</tr>
</tfoot>
</table>
<aside class="m-note m-warning"><h4>Attention</h4><p>If exceptions are used, exceptions that are thrown, are forwarded to the returned future. If there are no exceptions supported, you shall not pass any errors to the end of the asynchronous call chain! Otherwise this will yield a trap that causes application exit.</p></aside><aside class="m-note m-default"><h4>Since</h4><p>2.0.0</p></aside>
</div></section>
<section class="m-dox-details" id="a087d7b1c359b9f7d4a89d201d8493416"><div>
<h3>
<span class="m-dox-wrap-bumper">auto cti::<wbr />transforms::<wbr /></span><span class="m-dox-wrap"><span class="m-dox-wrap-bumper"><a href="#a087d7b1c359b9f7d4a89d201d8493416" class="m-dox-self">wait</a>(</span><span class="m-dox-wrap">)</span></span>
</h3>
<p>Returns a transform that if applied to a continuable, it will start the continuation chain and returns the result synchronously. The current thread is blocked until the continuation chain is finished.</p>
<table class="m-table m-fullwidth m-flat">
<thead>
<tr>
<th style="width: 1%">Returns</th>
<td><p>Returns a value that is available immediately. The signature of the future depends on the result type:</p><table class="m-table"><thead><tr><th>Continuation type</th><th>Return type</th></tr></thead><tbody><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;&gt;</code></td><td><code>void</code></td></tr><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;Arg&gt;</code></td><td><code>Arg</code></td></tr><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;Args...&gt;</code></td><td><code>std::tuple&lt;Args...&gt;</code></td></tr></tbody></table></td>
</tr>
</thead>
<thead>
<tr><th colspan="2">Exceptions</th></tr>
</thead>
<tbody>
<tr>
<td>wait_transform_canceled_exception</td>
<td>if the awaited <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> is cancelled, and thus was resolved with a default constructed exception type.</td>
</tr>
</tbody>
</table>
<aside class="m-note m-warning"><h4>Attention</h4><p>If exceptions are used, exceptions that are thrown, are rethrown synchronously.</p></aside><aside class="m-note m-default"><h4>Since</h4><p>4.0.0</p></aside>
</div></section>
<section class="m-dox-details" id="a46d91cdd1e5153ca4a7f42fda616dd34"><div>
<h3>
<div class="m-dox-template">
template&lt;typename Rep, typename Period&gt;
</div>
<span class="m-dox-wrap-bumper">auto cti::<wbr />transforms::<wbr /></span><span class="m-dox-wrap"><span class="m-dox-wrap-bumper"><a href="#a46d91cdd1e5153ca4a7f42fda616dd34" class="m-dox-self">wait_for</a>(</span><span class="m-dox-wrap">std::chrono::duration&lt;Rep, Period&gt; duration)</span></span>
</h3>
<p>Returns a transform that if applied to a continuable, it will start the continuation chain and returns the result synchronously. The current thread is blocked until the continuation chain is finished.</p>
<table class="m-table m-fullwidth m-flat">
<tfoot>
<tr>
<th style="width: 1%">Returns</th>
<td><p>Returns a result that is available immediately. The signature of the future depends on the result type:</p><table class="m-table"><thead><tr><th>Continuation type</th><th>Return type</th></tr></thead><tbody><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;&gt;</code></td><td><code>result&lt;&gt;</code></td></tr><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;Arg&gt;</code></td><td><code>result&lt;Arg&gt;</code></td></tr><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;Args...&gt;</code></td><td><code>result&lt;Args...&gt;</code></td></tr></tbody></table></td>
</tr>
</tfoot>
</table>
<aside class="m-note m-warning"><h4>Attention</h4><p>Thrown exceptions returned through the result, also make sure to check for a valid result value in case the underlying time constraint timed out.</p></aside><aside class="m-note m-default"><h4>Since</h4><p>4.0.0</p></aside>
</div></section>
<section class="m-dox-details" id="aad924bf66494a6bb199192d7af2b8aea"><div>
<h3>
<div class="m-dox-template">
template&lt;typename Clock, typename Duration&gt;
</div>
<span class="m-dox-wrap-bumper">auto cti::<wbr />transforms::<wbr /></span><span class="m-dox-wrap"><span class="m-dox-wrap-bumper"><a href="#aad924bf66494a6bb199192d7af2b8aea" class="m-dox-self">wait_until</a>(</span><span class="m-dox-wrap">std::chrono::time_point&lt;Clock, Duration&gt; time_point)</span></span>
</h3>
<p>Returns a transform that if applied to a continuable, it will start the continuation chain and returns the result synchronously. The current thread is blocked until the continuation chain is finished.</p>
<table class="m-table m-fullwidth m-flat">
<tfoot>
<tr>
<th style="width: 1%">Returns</th>
<td><p>Returns a result that is available immediately. The signature of the future depends on the result type:</p><table class="m-table"><thead><tr><th>Continuation type</th><th>Return type</th></tr></thead><tbody><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;&gt;</code></td><td><code>result&lt;&gt;</code></td></tr><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;Arg&gt;</code></td><td><code>result&lt;Arg&gt;</code></td></tr><tr><td><code><a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with &lt;Args...&gt;</code></td><td><code>result&lt;Args...&gt;</code></td></tr></tbody></table></td>
</tr>
</tfoot>
</table>
<aside class="m-note m-warning"><h4>Attention</h4><p>Thrown exceptions returned through the result, also make sure to check for a valid result value in case the underlying time constraint timed out.</p></aside><aside class="m-note m-default"><h4>Since</h4><p>4.0.0</p></aside>
</div></section>
</section>
</div>
</div>
</div>
</article></main>
<div class="m-dox-search" id="search">
<a href="#!" onclick="return hideSearch()"></a>
<div class="m-container">
<div class="m-row">
<div class="m-col-m-8 m-push-m-2">
<div class="m-dox-search-header m-text m-small">
<div><span class="m-label m-default">Tab</span> / <span class="m-label m-default">T</span> to search, <span class="m-label m-default">Esc</span> to close</div>
<div id="search-symbolcount">&hellip;</div>
</div>
<div class="m-dox-search-content">
<form>
<input type="search" name="q" id="search-input" placeholder="Loading &hellip;" disabled="disabled" autofocus="autofocus" autocomplete="off" spellcheck="false" />
</form>
<noscript class="m-text m-danger m-text-center">Unlike everything else in the docs, the search functionality <em>requires</em> JavaScript.</noscript>
<div id="search-help" class="m-text m-dim m-text-center">
<p class="m-noindent">Search for symbols, directories, files, pages or
modules. You can omit any prefix from the symbol or file path; adding a
<code>:</code> or <code>/</code> suffix lists all members of given symbol or
directory.</p>
<p class="m-noindent">Use <span class="m-label m-dim">&darr;</span>
/ <span class="m-label m-dim">&uarr;</span> to navigate through the list,
<span class="m-label m-dim">Enter</span> to go.
<span class="m-label m-dim">Tab</span> autocompletes common prefix, you can
copy a link to the result using <span class="m-label m-dim"></span>
<span class="m-label m-dim">L</span> while <span class="m-label m-dim"></span>
<span class="m-label m-dim">M</span> produces a Markdown link.</p>
</div>
<div id="search-notfound" class="m-text m-warning m-text-center">Sorry, nothing was found.</div>
<ul id="search-results"></ul>
</div>
</div>
</div>
</div>
</div>
<script src="search.js"></script>
<script src="searchdata.js" async="async"></script>
<footer><nav>
<div class="m-container">
<div class="m-row">
<div class="m-col-l-10 m-push-l-1">
<b><a
href="https://github.com/Naios/continuable">continuable</a></b>
-
C++14
allocation
aware
futures</br>Copyright
2015&ndash;2020
<a
href="https://github.com/Naios">Denis
Blank</a>.
Contact
the
author
via
<a
href="mailto:denis.blank@outlook.com">e-mail</a>.</br>Powered
by
<a
href="http://doxygen.org/">Doxygen</a>
and
<a
href="http://mcss.mosra.cz/">m.css</a>
</div>
</div>
</div>
</nav></footer>
</body>
</html>