代码拉取完成,页面将自动刷新
<!-- HTML header for doxygen 1.8.16-->
<!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.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>memory: temporary_stack Class 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="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">memory
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="main-nav">
<ul class="sm sm-dox" id="main-menu">
<li><a href="index.html">Main Page</a></li>
<li><a href="md_doc_tutorial.html">Tutorial</a></li>
<li><a href="namespacefoonathan_1_1memory.html">Index</a></li>
<li><a href="files.html">Files</a></li>
</ul>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacefoonathan.html">foonathan</a></li><li class="navelem"><a class="el" href="namespacefoonathan_1_1memory.html">memory</a></li><li class="navelem"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html">temporary_stack</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Typedefs</a> |
<a href="#pub-methods">Member Functions</a> |
<a href="#related">Related Functions</a> </div>
<div class="headertitle">
<div class="title">temporary_stack Class Reference<div class="ingroups"><a class="el" href="group__allocator.html">Allocator implementations</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A wrapper around the <a class="el" href="classfoonathan_1_1memory_1_1memory__stack.html">memory_stack</a> that is used by the <a class="el" href="classfoonathan_1_1memory_1_1temporary__allocator.html">temporary_allocator</a>. </p>
<p>There should be at least one per-thread. </p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a85943621227f96ab24e6df0af87a64cf"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a> = detail::temporary_block_allocator::growth_tracker</td></tr>
<tr class="memdesc:a85943621227f96ab24e6df0af87a64cf"><td class="mdescLeft"> </td><td class="mdescRight">The type of the handler called when the internal <a class="el" href="classfoonathan_1_1memory_1_1memory__stack.html">memory_stack</a> grows. <a href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">More...</a><br /></td></tr>
<tr class="separator:a85943621227f96ab24e6df0af87a64cf"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Member Functions</h2></td></tr>
<tr class="memitem:a65e258b332fbef3a9fa9ae14cd7278fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a65e258b332fbef3a9fa9ae14cd7278fb">set_growth_tracker</a> (<a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a> t) noexcept</td></tr>
<tr class="separator:a65e258b332fbef3a9fa9ae14cd7278fb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6d11f872439d00ba89cd9d7fc53c2644"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a6d11f872439d00ba89cd9d7fc53c2644">get_growth_tracker</a> () noexcept</td></tr>
<tr class="separator:a6d11f872439d00ba89cd9d7fc53c2644"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa79d41fd7d06f04435b2c39c82cf7432"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#aa79d41fd7d06f04435b2c39c82cf7432">temporary_stack</a> (std::size_t initial_size)</td></tr>
<tr class="separator:aa79d41fd7d06f04435b2c39c82cf7432"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af4fe037332aabd13253517d22394da73"><td class="memItemLeft" align="right" valign="top">std::size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#af4fe037332aabd13253517d22394da73">next_capacity</a> () const noexcept</td></tr>
<tr class="separator:af4fe037332aabd13253517d22394da73"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="related"></a>
Related Functions</h2></td></tr>
<tr class="memitem:a7f311d60d4857926d16396fc6a3be15a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html">temporary_stack</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a7f311d60d4857926d16396fc6a3be15a">get_temporary_stack</a> (std::size_t initial_size=temporary_stack_initializer::default_stack_size)</td></tr>
<tr class="separator:a7f311d60d4857926d16396fc6a3be15a"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<h2 class="groupheader">Typedefs</h2>
<a id="a85943621227f96ab24e6df0af87a64cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85943621227f96ab24e6df0af87a64cf">◆ </a></span>growth_tracker</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a> = detail::temporary_block_allocator::growth_tracker</td>
</tr>
</table>
</div><div class="memdoc">
<p>The type of the handler called when the internal <a class="el" href="classfoonathan_1_1memory_1_1memory__stack.html">memory_stack</a> grows. </p>
<p>It gets the size of the new block that will be allocated. </p><dl class="section user"><dt>Required Behavior:</dt><dd>The handler shall log the growth, throw an exception or aborts the program. If this function does not return, the growth is prevented but the allocator unusable until memory is freed. </dd></dl>
<dl class="section user"><dt>Default Behavior:</dt><dd>The default handler does nothing. </dd></dl>
</div>
</div>
<h2 class="groupheader">Constructors</h2>
<a id="aa79d41fd7d06f04435b2c39c82cf7432"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa79d41fd7d06f04435b2c39c82cf7432">◆ </a></span>temporary_stack()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html">temporary_stack</a> </td>
<td>(</td>
<td class="paramtype">std::size_t </td>
<td class="paramname"><em>initial_size</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Creates it with a given initial size of the stack. It can grow if needed, although that is expensive. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd><code>initial_size</code> must be greater than <code>0</code>. </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Functions</h2>
<a id="a65e258b332fbef3a9fa9ae14cd7278fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65e258b332fbef3a9fa9ae14cd7278fb">◆ </a></span>set_growth_tracker()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a> set_growth_tracker </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a> </td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Sets <code>h</code> as the new <a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a>. A <code>nullptr</code> sets the default <a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a>. Each thread has its own, separate tracker. </dd></dl>
<dl class="section user"><dt>Returns:</dt><dd>The previous <a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a>. This is never <code>nullptr</code>. </dd></dl>
</div>
</div>
<a id="a6d11f872439d00ba89cd9d7fc53c2644"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d11f872439d00ba89cd9d7fc53c2644">◆ </a></span>get_growth_tracker()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a> get_growth_tracker </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Returns:</dt><dd>The current <a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html#a85943621227f96ab24e6df0af87a64cf">growth_tracker</a>. This is never <code>nullptr</code>. </dd></dl>
</div>
</div>
<a id="af4fe037332aabd13253517d22394da73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4fe037332aabd13253517d22394da73">◆ </a></span>next_capacity()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::size_t next_capacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Returns:</dt><dd><code>next_capacity()</code> of the internal <code>memory_stack</code>. </dd></dl>
</div>
</div>
<h2 class="groupheader">Related Functions</h2>
<a id="a7f311d60d4857926d16396fc6a3be15a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f311d60d4857926d16396fc6a3be15a">◆ </a></span>get_temporary_stack()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html">temporary_stack</a> & get_temporary_stack </td>
<td>(</td>
<td class="paramtype">std::size_t </td>
<td class="paramname"><em>initial_size</em> = <code>temporary_stack_initializer::default_stack_size</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Creates the per-thread <a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html">temporary_stack</a> with the given initial size, if it wasn't already created. </dd></dl>
<dl class="section user"><dt>Returns:</dt><dd>The per-thread <a class="el" href="classfoonathan_1_1memory_1_1temporary__stack.html">temporary_stack</a>. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd>There must be a per-thread temporary stack (<a class="el" href="group__allocator.html#ga49bf0d04a94c18512ef2890157412b71">FOONATHAN_MEMORY_TEMPORARY_STACK_MODE</a> must not be equal to <code>0</code>). </dd></dl>
<dl class="section note"><dt>Note</dt><dd>If <a class="el" href="group__allocator.html#ga49bf0d04a94c18512ef2890157412b71">FOONATHAN_MEMORY_TEMPORARY_STACK_MODE</a> is equal to <code>1</code>, this function can create the temporary stack. But if there is no <a class="el" href="classfoonathan_1_1memory_1_1temporary__stack__initializer.html">temporary_stack_initializer</a>, it won't be destroyed. </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.16-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。