| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- <!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" lang="en-US">
- <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.12.0"/>
- <meta name="viewport" content="width=device-width, initial-scale=1"/>
- <title>Jolt Physics: TempAllocator 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>
- <script type="text/javascript" src="clipboard.js"></script>
- <link href="navtree.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="navtreedata.js"></script>
- <script type="text/javascript" src="navtree.js"></script>
- <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>
- <script type="text/javascript" src="search/search.js"></script>
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({
- extensions: ["tex2jax.js"],
- jax: ["input/TeX","output/HTML-CSS"],
- });
- </script>
- <script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.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 id="projectrow">
- <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
- <td id="projectalign">
- <div id="projectname">Jolt Physics
- </div>
- <div id="projectbrief">A multi core friendly Game Physics Engine</div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- end header part -->
- <!-- Generated by Doxygen 1.12.0 -->
- <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',true);
- $(function() { init_search(); });
- });
- /* @license-end */
- </script>
- <div id="main-nav"></div>
- </div><!-- top -->
- <div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
- </div>
- <script type="text/javascript">
- /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
- $(function(){initNavTree('class_temp_allocator.html',''); initResizable(true); });
- /* @license-end */
- </script>
- <div id="doc-content">
- <!-- 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">
- <div id="MSearchResults">
- <div class="SRPage">
- <div id="SRIndex">
- <div id="SRResults"></div>
- <div class="SRStatus" id="Loading">Loading...</div>
- <div class="SRStatus" id="Searching">Searching...</div>
- <div class="SRStatus" id="NoMatches">No Matches</div>
- </div>
- </div>
- </div>
- </div>
- <div class="header">
- <div class="summary">
- <a href="#pub-methods">Public Member Functions</a> |
- <a href="#pub-static-attribs">Static Public Attributes</a> |
- <a href="class_temp_allocator-members.html">List of all members</a> </div>
- <div class="headertitle"><div class="title">TempAllocator Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
- </div><!--header-->
- <div class="contents">
- <p><code>#include <<a class="el" href="_temp_allocator_8h_source.html">TempAllocator.h</a>></code></p>
- <div class="dynheader">
- Inheritance diagram for TempAllocator:</div>
- <div class="dyncontent">
- <div class="center">
- <img src="class_temp_allocator.png" usemap="#TempAllocator_map" alt=""/>
- <map id="TempAllocator_map" name="TempAllocator_map">
- <area href="class_non_copyable.html" title="Class that makes another class non-copyable. Usage: Inherit from NonCopyable." alt="NonCopyable" shape="rect" coords="235,0,460,24"/>
- <area href="class_temp_allocator_impl.html" title="Default implementation of the temp allocator that allocates a large block through malloc upfront." alt="TempAllocatorImpl" shape="rect" coords="0,112,225,136"/>
- <area href="class_temp_allocator_impl_with_malloc_fallback.html" title="Implementation of the TempAllocator that tries to allocate from a large preallocated block,..." alt="TempAllocatorImplWithMallocFallback" shape="rect" coords="235,112,460,136"/>
- <area href="class_temp_allocator_malloc.html" alt="TempAllocatorMalloc" shape="rect" coords="470,112,695,136"/>
- </map>
- </div></div>
- <table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
- Public Member Functions</h2></td></tr>
- <tr class="memitem:ab44895b2fff0b5814a3903b5cae60912" id="r_ab44895b2fff0b5814a3903b5cae60912"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab44895b2fff0b5814a3903b5cae60912">~TempAllocator</a> ()=default</td></tr>
- <tr class="memdesc:ab44895b2fff0b5814a3903b5cae60912"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br /></td></tr>
- <tr class="separator:ab44895b2fff0b5814a3903b5cae60912"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:aa62f890910ee965efea7244953f3c65e" id="r_aa62f890910ee965efea7244953f3c65e"><td class="memItemLeft" align="right" valign="top">virtual void * </td><td class="memItemRight" valign="bottom"><a class="el" href="#aa62f890910ee965efea7244953f3c65e">Allocate</a> (<a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> inSize)=0</td></tr>
- <tr class="memdesc:aa62f890910ee965efea7244953f3c65e"><td class="mdescLeft"> </td><td class="mdescRight">Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned. <br /></td></tr>
- <tr class="separator:aa62f890910ee965efea7244953f3c65e"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a1d9399cbf93c253a7f03d8ffea249bfe" id="r_a1d9399cbf93c253a7f03d8ffea249bfe"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a1d9399cbf93c253a7f03d8ffea249bfe">Free</a> (void *inAddress, <a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> inSize)=0</td></tr>
- <tr class="memdesc:a1d9399cbf93c253a7f03d8ffea249bfe"><td class="mdescLeft"> </td><td class="mdescRight">Frees inSize bytes of memory located at inAddress. <br /></td></tr>
- <tr class="separator:a1d9399cbf93c253a7f03d8ffea249bfe"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="inherit_header pub_methods_class_non_copyable"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_class_non_copyable')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_non_copyable.html">NonCopyable</a></td></tr>
- <tr class="memitem:a809b6e4ade7ae32f6d248f2a3b783d45 inherit pub_methods_class_non_copyable" id="r_a809b6e4ade7ae32f6d248f2a3b783d45"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#a809b6e4ade7ae32f6d248f2a3b783d45">NonCopyable</a> ()=default</td></tr>
- <tr class="separator:a809b6e4ade7ae32f6d248f2a3b783d45 inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a501d34ffcc34b30de6d541887a901057 inherit pub_methods_class_non_copyable" id="r_a501d34ffcc34b30de6d541887a901057"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#a501d34ffcc34b30de6d541887a901057">NonCopyable</a> (const <a class="el" href="class_non_copyable.html">NonCopyable</a> &)=delete</td></tr>
- <tr class="separator:a501d34ffcc34b30de6d541887a901057 inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:aaf9b12dcaae80c9d304df7a941d4e21f inherit pub_methods_class_non_copyable" id="r_aaf9b12dcaae80c9d304df7a941d4e21f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#aaf9b12dcaae80c9d304df7a941d4e21f">operator=</a> (const <a class="el" href="class_non_copyable.html">NonCopyable</a> &)=delete</td></tr>
- <tr class="separator:aaf9b12dcaae80c9d304df7a941d4e21f inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2"> </td></tr>
- </table><table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
- Static Public Attributes</h2></td></tr>
- <tr class="memitem:a6a58502ba1dcf02113fda640acf49fd9" id="r_a6a58502ba1dcf02113fda640acf49fd9"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a> constexpr bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a6a58502ba1dcf02113fda640acf49fd9">needs_aligned_allocate</a> = <a class="el" href="_real_8h.html#ac6a49178acb5c5ecdbab2424aca0e474">JPH_RVECTOR_ALIGNMENT</a> > <a class="el" href="_core_8h.html#a25f22c6e1ee09e17aef6d6c1e9e6ce63">JPH_DEFAULT_ALLOCATE_ALIGNMENT</a></td></tr>
- <tr class="memdesc:a6a58502ba1dcf02113fda640acf49fd9"><td class="mdescLeft"> </td><td class="mdescRight">If this allocator needs to fall back to aligned allocations because JPH_RVECTOR_ALIGNMENT is bigger than the platform default. <br /></td></tr>
- <tr class="separator:a6a58502ba1dcf02113fda640acf49fd9"><td class="memSeparator" colspan="2"> </td></tr>
- </table>
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
- <div class="textblock"><p>Allocator for temporary allocations. This allocator works as a stack: The blocks must always be freed in the reverse order as they are allocated. Note that allocations and frees can take place from different threads, but the order is guaranteed though job dependencies, so it is not needed to use any form of locking. </p>
- </div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
- <a id="ab44895b2fff0b5814a3903b5cae60912" name="ab44895b2fff0b5814a3903b5cae60912"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ab44895b2fff0b5814a3903b5cae60912">◆ </a></span>~TempAllocator()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual TempAllocator::~TempAllocator </td>
- <td>(</td>
- <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Destructor. </p>
- </div>
- </div>
- <h2 class="groupheader">Member Function Documentation</h2>
- <a id="aa62f890910ee965efea7244953f3c65e" name="aa62f890910ee965efea7244953f3c65e"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#aa62f890910ee965efea7244953f3c65e">◆ </a></span>Allocate()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void * TempAllocator::Allocate </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></td> <td class="paramname"><span class="paramname"><em>inSize</em></span></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned. </p>
- <p>Implemented in <a class="el" href="class_temp_allocator_impl.html#adf9ef85969afed92a4fb14b1e6ff1ac5">TempAllocatorImpl</a>, <a class="el" href="class_temp_allocator_impl_with_malloc_fallback.html#ac20fa2756768654e3228e40b17ed6656">TempAllocatorImplWithMallocFallback</a>, and <a class="el" href="class_temp_allocator_malloc.html#a985a35b24e08ce333e10a712578458e6">TempAllocatorMalloc</a>.</p>
- </div>
- </div>
- <a id="a1d9399cbf93c253a7f03d8ffea249bfe" name="a1d9399cbf93c253a7f03d8ffea249bfe"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a1d9399cbf93c253a7f03d8ffea249bfe">◆ </a></span>Free()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void TempAllocator::Free </td>
- <td>(</td>
- <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>inAddress</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></td> <td class="paramname"><span class="paramname"><em>inSize</em></span> )</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Frees inSize bytes of memory located at inAddress. </p>
- <p>Implemented in <a class="el" href="class_temp_allocator_impl.html#aa7b2ea67b67c57c776d4c2a415b430ba">TempAllocatorImpl</a>, <a class="el" href="class_temp_allocator_impl_with_malloc_fallback.html#a2cdead10d53265be2316934e55684b29">TempAllocatorImplWithMallocFallback</a>, and <a class="el" href="class_temp_allocator_malloc.html#a03b9827f7300d701f22d6ca53ba9d686">TempAllocatorMalloc</a>.</p>
- </div>
- </div>
- <h2 class="groupheader">Member Data Documentation</h2>
- <a id="a6a58502ba1dcf02113fda640acf49fd9" name="a6a58502ba1dcf02113fda640acf49fd9"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a6a58502ba1dcf02113fda640acf49fd9">◆ </a></span>needs_aligned_allocate</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="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a> constexpr bool TempAllocator::needs_aligned_allocate = <a class="el" href="_real_8h.html#ac6a49178acb5c5ecdbab2424aca0e474">JPH_RVECTOR_ALIGNMENT</a> > <a class="el" href="_core_8h.html#a25f22c6e1ee09e17aef6d6c1e9e6ce63">JPH_DEFAULT_ALLOCATE_ALIGNMENT</a></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>If this allocator needs to fall back to aligned allocations because JPH_RVECTOR_ALIGNMENT is bigger than the platform default. </p>
- </div>
- </div>
- <hr/>The documentation for this class was generated from the following file:<ul>
- <li>Jolt/Core/<a class="el" href="_temp_allocator_8h_source.html">TempAllocator.h</a></li>
- </ul>
- </div><!-- contents -->
- </div><!-- doc-content -->
- <!-- start footer part -->
- <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- <li class="navelem"><a class="el" href="class_temp_allocator.html">TempAllocator</a></li>
- <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
- </ul>
- </div>
- </body>
- </html>
|