Sophie

Sophie

distrib > Fedora > 14 > i386 > by-pkgid > 623999701586b0ea103ff2ccad7954a6 > files > 8915

boost-doc-1.44.0-1.fc14.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
  <meta http-equiv="Content-Language" content="en-us">
  <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
  <link href="../pool.css" rel="stylesheet" type="text/css">

  <title>pool_alloc - Boost Pool Standard Allocators Implementation</title>
</head>

<body>
  <img src="../../../../boost.png" width="276" height="86" alt="C++ Boost">

  <h1 align="center">pool_alloc - Boost Pool Standard Allocators
  Implementation</h1>

  <h2>Dependencies</h2>

  <p>Includes the system headers <span class="code">&lt;new&gt;</span> and
  <span class="code">&lt;limits&gt;</span>.</p>

  <p>Includes the Boost headers <span class=
  "code">"singleton_pool.hpp"</span> (see <a href=
  "singleton_pool.html">singleton_pool.html</a>) and <span class=
  "code">"detail/mutex.hpp"</span> (see <a href=
  "mutex.html">mutex.html</a>).</p>

  <h2>Synopsis</h2>
  <pre class="code">
template &lt;typename T,
    typename UserAllocator = default_user_allocator_new_delete,
    typename Mutex = details::pool::default_mutex,
    unsigned NextSize = 32&gt;
class pool_allocator
{
  public:
    ... // public interface

  public: // extensions to public interface
    typedef Mutex mutex;
    static const unsigned next_size = NextSize;

    template &lt;typename U&gt;
    struct rebind
    {
      typedef pool_allocator&lt;U, UserAllocator, Mutex, NextSize&gt; other;
    };
};

template &lt;typename T,
    typename UserAllocator = default_user_allocator_new_delete,
    typename Mutex = details::pool::default_mutex,
    unsigned NextSize = 32&gt;
class fast_pool_allocator
{
  public:
    ... // public interface

  public: // extensions to public interface
    typedef Mutex mutex;
    static const unsigned next_size = NextSize;

    template &lt;typename U&gt;
    struct rebind
    {
      typedef fast_pool_allocator&lt;U, UserAllocator, Mutex, NextSize&gt; other;
    };
};
</pre>

  <h2>Extensions to Public Interface</h2>

  <h3>Additional template parameters</h3>

  <h4 class="code">Mutex</h4>

  <p>This parameter allows the user to determine the type of synchronization
  to be used on the underlying singleton pool. See the extensions to the
  public interface of <a href="singleton_pool.html">singleton pool</a> for
  more information.</p>

  <h4 class="code">NextSize</h4>

  <p>The value of this parameter is passed to the underlying Pool when it is
  created. See the extensions to the public interface of <a href=
  "pool.html">pool</a> for more information.</p>

  <h3>Modification of <span class="code">rebind</span></h3>

  <p>The struct <span class="code">rebind</span> has been redefined to
  preserve the values of the additional template parameters.</p>

  <h3>Additional members</h3>

  <p>The typedef <span class="code">mutex</span> and the static const value
  <span class="code">next_size</span> publish the values of the template
  parameters <span class="code">Mutex</span> and <span class=
  "code">NextSize</span>, respectively.</p>

  <h2>Notes</h2>

  <p>A number of common STL libraries contain bugs in their using of
  allocators. Specifically, they pass null pointers to the <span class=
  "code">deallocate</span> function, which is explicitly forbidden by the
  Standard [20.1.5 Table 32]. PoolAlloc will work around these libraries if
  it detects them; currently, workarounds are in place for:</p>

  <ul>
    <li>Borland C++ (Builder and command-line compiler) with default
    (RogueWave) library, ver. 5 and earlier</li>

    <li>STLport (with any compiler), ver. 4.0 and earlier</li>
  </ul>

  <h2>Future Directions</h2>

  <p>When the Boost multithreading library is completed, the <span class=
  "code">Mutex</span> parameter will be replaced by something from that
  library providing the same flexibility and will move from an implementation
  detail into the interface specification.</p>

  <h2><a href="../interfaces/pool_alloc.html">Interface Description</a></h2>
  <hr>

  <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
  "../../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
  height="31" width="88"></a></p>

  <p>Revised 
  <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->05
  December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38516" --></p>

  <p><i>Copyright &copy; 2000, 2001 Stephen Cleary (scleary AT jerviswebb DOT
  com)</i></p>

  <p><i>Distributed under the Boost Software License, Version 1.0. (See
  accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
  or copy at <a href=
  "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
</body>
</html>