class_data_chunker.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=11"/>
  6. <meta name="generator" content="Doxygen 1.9.8"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>Torque2D Reference: DataChunker Class Reference</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  13. <script type="text/javascript" src="search/searchdata.js"></script>
  14. <script type="text/javascript" src="search/search.js"></script>
  15. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  16. <link href="t2d-stylesheet-extra.css" rel="stylesheet" type="text/css"/>
  17. </head>
  18. <body>
  19. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  20. <div id="titlearea">
  21. <table cellspacing="0" cellpadding="0">
  22. <tbody>
  23. <tr id="projectrow">
  24. <td id="projectalign">
  25. <div id="projectname">Torque2D Reference
  26. </div>
  27. </td>
  28. </tr>
  29. </tbody>
  30. </table>
  31. </div>
  32. <!-- end header part -->
  33. <!-- Generated by Doxygen 1.9.8 -->
  34. <script type="text/javascript">
  35. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  36. var searchBox = new SearchBox("searchBox", "search/",'.html');
  37. /* @license-end */
  38. </script>
  39. <script type="text/javascript" src="menudata.js"></script>
  40. <script type="text/javascript" src="menu.js"></script>
  41. <script type="text/javascript">
  42. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  43. $(function() {
  44. initMenu('',true,false,'search.php','Search');
  45. $(document).ready(function() { init_search(); });
  46. });
  47. /* @license-end */
  48. </script>
  49. <div id="main-nav"></div>
  50. <!-- window showing the filter options -->
  51. <div id="MSearchSelectWindow"
  52. onmouseover="return searchBox.OnSearchSelectShow()"
  53. onmouseout="return searchBox.OnSearchSelectHide()"
  54. onkeydown="return searchBox.OnSearchSelectKey(event)">
  55. </div>
  56. <!-- iframe showing the search results (closed by default) -->
  57. <div id="MSearchResultsWindow">
  58. <div id="MSearchResults">
  59. <div class="SRPage">
  60. <div id="SRIndex">
  61. <div id="SRResults"></div>
  62. <div class="SRStatus" id="Loading">Loading...</div>
  63. <div class="SRStatus" id="Searching">Searching...</div>
  64. <div class="SRStatus" id="NoMatches">No Matches</div>
  65. </div>
  66. </div>
  67. </div>
  68. </div>
  69. </div><!-- top -->
  70. <div class="header">
  71. <div class="summary">
  72. <a href="#nested-classes">Classes</a> &#124;
  73. <a href="#pub-types">Public Types</a> &#124;
  74. <a href="#pub-methods">Public Member Functions</a> &#124;
  75. <a href="class_data_chunker-members.html">List of all members</a> </div>
  76. <div class="headertitle"><div class="title">DataChunker Class Reference</div></div>
  77. </div><!--header-->
  78. <div class="contents">
  79. <p><code>#include &lt;dataChunker.h&gt;</code></p>
  80. <div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  81. <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for DataChunker:</div>
  82. <div id="dynsection-0-summary" class="dynsummary" style="display:block;">
  83. </div>
  84. <div id="dynsection-0-content" class="dyncontent" style="display:none;">
  85. <div class="center">
  86. <img src="class_data_chunker.png" usemap="#DataChunker_map" alt=""/>
  87. <map id="DataChunker_map" name="DataChunker_map">
  88. <area href="class_free_list_chunker.html" alt="FreeListChunker&lt; NetEventNote &gt;" shape="rect" coords="0,56,207,80"/>
  89. <area href="class_chunker.html" alt="Chunker&lt; T &gt;" shape="rect" coords="217,56,424,80"/>
  90. <area href="class_free_list_chunker.html" alt="FreeListChunker&lt; T &gt;" shape="rect" coords="434,56,641,80"/>
  91. </map>
  92. </div></div>
  93. <table class="memberdecls">
  94. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
  95. Public Types</h2></td></tr>
  96. <tr class="memitem:a80155586fa275b28773c9b203f52caba" id="r_a80155586fa275b28773c9b203f52caba"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="class_data_chunker.html#a80155586fa275b28773c9b203f52cabaa17e1ab25153a0fabd539711c47c597d8">ChunkSize</a> = 16376
  97. }</td></tr>
  98. <tr class="separator:a80155586fa275b28773c9b203f52caba"><td class="memSeparator" colspan="2">&#160;</td></tr>
  99. </table><table class="memberdecls">
  100. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
  101. Public Member Functions</h2></td></tr>
  102. <tr class="memitem:a99e47e550f3480716bd55ed1a753d122" id="r_a99e47e550f3480716bd55ed1a753d122"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_data_chunker.html#a99e47e550f3480716bd55ed1a753d122">alloc</a> (S32 size)</td></tr>
  103. <tr class="separator:a99e47e550f3480716bd55ed1a753d122"><td class="memSeparator" colspan="2">&#160;</td></tr>
  104. <tr class="memitem:a989f98a1855675d2eba4f0dbb22a83ec" id="r_a989f98a1855675d2eba4f0dbb22a83ec"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_data_chunker.html#a989f98a1855675d2eba4f0dbb22a83ec">freeBlocks</a> ()</td></tr>
  105. <tr class="separator:a989f98a1855675d2eba4f0dbb22a83ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
  106. <tr class="memitem:ad387eebcb0aa7a6286a5c0058c57ed47" id="r_ad387eebcb0aa7a6286a5c0058c57ed47"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_data_chunker.html#ad387eebcb0aa7a6286a5c0058c57ed47">DataChunker</a> (S32 size=<a class="el" href="class_data_chunker.html#a80155586fa275b28773c9b203f52cabaa17e1ab25153a0fabd539711c47c597d8">ChunkSize</a>)</td></tr>
  107. <tr class="separator:ad387eebcb0aa7a6286a5c0058c57ed47"><td class="memSeparator" colspan="2">&#160;</td></tr>
  108. <tr class="memitem:a7520d8bae2ccbcc5243bb3cbde2b7ef2" id="r_a7520d8bae2ccbcc5243bb3cbde2b7ef2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_data_chunker.html#a7520d8bae2ccbcc5243bb3cbde2b7ef2">~DataChunker</a> ()</td></tr>
  109. <tr class="separator:a7520d8bae2ccbcc5243bb3cbde2b7ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
  110. </table>
  111. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  112. <div class="textblock"><p>Implements a chunked data allocater.</p>
  113. <p>Calling new/malloc all the time is a time consuming operation. Therefore, we provide the <a class="el" href="class_data_chunker.html">DataChunker</a>, which allocates memory in blockss of chunkSize (by default 16k, see ChunkSize, though it can be set in the constructor), then doles it out as requested, in chunks of up to chunkSize in size.</p>
  114. <p>It will assert if you try to get more than ChunkSize bytes at a time, and it deals with the logic of allocating new blocks and giving out word-aligned chunks.</p>
  115. <p>Note that new/free/realloc WILL NOT WORK on memory gotten from the <a class="el" href="class_data_chunker.html">DataChunker</a>. This also only grows (you can call freeBlocks to deallocate and reset things). </p>
  116. </div><h2 class="groupheader">Member Enumeration Documentation</h2>
  117. <a id="a80155586fa275b28773c9b203f52caba" name="a80155586fa275b28773c9b203f52caba"></a>
  118. <h2 class="memtitle"><span class="permalink"><a href="#a80155586fa275b28773c9b203f52caba">&#9670;&#160;</a></span>anonymous enum</h2>
  119. <div class="memitem">
  120. <div class="memproto">
  121. <table class="memname">
  122. <tr>
  123. <td class="memname">anonymous enum</td>
  124. </tr>
  125. </table>
  126. </div><div class="memdoc">
  127. <table class="fieldtable">
  128. <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a80155586fa275b28773c9b203f52cabaa17e1ab25153a0fabd539711c47c597d8" name="a80155586fa275b28773c9b203f52cabaa17e1ab25153a0fabd539711c47c597d8"></a>ChunkSize&#160;</td><td class="fielddoc"><p>Default size for chunks. </p>
  129. </td></tr>
  130. </table>
  131. </div>
  132. </div>
  133. <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
  134. <a id="ad387eebcb0aa7a6286a5c0058c57ed47" name="ad387eebcb0aa7a6286a5c0058c57ed47"></a>
  135. <h2 class="memtitle"><span class="permalink"><a href="#ad387eebcb0aa7a6286a5c0058c57ed47">&#9670;&#160;</a></span>DataChunker()</h2>
  136. <div class="memitem">
  137. <div class="memproto">
  138. <table class="memname">
  139. <tr>
  140. <td class="memname"><a class="el" href="class_data_chunker.html">DataChunker</a> </td>
  141. <td>(</td>
  142. <td class="paramtype">S32&#160;</td>
  143. <td class="paramname"><em>size</em> = <code><a class="el" href="class_data_chunker.html#a80155586fa275b28773c9b203f52cabaa17e1ab25153a0fabd539711c47c597d8">ChunkSize</a></code></td><td>)</td>
  144. <td></td>
  145. </tr>
  146. </table>
  147. </div><div class="memdoc">
  148. <p>Initialize using blocks of a given size.</p>
  149. <p>One new block is allocated at constructor-time.</p>
  150. <dl class="params"><dt>Parameters</dt><dd>
  151. <table class="params">
  152. <tr><td class="paramname">size</td><td>Size in bytes of the space to allocate for each block. </td></tr>
  153. </table>
  154. </dd>
  155. </dl>
  156. </div>
  157. </div>
  158. <a id="a7520d8bae2ccbcc5243bb3cbde2b7ef2" name="a7520d8bae2ccbcc5243bb3cbde2b7ef2"></a>
  159. <h2 class="memtitle"><span class="permalink"><a href="#a7520d8bae2ccbcc5243bb3cbde2b7ef2">&#9670;&#160;</a></span>~DataChunker()</h2>
  160. <div class="memitem">
  161. <div class="memproto">
  162. <table class="memname">
  163. <tr>
  164. <td class="memname">~<a class="el" href="class_data_chunker.html">DataChunker</a> </td>
  165. <td>(</td>
  166. <td class="paramname"></td><td>)</td>
  167. <td></td>
  168. </tr>
  169. </table>
  170. </div><div class="memdoc">
  171. </div>
  172. </div>
  173. <h2 class="groupheader">Member Function Documentation</h2>
  174. <a id="a99e47e550f3480716bd55ed1a753d122" name="a99e47e550f3480716bd55ed1a753d122"></a>
  175. <h2 class="memtitle"><span class="permalink"><a href="#a99e47e550f3480716bd55ed1a753d122">&#9670;&#160;</a></span>alloc()</h2>
  176. <div class="memitem">
  177. <div class="memproto">
  178. <table class="memname">
  179. <tr>
  180. <td class="memname">void * alloc </td>
  181. <td>(</td>
  182. <td class="paramtype">S32&#160;</td>
  183. <td class="paramname"><em>size</em></td><td>)</td>
  184. <td></td>
  185. </tr>
  186. </table>
  187. </div><div class="memdoc">
  188. <p>Return a pointer to a chunk of memory from a pre-allocated block.</p>
  189. <p>This memory goes away when you call freeBlocks.</p>
  190. <p>This memory is word-aligned. </p><dl class="params"><dt>Parameters</dt><dd>
  191. <table class="params">
  192. <tr><td class="paramname">size</td><td>Size of chunk to return. This must be less than chunkSize or else an assertion will occur. </td></tr>
  193. </table>
  194. </dd>
  195. </dl>
  196. </div>
  197. </div>
  198. <a id="a989f98a1855675d2eba4f0dbb22a83ec" name="a989f98a1855675d2eba4f0dbb22a83ec"></a>
  199. <h2 class="memtitle"><span class="permalink"><a href="#a989f98a1855675d2eba4f0dbb22a83ec">&#9670;&#160;</a></span>freeBlocks()</h2>
  200. <div class="memitem">
  201. <div class="memproto">
  202. <table class="memname">
  203. <tr>
  204. <td class="memname">void freeBlocks </td>
  205. <td>(</td>
  206. <td class="paramname"></td><td>)</td>
  207. <td></td>
  208. </tr>
  209. </table>
  210. </div><div class="memdoc">
  211. <p>Free all allocated memory blocks.</p>
  212. <p>This invalidates all pointers returned from <a class="el" href="class_data_chunker.html#a99e47e550f3480716bd55ed1a753d122">alloc()</a>. </p>
  213. </div>
  214. </div>
  215. <hr/>The documentation for this class was generated from the following files:<ul>
  216. <li>memory/<b>dataChunker.h</b></li>
  217. <li>memory/<b>dataChunker.cc</b></li>
  218. </ul>
  219. </div><!-- contents -->
  220. <!-- start footer part -->
  221. <hr class="footer"/><address class="footer"><small>
  222. Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
  223. </small></address>
  224. </body>
  225. </html>