1 Star 0 Fork 0

mobangjack / memory

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
classfoonathan_1_1memory_1_1temporary__stack.html 14.36 KB
一键复制 编辑 原始数据 按行查看 历史
Jonathan Müller 提交于 2020-05-05 17:04 . Update documentation
<!-- 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> &#124;
<a href="#pub-methods">Member Functions</a> &#124;
<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&#160;</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">&#160;</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">&#160;</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>&#160;</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">&#160;</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>&#160;</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">&#160;</td></tr>
<tr class="memitem:aa79d41fd7d06f04435b2c39c82cf7432"><td class="memItemLeft" align="right" valign="top">&#160;</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">&#160;</td></tr>
<tr class="memitem:af4fe037332aabd13253517d22394da73"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</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">&#160;</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> &amp;&#160;</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">&#160;</td></tr>
</table>
<h2 class="groupheader">Typedefs</h2>
<a id="a85943621227f96ab24e6df0af87a64cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85943621227f96ab24e6df0af87a64cf">&#9670;&nbsp;</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">&#9670;&nbsp;</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&#160;</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">&#9670;&nbsp;</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>&#160;</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">&#9670;&nbsp;</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">&#9670;&nbsp;</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">&#9670;&nbsp;</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> &amp; get_temporary_stack </td>
<td>(</td>
<td class="paramtype">std::size_t&#160;</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 &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
1
https://gitee.com/mobangjack/memory.git
git@gitee.com:mobangjack/memory.git
mobangjack
memory
memory
gh-pages

搜索帮助