Česky
Kamil Dudka

Share Library (C++)

File detail

Name:DownloadclassShare_1_1DefaultAllocator.html [Download]
Location: sharelib > api
Size:15.6 KB
Last modification:2022-09-09 13:06

Source code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>ShareLibrary: Share::DefaultAllocator Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.2 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<div class="tabs">
  <ul>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul>
</div>
<div class="nav">
<a class="el" href="namespaceShare.html">Share</a>::<a class="el" href="classShare_1_1DefaultAllocator.html">DefaultAllocator</a></div>
<h1>Share::DefaultAllocator Class Reference<br>
<small>
[<a class="el" href="group__backend.html">Internal library classes</a>]</small>
</h1><!-- doxytag: class="Share::DefaultAllocator" --><a class="el" href="classShare_1_1Allocator.html" title="STL allocator.">Allocator</a> for blocks inside shared segment.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="DefaultAllocator_8h-source.html">DefaultAllocator.h</a>&gt;</code>
<p>
Collaboration diagram for Share::DefaultAllocator:<p><center><img src="classShare_1_1DefaultAllocator__coll__graph.png" border="0" usemap="#Share_1_1DefaultAllocator__coll__map" alt="Collaboration graph"></center>
<map name="Share_1_1DefaultAllocator__coll__map">
<area shape="rect" href="classShare_1_1RelocPtr.html" title="Relocable pointer type." alt="" coords="12,83,180,109"><area shape="rect" href="classShare_1_1SharedObject.html" title="Shareable object base class." alt="" coords="13,5,179,32"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="classShare_1_1DefaultAllocator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classShare_1_1RelocPtr.html">RelocPtr</a>&lt; char &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classShare_1_1DefaultAllocator.html#abaf63bc7994d9859c385babf48b272f">TRelocPtr</a></td></tr>
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer type used inside segment.  <a href="#abaf63bc7994d9859c385babf48b272f"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classShare_1_1DefaultAllocator.html#abf3fd98c7fe77afc7cec21defd021dc">DefaultAllocator</a> (void *atAddr, size_t segmentHeaderSize, size_t dataSize)  throw (ShareException)</td></tr>
 
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classShare_1_1DefaultAllocator.html#522147a4a6142b251cd5d772604c64b2">~DefaultAllocator</a> ()</td></tr>
 
<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classShare_1_1DefaultAllocator.html#480fa43d32d40f9fbba2184bb61d91e2">alloc</a> (size_t size)  throw (ShareException)</td></tr>
 
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classShare_1_1DefaultAllocator.html#865bb4bc2291ab354c7068e55c89005d">free</a> (void *addr)  throw ()</td></tr>
 
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classShare_1_1DefaultAllocator.html#8bacc667e8a91c90e3a21e691b51b308">size</a> ()</td></tr>
 
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classShare_1_1DefaultAllocator.html#86089e8d35253e32dfb9faf21d5376ea">available</a> ()</td></tr>
 
<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classShare_1_1DefaultAllocator.html#a8d55c0df3d57c6741fa89105d6f3e2a">sizeNeeded</a> (size_t segmentHeaderSize, size_t dataSize)</td></tr>
 
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a class="el" href="classShare_1_1Allocator.html" title="STL allocator.">Allocator</a> for blocks inside shared segment. 
<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>This class can be replaced with more efficient class with equivalet interface by changing <a class="el" href="namespaceShare.html#45604bad6df28e99e41b1367cb2e8785" title="Change this typedef to use another allocator.">Share::TSegmentAllocator</a> </dd></dl>
 
<p>
 
<p>
Definition at line <a class="el" href="DefaultAllocator_8h-source.html#l00057">57</a> of file <a class="el" href="DefaultAllocator_8h-source.html">DefaultAllocator.h</a>.<hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="abaf63bc7994d9859c385babf48b272f"></a><!-- doxytag: member="Share::DefaultAllocator::TRelocPtr" ref="abaf63bc7994d9859c385babf48b272f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classShare_1_1RelocPtr.html">RelocPtr</a>&lt;char&gt; <a class="el" href="classShare_1_1RelocPtr.html">Share::DefaultAllocator::TRelocPtr</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">
 
<p>
Pointer type used inside segment. 
<p>
 
<p>
Definition at line <a class="el" href="DefaultAllocator_8h-source.html#l00062">62</a> of file <a class="el" href="DefaultAllocator_8h-source.html">DefaultAllocator.h</a>.
</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="abf3fd98c7fe77afc7cec21defd021dc"></a><!-- doxytag: member="Share::DefaultAllocator::DefaultAllocator" ref="abf3fd98c7fe77afc7cec21defd021dc" args="(void *atAddr, size_t segmentHeaderSize, size_t dataSize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Share::DefaultAllocator::DefaultAllocator           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>atAddr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>segmentHeaderSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>dataSize</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%">  throw (<a class="el" href="classShare_1_1ShareException.html">ShareException</a>)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>atAddr</em>&nbsp;</td><td>Address of attached shared segment. At this addres is placed <a class="el" href="classShare_1_1SegmentHeader.html" title="Object placed at begin of each shared segment.">SegmentHeader</a> object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>segmentHeaderSize</em>&nbsp;</td><td>Size of <a class="el" href="classShare_1_1SegmentHeader.html" title="Object placed at begin of each shared segment.">SegmentHeader</a> object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dataSize</em>&nbsp;</td><td>Desired size of memory for data inside shared segment. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classShare_1_1ShareException.html" title="General exception carrying text message inside.">ShareException</a></em>&nbsp;</td><td>Library-specific exception derived from std::bad_alloc </td></tr>
  </table>
</dl>
 
</div>
</div><p>
<a class="anchor" name="522147a4a6142b251cd5d772604c64b2"></a><!-- doxytag: member="Share::DefaultAllocator::~DefaultAllocator" ref="522147a4a6142b251cd5d772604c64b2" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Share::DefaultAllocator::~DefaultAllocator           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">
 
<p>
 
</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="a8d55c0df3d57c6741fa89105d6f3e2a"></a><!-- doxytag: member="Share::DefaultAllocator::sizeNeeded" ref="a8d55c0df3d57c6741fa89105d6f3e2a" args="(size_t segmentHeaderSize, size_t dataSize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static size_t Share::DefaultAllocator::sizeNeeded           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>segmentHeaderSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>dataSize</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>segmentHeaderSize</em>&nbsp;</td><td>Size of <a class="el" href="classShare_1_1SegmentHeader.html" title="Object placed at begin of each shared segment.">SegmentHeader</a> object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dataSize</em>&nbsp;</td><td>Desired size o memory for data inside shared segment. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return computed size of shared segment to allocate. </dd></dl>
 
</div>
</div><p>
<a class="anchor" name="480fa43d32d40f9fbba2184bb61d91e2"></a><!-- doxytag: member="Share::DefaultAllocator::alloc" ref="480fa43d32d40f9fbba2184bb61d91e2" args="(size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* Share::DefaultAllocator::alloc           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">  throw (<a class="el" href="classShare_1_1ShareException.html">ShareException</a>)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
 
<p>
Allocate block of memory inside shared segment. <a class="el" href="classShare_1_1ShareException.html" title="General exception carrying text message inside.">ShareException</a> is thrown if not success. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>Desired size of block to allocate. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return local address of allocated block on success. </dd></dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classShare_1_1ShareException.html" title="General exception carrying text message inside.">ShareException</a></em>&nbsp;</td><td>Library-specific exception derived from std::bad_alloc </td></tr>
  </table>
</dl>
 
</div>
</div><p>
<a class="anchor" name="865bb4bc2291ab354c7068e55c89005d"></a><!-- doxytag: member="Share::DefaultAllocator::free" ref="865bb4bc2291ab354c7068e55c89005d" args="(void *addr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Share::DefaultAllocator::free           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>addr</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">
 
<p>
Free block of memory previously allocated by <a class="el" href="classShare_1_1DefaultAllocator.html#480fa43d32d40f9fbba2184bb61d91e2">alloc()</a> method. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address of block returned by <a class="el" href="classShare_1_1DefaultAllocator.html#480fa43d32d40f9fbba2184bb61d91e2">alloc()</a> method. </td></tr>
  </table>
</dl>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>All attached application may crash if this method is called with invalid address as parameter </dd></dl>
 
</div>
</div><p>
<a class="anchor" name="8bacc667e8a91c90e3a21e691b51b308"></a><!-- doxytag: member="Share::DefaultAllocator::size" ref="8bacc667e8a91c90e3a21e691b51b308" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t Share::DefaultAllocator::size           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">
 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return total size of memory for data inside shared segment. </dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Usable memory inside shared segment could be smaller due to free space fragmentation. </dd></dl>
 
</div>
</div><p>
<a class="anchor" name="86089e8d35253e32dfb9faf21d5376ea"></a><!-- doxytag: member="Share::DefaultAllocator::available" ref="86089e8d35253e32dfb9faf21d5376ea" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t Share::DefaultAllocator::available           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">
 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return size of available memory for data inside shared segment. </dd></dl>
 
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li>sharelib/<a class="el" href="DefaultAllocator_8h-source.html">DefaultAllocator.h</a></ul>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 26 17:43:02 2007 for ShareLibrary by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
</body>
</html>