Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r78262 - in sandbox/pool: . boost boost/pool boost/pool/detail libs libs/pool libs/pool/doc libs/pool/doc/html libs/pool/doc/html/boost libs/pool/doc/html/boost/fast_pool_allocator libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id378528 libs/pool/doc/html/boost/pool_allocator libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id378014 libs/pool/doc/html/boost/singleton_pool libs/pool/doc/html/boost_pool libs/pool/doc/html/boost_pool/appendices libs/pool/doc/html/boost_pool/indexes libs/pool/doc/html/boost_pool/pool libs/pool/doc/html/header libs/pool/doc/html/header/boost libs/pool/doc/html/header/boost/pool libs/pool/doc/images libs/pool/example libs/pool/test
From: svart.riddare_at_[hidden]
Date: 2012-04-30 04:38:31


Author: edupuis
Date: 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
New Revision: 78262
URL: http://svn.boost.org/trac/boost/changeset/78262

Log:
Imported pool library from boost trunk.
Added:
   sandbox/pool/
   sandbox/pool/boost/
   sandbox/pool/boost/pool/
   sandbox/pool/boost/pool/detail/
   sandbox/pool/boost/pool/detail/for.m4 (contents, props changed)
   sandbox/pool/boost/pool/detail/guard.hpp (contents, props changed)
   sandbox/pool/boost/pool/detail/mutex.hpp (contents, props changed)
   sandbox/pool/boost/pool/detail/pool_construct.bat (contents, props changed)
   sandbox/pool/boost/pool/detail/pool_construct.ipp (contents, props changed)
   sandbox/pool/boost/pool/detail/pool_construct.m4 (contents, props changed)
   sandbox/pool/boost/pool/detail/pool_construct.sh (contents, props changed)
   sandbox/pool/boost/pool/detail/pool_construct_simple.bat (contents, props changed)
   sandbox/pool/boost/pool/detail/pool_construct_simple.ipp (contents, props changed)
   sandbox/pool/boost/pool/detail/pool_construct_simple.m4 (contents, props changed)
   sandbox/pool/boost/pool/detail/pool_construct_simple.sh (contents, props changed)
   sandbox/pool/boost/pool/object_pool.hpp (contents, props changed)
   sandbox/pool/boost/pool/pool.hpp (contents, props changed)
   sandbox/pool/boost/pool/pool_alloc.hpp (contents, props changed)
   sandbox/pool/boost/pool/poolfwd.hpp (contents, props changed)
   sandbox/pool/boost/pool/simple_segregated_storage.hpp (contents, props changed)
   sandbox/pool/boost/pool/singleton_pool.hpp (contents, props changed)
   sandbox/pool/libs/
   sandbox/pool/libs/pool/
   sandbox/pool/libs/pool/doc/
   sandbox/pool/libs/pool/doc/html/
   sandbox/pool/libs/pool/doc/html/BOOST_POOL_VALIDATE_INTERNALS.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/
   sandbox/pool/libs/pool/doc/html/boost/default_user_allocator_malloc_free.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/default_user_allocator_new_delete.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator/
   sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator/rebind.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator_tag.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id378528/
   sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id378528.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id378528/rebind.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/object_pool.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/pool.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/pool_allocator/
   sandbox/pool/libs/pool/doc/html/boost/pool_allocator.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/pool_allocator/rebind.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/pool_allocator_tag.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id378014/
   sandbox/pool/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id378014.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id378014/rebind.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/simple_segregated_storage.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/singleton_pool/
   sandbox/pool/libs/pool/doc/html/boost/singleton_pool.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost/singleton_pool/object_creator.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/
   sandbox/pool/libs/pool/doc/html/boost_pool/appendices/
   sandbox/pool/libs/pool/doc/html/boost_pool/appendices.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/appendices/acknowledgements.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/appendices/faq.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/appendices/history.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/appendices/implementations.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/appendices/references.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/appendices/tests.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/appendices/tickets.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/appendices/todo.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/indexes/
   sandbox/pool/libs/pool/doc/html/boost_pool/indexes.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s01.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s02.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s03.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s04.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/pool/
   sandbox/pool/libs/pool/doc/html/boost_pool/pool.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/pool/conventions.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/pool/installation.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/pool/interfaces.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/pool/introduction.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/pool/pooling.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/pool/testing.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool/pool/usage.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/boost_pool_c___reference.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/header/
   sandbox/pool/libs/pool/doc/html/header/boost/
   sandbox/pool/libs/pool/doc/html/header/boost/pool/
   sandbox/pool/libs/pool/doc/html/header/boost/pool/object_pool_hpp.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/header/boost/pool/pool_alloc_hpp.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/header/boost/pool/pool_hpp.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/header/boost/pool/poolfwd_hpp.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/header/boost/pool/simple_segregated_storage_hpp.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/header/boost/pool/singleton_pool_hpp.html (contents, props changed)
   sandbox/pool/libs/pool/doc/html/index.html (contents, props changed)
   sandbox/pool/libs/pool/doc/images/
   sandbox/pool/libs/pool/doc/images/MB4.PNG (contents, props changed)
   sandbox/pool/libs/pool/doc/images/PC2.PNG (contents, props changed)
   sandbox/pool/libs/pool/doc/images/PC3.PNG (contents, props changed)
   sandbox/pool/libs/pool/doc/images/PC4.PNG (contents, props changed)
   sandbox/pool/libs/pool/doc/images/PC5.PNG (contents, props changed)
   sandbox/pool/libs/pool/doc/images/mb1.PNG (contents, props changed)
   sandbox/pool/libs/pool/doc/images/mb1.svg (contents, props changed)
   sandbox/pool/libs/pool/doc/images/mb2.PNG (contents, props changed)
   sandbox/pool/libs/pool/doc/images/mb2.svg (contents, props changed)
   sandbox/pool/libs/pool/doc/images/mb3.PNG (contents, props changed)
   sandbox/pool/libs/pool/doc/images/mb3.svg (contents, props changed)
   sandbox/pool/libs/pool/doc/images/mb4.svg (contents, props changed)
   sandbox/pool/libs/pool/doc/images/pc1.PNG (contents, props changed)
   sandbox/pool/libs/pool/doc/images/pc1.svg (contents, props changed)
   sandbox/pool/libs/pool/doc/images/pc2.svg (contents, props changed)
   sandbox/pool/libs/pool/doc/images/pc3.svg (contents, props changed)
   sandbox/pool/libs/pool/doc/images/pc4.svg (contents, props changed)
   sandbox/pool/libs/pool/doc/images/pc5.svg (contents, props changed)
   sandbox/pool/libs/pool/doc/index.html (contents, props changed)
   sandbox/pool/libs/pool/doc/index.idx (contents, props changed)
   sandbox/pool/libs/pool/doc/jamfile.v2 (contents, props changed)
   sandbox/pool/libs/pool/doc/pool.pdf (contents, props changed)
   sandbox/pool/libs/pool/doc/pool.qbk (contents, props changed)
   sandbox/pool/libs/pool/example/
   sandbox/pool/libs/pool/example/sys_allocator.hpp (contents, props changed)
   sandbox/pool/libs/pool/example/time_pool_alloc.cpp (contents, props changed)
   sandbox/pool/libs/pool/index.html (contents, props changed)
   sandbox/pool/libs/pool/test/
   sandbox/pool/libs/pool/test/Jamfile.v2 (contents, props changed)
   sandbox/pool/libs/pool/test/pool_msvc_compiler_bug_test.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_bug_1252.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_bug_2696.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_bug_3349.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_bug_4960.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_bug_5526.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_msvc_mem_leak_detect.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_poisoned_macros.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_pool_alloc.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_simple_seg_storage.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_simple_seg_storage.hpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_threading.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_valgrind_fail_1.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/test_valgrind_fail_2.cpp (contents, props changed)
   sandbox/pool/libs/pool/test/track_allocator.hpp (contents, props changed)
   sandbox/pool/libs/pool/test/valgrind_config_check.cpp (contents, props changed)

Added: sandbox/pool/boost/pool/detail/for.m4
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/for.m4 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,107 @@
+m4_dnl
+m4_dnl Copyright (C) 2000 Stephen Cleary
+m4_dnl
+m4_dnl Distributed under the Boost Software License, Version 1.0. (See accompany-
+m4_dnl ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+m4_dnl
+m4_dnl See http://www.boost.org for updates, documentation, and revision history.
+m4_dnl
+m4_dnl
+m4_dnl
+m4_dnl BOOST_M4_FOR: repeat a given text for a range of values
+m4_dnl $1 - variable to hold the current value.
+m4_dnl $2 - the starting value.
+m4_dnl $3 - the ending value (text is _not_ repeated for this value).
+m4_dnl $4 - the text to repeat.
+m4_dnl $5 - the delimeter text (optional).
+m4_dnl
+m4_dnl If the starting value is < ending value:
+m4_dnl Will repeat $4, binding $1 to the values in the range [$2, $3).
+m4_dnl Else (that is, starting value >= ending value):
+m4_dnl Will do nothing
+m4_dnl Repeats $5 in-between each occurrence of $4
+m4_dnl
+m4_dnl Logic:
+m4_dnl Set $1 to $2 and call BOOST_M4_FOR_LIST_HELPER:
+m4_dnl If $1 >= $3, do nothing
+m4_dnl Else
+m4_dnl output $4,
+m4_dnl set $1 to itself incremented,
+m4_dnl If $1 != $3, output $5,
+m4_dnl and use recursion
+m4_dnl
+m4_define(`BOOST_M4_FOR',
+ `m4_ifelse(m4_eval($# < 4 || $# > 5), 1,
+ `m4_errprint(m4___file__:m4___line__: `Boost m4 script: BOOST_M4_FOR: Wrong number of arguments ($#)')',
+ `m4_pushdef(`$1', `$2')BOOST_M4_FOR_HELPER($@)m4_popdef(`$1')')')m4_dnl
+m4_define(`BOOST_M4_FOR_HELPER',
+ `m4_ifelse(m4_eval($1 >= $3), 1, ,
+ `$4`'m4_define(`$1', m4_incr($1))m4_ifelse(m4_eval($1 != $3), 1, `$5')`'BOOST_M4_FOR_HELPER($@)')')m4_dnl
+m4_dnl
+m4_dnl Testing/Examples:
+m4_dnl
+m4_dnl The following line will output:
+m4_dnl "repeat.m4:42: Boost m4 script: BOOST_M4_FOR: Wrong number of arguments (3)"
+m4_dnl BOOST_M4_FOR(i, 1, 3)
+m4_dnl
+m4_dnl The following line will output:
+m4_dnl "repeat.m4:46: Boost m4 script: BOOST_M4_FOR: Wrong number of arguments (6)"
+m4_dnl BOOST_M4_FOR(i, 1, 3, i, ` ', 13)
+m4_dnl
+m4_dnl The following line will output (nothing):
+m4_dnl ""
+m4_dnl BOOST_M4_FOR(i, 7, 0, i )
+m4_dnl
+m4_dnl The following line will output (nothing):
+m4_dnl ""
+m4_dnl BOOST_M4_FOR(i, 0, 0, i )
+m4_dnl
+m4_dnl The following line will output:
+m4_dnl "0 1 2 3 4 5 6 "
+m4_dnl BOOST_M4_FOR(i, 0, 7, i )
+m4_dnl
+m4_dnl The following line will output:
+m4_dnl "-13 -12 -11 "
+m4_dnl BOOST_M4_FOR(i, -13, -10, i )
+m4_dnl
+m4_dnl The following two lines will output:
+m4_dnl "(0, 0) (0, 1) (0, 2) (0, 3) "
+m4_dnl "(1, 0) (1, 1) (1, 2) (1, 3) "
+m4_dnl "(2, 0) (2, 1) (2, 2) (2, 3) "
+m4_dnl "(3, 0) (3, 1) (3, 2) (3, 3) "
+m4_dnl "(4, 0) (4, 1) (4, 2) (4, 3) "
+m4_dnl "(5, 0) (5, 1) (5, 2) (5, 3) "
+m4_dnl "(6, 0) (6, 1) (6, 2) (6, 3) "
+m4_dnl "(7, 0) (7, 1) (7, 2) (7, 3) "
+m4_dnl ""
+m4_dnl BOOST_M4_FOR(i, 0, 8, BOOST_M4_FOR(j, 0, 4, (i, j) )
+m4_dnl )
+m4_dnl
+m4_dnl The following line will output (nothing):
+m4_dnl ""
+m4_dnl BOOST_M4_FOR(i, 7, 0, i, |)
+m4_dnl
+m4_dnl The following line will output (nothing):
+m4_dnl ""
+m4_dnl BOOST_M4_FOR(i, 0, 0, i, |)
+m4_dnl
+m4_dnl The following line will output:
+m4_dnl "0|1|2|3|4|5|6"
+m4_dnl BOOST_M4_FOR(i, 0, 7, i, |)
+m4_dnl
+m4_dnl The following line will output:
+m4_dnl "-13, -12, -11"
+m4_dnl BOOST_M4_FOR(i, -13, -10, i, `, ')
+m4_dnl
+m4_dnl The following two lines will output:
+m4_dnl "[(0, 0), (0, 1), (0, 2), (0, 3)],"
+m4_dnl "[(1, 0), (1, 1), (1, 2), (1, 3)],"
+m4_dnl "[(2, 0), (2, 1), (2, 2), (2, 3)],"
+m4_dnl "[(3, 0), (3, 1), (3, 2), (3, 3)],"
+m4_dnl "[(4, 0), (4, 1), (4, 2), (4, 3)],"
+m4_dnl "[(5, 0), (5, 1), (5, 2), (5, 3)],"
+m4_dnl "[(6, 0), (6, 1), (6, 2), (6, 3)],"
+m4_dnl "[(7, 0), (7, 1), (7, 2), (7, 3)]"
+m4_dnl BOOST_M4_FOR(i, 0, 8, `[BOOST_M4_FOR(j, 0, 4, (i, j), `, ')]', `,
+m4_dnl ')
+m4_dnl
\ No newline at end of file

Added: sandbox/pool/boost/pool/detail/guard.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/guard.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,69 @@
+// Copyright (C) 2000 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_POOL_GUARD_HPP
+#define BOOST_POOL_GUARD_HPP
+
+/*!
+ \file
+ \brief Extremely Light-Weight guard class.
+ \details Auto-lock/unlock-er
+ detail/guard.hpp provides a type guard<Mutex>
+ that allows scoped access to the Mutex's locking and unlocking operations.
+ It is used to ensure that a Mutex is unlocked, even if an exception is thrown.
+*/
+
+namespace boost {
+
+namespace details {
+namespace pool {
+
+template <typename Mutex> //!< \tparam Mutex (platform-specific) mutex class.
+class guard
+{ //! Locks the mutex, binding guard<Mutex> to Mutex.
+ /*! Example:
+ Given a (platform-specific) mutex class, we can wrap code as follows:
+
+ extern mutex global_lock;
+
+ static void f()
+ {
+ boost::details::pool::guard<mutex> g(global_lock);
+ // g's constructor locks "global_lock"
+
+ ... // do anything:
+ // throw exceptions
+ // return
+ // or just fall through
+ } // g's destructor unlocks "global_lock"
+ */
+ private:
+ Mutex & mtx;
+
+ guard(const guard &); //!< Guards the mutex, ensuring unlocked on destruction, even if exception is thrown.
+ void operator=(const guard &);
+
+ public:
+ explicit guard(Mutex & nmtx)
+ :mtx(nmtx)
+ { //! Locks the mutex of the guard class.
+ mtx.lock();
+ }
+
+ ~guard()
+ { //! destructor unlocks the mutex of the guard class.
+ mtx.unlock();
+ }
+}; // class guard
+
+} // namespace pool
+} // namespace details
+
+} // namespace boost
+
+#endif

Added: sandbox/pool/boost/pool/detail/mutex.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/mutex.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,42 @@
+// Copyright (C) 2000 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_POOL_MUTEX_HPP
+#define BOOST_POOL_MUTEX_HPP
+
+#include <boost/config.hpp> // for workarounds
+#ifdef BOOST_HAS_THREADS
+#include <boost/thread/mutex.hpp>
+#endif
+
+namespace boost{ namespace details{ namespace pool{
+
+class null_mutex
+{
+ private:
+ null_mutex(const null_mutex &);
+ void operator=(const null_mutex &);
+
+ public:
+ null_mutex() { }
+
+ static void lock() { }
+ static void unlock() { }
+};
+
+#if !defined(BOOST_HAS_THREADS) || defined(BOOST_NO_MT) || defined(BOOST_POOL_NO_MT)
+ typedef null_mutex default_mutex;
+#else
+ typedef boost::mutex default_mutex;
+#endif
+
+} // namespace pool
+} // namespace details
+} // namespace boost
+
+#endif

Added: sandbox/pool/boost/pool/detail/pool_construct.bat
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/pool_construct.bat 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,24 @@
+@echo off
+rem
+rem Copyright (C) 2000, 2001 Stephen Cleary
+rem
+rem Distributed under the Boost Software License, Version 1.0. (See accompany-
+rem ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+
+rem Check for Windows NT
+if %OS%==Windows_NT goto NT
+
+rem Not NT - run m4 as normal, then exit
+m4 -P -E -DNumberOfArguments=%1 pool_construct.m4 > pool_construct.ipp
+goto end
+
+rem DJGPP programs (including m4) running on Windows/NT do NOT support long
+rem file names (see the DJGPP v2 FAQ, question 8.1)
+rem Note that the output doesn't have to be a short name because it's an
+rem argument to the command shell, not m4.
+:NT
+m4 -P -E -DNumberOfArguments=%1 < pool_construct.m4 > pool_construct.ipp
+
+:end

Added: sandbox/pool/boost/pool/detail/pool_construct.ipp
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/pool_construct.ipp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,852 @@
+// Copyright (C) 2000 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+// This file was AUTOMATICALLY GENERATED from "stdin"
+// Do NOT include directly!
+// Do NOT edit!
+
+template <typename T0>
+element_type * construct(T0 & a0)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0>
+element_type * construct(const T0 & a0)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0>
+element_type * construct(volatile T0 & a0)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0>
+element_type * construct(const volatile T0 & a0)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(T0 & a0, T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(const T0 & a0, T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(volatile T0 & a0, T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(const volatile T0 & a0, T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(T0 & a0, const T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(const T0 & a0, const T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(volatile T0 & a0, const T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(const volatile T0 & a0, const T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(T0 & a0, volatile T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(const T0 & a0, volatile T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(volatile T0 & a0, volatile T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(const volatile T0 & a0, volatile T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(T0 & a0, const volatile T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(const T0 & a0, const volatile T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(volatile T0 & a0, const volatile T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(const volatile T0 & a0, const volatile T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, const T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, const T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, const T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, const T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, volatile T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, volatile T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, volatile T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, volatile T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, const volatile T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, const volatile T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, const volatile T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, const volatile T1 & a1, T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, const T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, const T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, const T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, const T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, volatile T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, volatile T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, volatile T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, volatile T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, const volatile T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, const volatile T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, const volatile T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, const volatile T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, const T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, const T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, const T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, const T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, volatile T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, volatile T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, volatile T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, volatile T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, const volatile T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, const volatile T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, const volatile T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, const volatile T1 & a1, volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, const T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, const T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, const T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, const T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, volatile T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, volatile T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, volatile T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, volatile T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(T0 & a0, const volatile T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, const volatile T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(volatile T0 & a0, const volatile T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const volatile T0 & a0, const volatile T1 & a1, const volatile T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+

Added: sandbox/pool/boost/pool/detail/pool_construct.m4
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/pool_construct.m4 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,84 @@
+m4_dnl
+m4_dnl Copyright (C) 2000 Stephen Cleary
+m4_dnl
+m4_dnl Distributed under the Boost Software License, Version 1.0. (See accompany-
+m4_dnl ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+m4_dnl
+m4_dnl See http://www.boost.org for updates, documentation, and revision history.
+m4_dnl
+m4_dnl
+m4_dnl
+m4_dnl Avoid the use of any m4_* identifiers in this header file,
+m4_dnl as that may cause incompatibility problems with future
+m4_dnl versions of m4.
+m4_dnl
+m4_dnl This is a normal header file, except that lines starting
+m4_dnl with `m4_dnl' will be stripped, TBA_FOR
+m4_dnl macros will be replaced with repeated text, and text in
+m4_dnl single quotes (`...') will have their single quotes
+m4_dnl stripped.
+m4_dnl
+m4_dnl
+m4_dnl Check to make sure NumberOfArguments was defined. If it's not defined,
+m4_dnl default to 3
+m4_dnl
+m4_ifdef(`NumberOfArguments', , `m4_errprint(m4___file__:m4___line__`: NumberOfArguments is not defined; defaulting to 3
+')m4_define(`NumberOfArguments', 3)')m4_dnl
+m4_ifelse(NumberOfArguments, , `m4_errprint(m4___file__:m4___line__`: NumberOfArguments is defined to be empty; defaulting to 3
+')m4_define(`NumberOfArguments', 3)')m4_dnl
+m4_dnl
+m4_dnl Check to make sure NumberOfArguments >= 1. If it's not, then fatal error.
+m4_dnl
+m4_ifelse(m4_eval(NumberOfArguments < 1), 1, `m4_errprint(m4___file__:m4___line__`: NumberOfArguments ('NumberOfArguments`) is less than 1
+')m4_m4exit(1)')m4_dnl
+m4_dnl
+m4_dnl Include the BOOST_M4_FOR macro definition
+m4_dnl
+m4_include(`for.m4')`'m4_dnl
+m4_dnl
+m4_dnl Begin the generated file.
+m4_dnl
+// Copyright (C) 2000 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+m4_dnl These warnings apply to the file generated from this file.
+m4_dnl Of course, you may freely edit this file.
+// This file was AUTOMATICALLY GENERATED from "m4___file__"
+// Do NOT include directly!
+// Do NOT edit!
+
+m4_dnl
+m4_dnl First we define a simple 'cv_qual' macro which takes a number, either
+m4_dnl 0, 1, 2, or 3, and determines cv-qualification.
+m4_dnl
+m4_define(`cv_qual',
+`m4_ifelse($1, 0, `',
+`m4_ifelse($1, 1, `const ',
+`m4_ifelse($1, 2, `volatile ',
+`m4_ifelse($1, 3, `const volatile ',
+`m4_errprint(m4___file__:m4___line__: `Boost m4 script: cv-determiner: Not 0, 1, 2, or 3 (was '$1`)')'
+)')')')')m4_dnl
+m4_dnl
+m4_dnl Next we go through the actual loop. For each number of arguments from
+m4_dnl 1 to NumberOfArguments, we create a template function that takes that
+m4_dnl many template arguments, and also generate all cv-qualified permutations
+m4_dnl of that function.
+m4_dnl
+BOOST_M4_FOR(N, 1, NumberOfArguments + 1,
+`BOOST_M4_FOR(cv, 0, m4_eval(4 ** N),
+ `template <BOOST_M4_FOR(i, 0, N, `typename T`'i', `, ')>
+element_type * construct(BOOST_M4_FOR(i, 0, N,
+ `cv_qual(m4_eval((cv >> (i * 2)) % 4))T`'i & a`'i', `, '))
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(BOOST_M4_FOR(i, 0, N, `a`'i', `, ')); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+')')

Added: sandbox/pool/boost/pool/detail/pool_construct.sh
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/pool_construct.sh 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# Copyright (C) 2000 Stephen Cleary
+#
+# Distributed under the Boost Software License, Version 1.0. (See accompany-
+# ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#
+# See http://www.boost.org for updates, documentation, and revision history.
+#
+
+m4 -P -E -DNumberOfArguments=$1 pool_construct.m4 > pool_construct.ipp
+

Added: sandbox/pool/boost/pool/detail/pool_construct_simple.bat
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/pool_construct_simple.bat 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,25 @@
+@echo off
+rem
+rem Copyright (C) 2001 Stephen Cleary
+rem
+rem Distributed under the Boost Software License, Version 1.0. (See accompany-
+rem ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+rem
+rem See http://www.boost.org for updates, documentation, and revision history.
+rem
+
+rem Check for Windows NT
+if %OS%==Windows_NT goto NT
+
+rem Not NT - run m4 as normal, then exit
+m4 -P -E -DNumberOfArguments=%1 pool_construct_simple.m4 > pool_construct_simple.ipp
+goto end
+
+rem DJGPP programs (including m4) running on Windows/NT do NOT support long
+rem file names (see the DJGPP v2 FAQ, question 8.1)
+rem Note that the output doesn't have to be a short name because it's an
+rem argument to the command shell, not m4.
+:NT
+m4 -P -E -DNumberOfArguments=%1 < pool_construct_simple.m4 > pool_construct_simple.ipp
+
+:end

Added: sandbox/pool/boost/pool/detail/pool_construct_simple.ipp
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/pool_construct_simple.ipp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,43 @@
+// Copyright (C) 2000 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+// This file was AUTOMATICALLY GENERATED from "stdin"
+// Do NOT include directly!
+// Do NOT edit!
+
+template <typename T0>
+element_type * construct(const T0 & a0)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1>
+element_type * construct(const T0 & a0, const T1 & a1)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+template <typename T0, typename T1, typename T2>
+element_type * construct(const T0 & a0, const T1 & a1, const T2 & a2)
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(a0, a1, a2); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+

Added: sandbox/pool/boost/pool/detail/pool_construct_simple.m4
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/pool_construct_simple.m4 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,72 @@
+m4_dnl
+m4_dnl Copyright (C) 2001 Stephen Cleary
+m4_dnl
+m4_dnl Distributed under the Boost Software License, Version 1.0. (See accompany-
+m4_dnl ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+m4_dnl
+m4_dnl See http://www.boost.org for updates, documentation, and revision history.
+m4_dnl
+m4_dnl
+m4_dnl
+m4_dnl Avoid the use of any m4_* identifiers in this header file,
+m4_dnl as that may cause incompatibility problems with future
+m4_dnl versions of m4.
+m4_dnl
+m4_dnl This is a normal header file, except that lines starting
+m4_dnl with `m4_dnl' will be stripped, TBA_FOR
+m4_dnl macros will be replaced with repeated text, and text in
+m4_dnl single quotes (`...') will have their single quotes
+m4_dnl stripped.
+m4_dnl
+m4_dnl
+m4_dnl Check to make sure NumberOfArguments was defined. If it's not defined,
+m4_dnl default to 3
+m4_dnl
+m4_ifdef(`NumberOfArguments', , `m4_errprint(m4___file__:m4___line__`: NumberOfArguments is not defined; defaulting to 3
+')m4_define(`NumberOfArguments', 3)')m4_dnl
+m4_ifelse(NumberOfArguments, , `m4_errprint(m4___file__:m4___line__`: NumberOfArguments is defined to be empty; defaulting to 3
+')m4_define(`NumberOfArguments', 3)')m4_dnl
+m4_dnl
+m4_dnl Check to make sure NumberOfArguments >= 1. If it's not, then fatal error.
+m4_dnl
+m4_ifelse(m4_eval(NumberOfArguments < 1), 1, `m4_errprint(m4___file__:m4___line__`: NumberOfArguments ('NumberOfArguments`) is less than 1
+')m4_m4exit(1)')m4_dnl
+m4_dnl
+m4_dnl Include the BOOST_M4_FOR macro definition
+m4_dnl
+m4_include(`for.m4')`'m4_dnl
+m4_dnl
+m4_dnl Begin the generated file.
+m4_dnl
+// Copyright (C) 2000 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+m4_dnl These warnings apply to the file generated from this file.
+m4_dnl Of course, you may freely edit this file.
+// This file was AUTOMATICALLY GENERATED from "m4___file__"
+// Do NOT include directly!
+// Do NOT edit!
+
+m4_dnl
+m4_dnl Here we go through the actual loop. For each number of arguments from
+m4_dnl 1 to NumberOfArguments, we create a template function that takes that
+m4_dnl many template arguments.
+m4_dnl
+BOOST_M4_FOR(N, 1, NumberOfArguments + 1,
+`template <BOOST_M4_FOR(i, 0, N, `typename T`'i', `, ')>
+element_type * construct(BOOST_M4_FOR(i, 0, N,
+ `const T`'i & a`'i', `, '))
+{
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(BOOST_M4_FOR(i, 0, N, `a`'i', `, ')); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+}
+')

Added: sandbox/pool/boost/pool/detail/pool_construct_simple.sh
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/detail/pool_construct_simple.sh 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# Copyright (C) 2001 Stephen Cleary
+#
+# Distributed under the Boost Software License, Version 1.0. (See accompany-
+# ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#
+# See http://www.boost.org for updates, documentation, and revision history.
+#
+
+m4 -P -E -DNumberOfArguments=$1 pool_construct_simple.m4 > pool_construct_simple.ipp
+

Added: sandbox/pool/boost/pool/object_pool.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/object_pool.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,287 @@
+// Copyright (C) 2000, 2001 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_OBJECT_POOL_HPP
+#define BOOST_OBJECT_POOL_HPP
+/*!
+\file
+\brief Provides a template type boost::object_pool<T, UserAllocator>
+that can be used for fast and efficient memory allocation of objects of type T.
+It also provides automatic destruction of non-deallocated objects.
+*/
+
+#include <boost/pool/poolfwd.hpp>
+
+// boost::pool
+#include <boost/pool/pool.hpp>
+
+// The following code will be put into Boost.Config in a later revision
+#if defined(BOOST_MSVC) || defined(__KCC)
+# define BOOST_NO_TEMPLATE_CV_REF_OVERLOADS
+#endif
+
+// The following code might be put into some Boost.Config header in a later revision
+#ifdef __BORLANDC__
+# pragma option push -w-inl
+#endif
+
+// There are a few places in this file where the expression "this->m" is used.
+// This expression is used to force instantiation-time name lookup, which I am
+// informed is required for strict Standard compliance. It's only necessary
+// if "m" is a member of a base class that is dependent on a template
+// parameter.
+// Thanks to Jens Maurer for pointing this out!
+
+namespace boost {
+
+/*! \brief A template class
+that can be used for fast and efficient memory allocation of objects.
+It also provides automatic destruction of non-deallocated objects.
+
+\details
+
+<b>T</b> The type of object to allocate/deallocate.
+T must have a non-throwing destructor.
+
+<b>UserAllocator</b>
+Defines the allocator that the underlying Pool will use to allocate memory from the system.
+See User Allocators for details.
+
+Class object_pool is a template class
+that can be used for fast and efficient memory allocation of objects.
+It also provides automatic destruction of non-deallocated objects.
+
+When the object pool is destroyed, then the destructor for type T
+is called for each allocated T that has not yet been deallocated. O(N).
+
+Whenever an object of type ObjectPool needs memory from the system,
+it will request it from its UserAllocator template parameter.
+The amount requested is determined using a doubling algorithm;
+that is, each time more system memory is allocated,
+the amount of system memory requested is doubled.
+Users may control the doubling algorithm by the parameters passed
+to the object_pool's constructor.
+*/
+
+template <typename T, typename UserAllocator>
+class object_pool: protected pool<UserAllocator>
+{ //!
+ public:
+ typedef T element_type; //!< ElementType
+ typedef UserAllocator user_allocator; //!<
+ typedef typename pool<UserAllocator>::size_type size_type; //!< pool<UserAllocator>::size_type
+ typedef typename pool<UserAllocator>::difference_type difference_type; //!< pool<UserAllocator>::difference_type
+
+ protected:
+ //! \return The underlying boost:: \ref pool storage used by *this.
+ pool<UserAllocator> & store()
+ {
+ return *this;
+ }
+ //! \return The underlying boost:: \ref pool storage used by *this.
+ const pool<UserAllocator> & store() const
+ {
+ return *this;
+ }
+
+ // for the sake of code readability :)
+ static void * & nextof(void * const ptr)
+ { //! \returns The next memory block after ptr (for the sake of code readability :)
+ return *(static_cast<void **>(ptr));
+ }
+
+ public:
+ explicit object_pool(const size_type arg_next_size = 32, const size_type arg_max_size = 0)
+ :
+ pool<UserAllocator>(sizeof(T), arg_next_size, arg_max_size)
+ { //! Constructs a new (empty by default) ObjectPool.
+ //! \param next_size Number of chunks to request from the system the next time that object needs to allocate system memory (default 32).
+ //! \pre next_size != 0.
+ //! \param max_size Maximum number of chunks to ever request from the system - this puts a cap on the doubling algorithm
+ //! used by the underlying pool.
+ }
+
+ ~object_pool();
+
+ // Returns 0 if out-of-memory.
+ element_type * malloc BOOST_PREVENT_MACRO_SUBSTITUTION()
+ { //! Allocates memory that can hold one object of type ElementType.
+ //!
+ //! If out of memory, returns 0.
+ //!
+ //! Amortized O(1).
+ return static_cast<element_type *>(store().ordered_malloc());
+ }
+ void free BOOST_PREVENT_MACRO_SUBSTITUTION(element_type * const chunk)
+ { //! De-Allocates memory that holds a chunk of type ElementType.
+ //!
+ //! Note that p may not be 0.\n
+ //!
+ //! Note that the destructor for p is not called. O(N).
+ store().ordered_free(chunk);
+ }
+ bool is_from(element_type * const chunk) const
+ { /*! \returns true if chunk was allocated from *this or
+ may be returned as the result of a future allocation from *this.
+
+ Returns false if chunk was allocated from some other pool or
+ may be returned as the result of a future allocation from some other pool.
+
+ Otherwise, the return value is meaningless.
+
+ \note This function may NOT be used to reliably test random pointer values!
+ */
+ return store().is_from(chunk);
+ }
+
+ element_type * construct()
+ { //! \returns A pointer to an object of type T, allocated in memory from the underlying pool
+ //! and default constructed. The returned objected can be freed by a call to \ref destroy.
+ //! Otherwise the returned object will be automatically destroyed when *this is destroyed.
+ element_type * const ret = (malloc)();
+ if (ret == 0)
+ return ret;
+ try { new (ret) element_type(); }
+ catch (...) { (free)(ret); throw; }
+ return ret;
+ }
+
+
+#if defined(BOOST_DOXYGEN)
+ template <class Arg1, ... class ArgN>
+ element_type * construct(Arg1&, ... ArgN&)
+ {
+ //! \returns A pointer to an object of type T, allocated in memory from the underlying pool
+ //! and constructed from arguments Arg1 to ArgN. The returned objected can be freed by a call to \ref destroy.
+ //! Otherwise the returned object will be automatically destroyed when *this is destroyed.
+ //!
+ //! \note Since the number and type of arguments to this function is totally arbitrary, a simple system has been
+ //! set up to automatically generate template construct functions. This system is based on the macro preprocessor
+ //! m4, which is standard on UNIX systems and also available for Win32 systems.\n\n
+ //! detail/pool_construct.m4, when run with m4, will create the file detail/pool_construct.ipp, which only defines
+ //! the construct functions for the proper number of arguments. The number of arguments may be passed into the
+ //! file as an m4 macro, NumberOfArguments; if not provided, it will default to 3.\n\n
+ //! For each different number of arguments (1 to NumberOfArguments), a template function is generated. There
+ //! are the same number of template parameters as there are arguments, and each argument's type is a reference
+ //! to that (possibly cv-qualified) template argument. Each possible permutation of the cv-qualifications is also generated.\n\n
+ //! Because each permutation is generated for each possible number of arguments, the included file size grows
+ //! exponentially in terms of the number of constructor arguments, not linearly. For the sake of rational
+ //! compile times, only use as many arguments as you need.\n\n
+ //! detail/pool_construct.bat and detail/pool_construct.sh are also provided to call m4, defining NumberOfArguments
+ //! to be their command-line parameter. See these files for more details.
+ }
+#else
+// Include automatically-generated file for family of template construct() functions.
+// Copy .inc renamed .ipp to conform to Doxygen include filename expectations, PAB 12 Jan 11.
+// But still get Doxygen warning:
+// I:/boost-sandbox/guild/pool/boost/pool/object_pool.hpp:82:
+// Warning: include file boost/pool/detail/pool_construct.ipp
+// not found, perhaps you forgot to add its directory to INCLUDE_PATH?
+// But the file IS found and referenced OK, but cannot view code.
+// This seems because not at the head of the file
+// But if moved this up, Doxygen is happy, but of course it won't compile,
+// because the many constructors *must* go here.
+
+#ifndef BOOST_NO_TEMPLATE_CV_REF_OVERLOADS
+# include <boost/pool/detail/pool_construct.ipp>
+#else
+# include <boost/pool/detail/pool_construct_simple.ipp>
+#endif
+#endif
+ void destroy(element_type * const chunk)
+ { //! Destroys an object allocated with \ref construct.
+ //!
+ //! Equivalent to:
+ //!
+ //! p->~ElementType(); this->free(p);
+ //!
+ //! \pre p must have been previously allocated from *this via a call to \ref construct.
+ chunk->~T();
+ (free)(chunk);
+ }
+
+ size_type get_next_size() const
+ { //! \returns The number of chunks that will be allocated next time we run out of memory.
+ return store().get_next_size();
+ }
+ void set_next_size(const size_type x)
+ { //! Set a new number of chunks to allocate the next time we run out of memory.
+ //! \param x wanted next_size (must not be zero).
+ store().set_next_size(x);
+ }
+};
+
+template <typename T, typename UserAllocator>
+object_pool<T, UserAllocator>::~object_pool()
+{
+#ifndef BOOST_POOL_VALGRIND
+ // handle trivial case of invalid list.
+ if (!this->list.valid())
+ return;
+
+ details::PODptr<size_type> iter = this->list;
+ details::PODptr<size_type> next = iter;
+
+ // Start 'freed_iter' at beginning of free list
+ void * freed_iter = this->first;
+
+ const size_type partition_size = this->alloc_size();
+
+ do
+ {
+ // increment next
+ next = next.next();
+
+ // delete all contained objects that aren't freed.
+
+ // Iterate 'i' through all chunks in the memory block.
+ for (char * i = iter.begin(); i != iter.end(); i += partition_size)
+ {
+ // If this chunk is free,
+ if (i == freed_iter)
+ {
+ // Increment freed_iter to point to next in free list.
+ freed_iter = nextof(freed_iter);
+
+ // Continue searching chunks in the memory block.
+ continue;
+ }
+
+ // This chunk is not free (allocated), so call its destructor,
+ static_cast<T *>(static_cast<void *>(i))->~T();
+ // and continue searching chunks in the memory block.
+ }
+
+ // free storage.
+ (UserAllocator::free)(iter.begin());
+
+ // increment iter.
+ iter = next;
+ } while (iter.valid());
+
+ // Make the block list empty so that the inherited destructor doesn't try to
+ // free it again.
+ this->list.invalidate();
+#else
+ // destruct all used elements:
+ for(std::set<void*>::iterator pos = this->used_list.begin(); pos != this->used_list.end(); ++pos)
+ {
+ static_cast<T*>(*pos)->~T();
+ }
+ // base class will actually free the memory...
+#endif
+}
+
+} // namespace boost
+
+// The following code might be put into some Boost.Config header in a later revision
+#ifdef __BORLANDC__
+# pragma option pop
+#endif
+
+#endif

Added: sandbox/pool/boost/pool/pool.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/pool.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,1024 @@
+// Copyright (C) 2000, 2001 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_POOL_HPP
+#define BOOST_POOL_HPP
+
+#include <boost/config.hpp> // for workarounds
+
+// std::less, std::less_equal, std::greater
+#include <functional>
+// new[], delete[], std::nothrow
+#include <new>
+// std::size_t, std::ptrdiff_t
+#include <cstddef>
+// std::malloc, std::free
+#include <cstdlib>
+// std::invalid_argument
+#include <exception>
+// std::max
+#include <algorithm>
+
+#include <boost/pool/poolfwd.hpp>
+
+// boost::math::static_lcm
+#include <boost/math/common_factor_ct.hpp>
+// boost::simple_segregated_storage
+#include <boost/pool/simple_segregated_storage.hpp>
+// boost::alignment_of
+#include <boost/type_traits/alignment_of.hpp>
+// BOOST_ASSERT
+#include <boost/assert.hpp>
+
+#ifdef BOOST_POOL_INSTRUMENT
+#include <iostream>
+#include<iomanip>
+#endif
+#ifdef BOOST_POOL_VALGRIND
+#include <set>
+#include <valgrind/memcheck.h>
+#endif
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+ namespace std { using ::malloc; using ::free; }
+#endif
+
+// There are a few places in this file where the expression "this->m" is used.
+// This expression is used to force instantiation-time name lookup, which I am
+// informed is required for strict Standard compliance. It's only necessary
+// if "m" is a member of a base class that is dependent on a template
+// parameter.
+// Thanks to Jens Maurer for pointing this out!
+
+/*!
+ \file
+ \brief Provides class \ref pool: a fast memory allocator that guarantees proper alignment of all allocated chunks,
+ and which extends and generalizes the framework provided by the simple segregated storage solution.
+ Also provides two UserAllocator classes which can be used in conjuction with \ref pool.
+*/
+
+/*!
+ \mainpage Boost.Pool Memory Allocation Scheme
+
+ \section intro_sec Introduction
+
+ Pool allocation is a memory allocation scheme that is very fast, but limited in its usage.
+
+ This Doxygen-style documentation is complementary to the
+ full Quickbook-generated html and pdf documentation at www.boost.org.
+
+ This page generated from file pool.hpp.
+
+*/
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127) // Conditional expression is constant
+#endif
+
+ namespace boost
+{
+
+//! \brief Allocator used as the default template parameter for
+//! a UserAllocator
+//! template parameter. Uses new and delete.
+struct default_user_allocator_new_delete
+{
+ typedef std::size_t size_type; //!< An unsigned integral type that can represent the size of the largest object to be allocated.
+ typedef std::ptrdiff_t difference_type; //!< A signed integral type that can represent the difference of any two pointers.
+
+ static char * malloc BOOST_PREVENT_MACRO_SUBSTITUTION(const size_type bytes)
+ { //! Attempts to allocate n bytes from the system. Returns 0 if out-of-memory
+ return new (std::nothrow) char[bytes];
+ }
+ static void free BOOST_PREVENT_MACRO_SUBSTITUTION(char * const block)
+ { //! Attempts to de-allocate block.
+ //! \pre Block must have been previously returned from a call to UserAllocator::malloc.
+ delete [] block;
+ }
+};
+
+//! \brief UserAllocator
+//! used as template parameter for \ref pool and \ref object_pool.
+//! Uses malloc and free internally.
+struct default_user_allocator_malloc_free
+{
+ typedef std::size_t size_type; //!< An unsigned integral type that can represent the size of the largest object to be allocated.
+ typedef std::ptrdiff_t difference_type; //!< A signed integral type that can represent the difference of any two pointers.
+
+ static char * malloc BOOST_PREVENT_MACRO_SUBSTITUTION(const size_type bytes)
+ { return static_cast<char *>((std::malloc)(bytes)); }
+ static void free BOOST_PREVENT_MACRO_SUBSTITUTION(char * const block)
+ { (std::free)(block); }
+};
+
+namespace details
+{ //! Implemention only.
+
+template <typename SizeType>
+class PODptr
+{ //! PODptr is a class that pretends to be a "pointer" to different class types
+ //! that don't really exist. It provides member functions to access the "data"
+ //! of the "object" it points to. Since these "class" types are of variable
+ //! size, and contains some information at the *end* of its memory
+ //! (for alignment reasons),
+ //! PODptr must contain the size of this "class" as well as the pointer to this "object".
+
+ /*! \details A PODptr holds the location and size of a memory block allocated from the system.
+ Each memory block is split logically into three sections:
+
+ <b>Chunk area</b>. This section may be different sizes. PODptr does not care what the size of the chunks is,
+ but it does care (and keep track of) the total size of the chunk area.
+
+ <b>Next pointer</b>. This section is always the same size for a given SizeType. It holds a pointer
+ to the location of the next memory block in the memory block list, or 0 if there is no such block.
+
+ <b>Next size</b>. This section is always the same size for a given SizeType. It holds the size of the
+ next memory block in the memory block list.
+
+The PODptr class just provides cleaner ways of dealing with raw memory blocks.
+
+A PODptr object is either valid or invalid. An invalid PODptr is analogous to a null pointer.
+The default constructor for PODptr will result in an invalid object.
+Calling the member function invalidate will result in that object becoming invalid.
+The member function valid can be used to test for validity.
+*/
+ public:
+ typedef SizeType size_type;
+
+ private:
+ char * ptr;
+ size_type sz;
+
+ char * ptr_next_size() const
+ {
+ return (ptr + sz - sizeof(size_type));
+ }
+ char * ptr_next_ptr() const
+ {
+ return (ptr_next_size() -
+ math::static_lcm<sizeof(size_type), sizeof(void *)>::value);
+ }
+
+ public:
+ PODptr(char * const nptr, const size_type nsize)
+ :ptr(nptr), sz(nsize)
+ {
+ //! A PODptr may be created to point to a memory block by passing
+ //! the address and size of that memory block into the constructor.
+ //! A PODptr constructed in this way is valid.
+ }
+ PODptr()
+ : ptr(0), sz(0)
+ { //! default constructor for PODptr will result in an invalid object.
+ }
+
+ bool valid() const
+ { //! A PODptr object is either valid or invalid.
+ //! An invalid PODptr is analogous to a null pointer.
+ //! \returns true if PODptr is valid, false if invalid.
+ return (begin() != 0);
+ }
+ void invalidate()
+ { //! Make object invalid.
+ begin() = 0;
+ }
+ char * & begin()
+ { //! Each PODptr keeps the address and size of its memory block.
+ //! \returns The address of its memory block.
+ return ptr;
+ }
+ char * begin() const
+ { //! Each PODptr keeps the address and size of its memory block.
+ //! \return The address of its memory block.
+ return ptr;
+ }
+ char * end() const
+ { //! \returns begin() plus element_size (a 'past the end' value).
+ return ptr_next_ptr();
+ }
+ size_type total_size() const
+ { //! Each PODptr keeps the address and size of its memory block.
+ //! The address may be read or written by the member functions begin.
+ //! The size of the memory block may only be read,
+ //! \returns size of the memory block.
+ return sz;
+ }
+ size_type element_size() const
+ { //! \returns size of element pointer area.
+ return static_cast<size_type>(sz - sizeof(size_type) -
+ math::static_lcm<sizeof(size_type), sizeof(void *)>::value);
+ }
+
+ size_type & next_size() const
+ { //!
+ //! \returns next_size.
+ return *(static_cast<size_type *>(static_cast<void*>((ptr_next_size()))));
+ }
+ char * & next_ptr() const
+ { //! \returns pointer to next pointer area.
+ return *(static_cast<char **>(static_cast<void*>(ptr_next_ptr())));
+ }
+
+ PODptr next() const
+ { //! \returns next PODptr.
+ return PODptr<size_type>(next_ptr(), next_size());
+ }
+ void next(const PODptr & arg) const
+ { //! Sets next PODptr.
+ next_ptr() = arg.begin();
+ next_size() = arg.total_size();
+ }
+}; // class PODptr
+} // namespace details
+
+#ifndef BOOST_POOL_VALGRIND
+/*!
+ \brief A fast memory allocator that guarantees proper alignment of all allocated chunks.
+
+ \details Whenever an object of type pool needs memory from the system,
+ it will request it from its UserAllocator template parameter.
+ The amount requested is determined using a doubling algorithm;
+ that is, each time more system memory is allocated,
+ the amount of system memory requested is doubled.
+
+ Users may control the doubling algorithm by using the following extensions:
+
+ Users may pass an additional constructor parameter to pool.
+ This parameter is of type size_type,
+ and is the number of chunks to request from the system
+ the first time that object needs to allocate system memory.
+ The default is 32. This parameter may not be 0.
+
+ Users may also pass an optional third parameter to pool's
+ constructor. This parameter is of type size_type,
+ and sets a maximum size for allocated chunks. When this
+ parameter takes the default value of 0, then there is no upper
+ limit on chunk size.
+
+ Finally, if the doubling algorithm results in no memory
+ being allocated, the pool will backtrack just once, halving
+ the chunk size and trying again.
+
+ <b>UserAllocator type</b> - the method that the Pool will use to allocate memory from the system.
+
+ There are essentially two ways to use class pool: the client can call \ref malloc() and \ref free() to allocate
+ and free single chunks of memory, this is the most efficient way to use a pool, but does not allow for
+ the efficient allocation of arrays of chunks. Alternatively, the client may call \ref ordered_malloc() and \ref
+ ordered_free(), in which case the free list is maintained in an ordered state, and efficient allocation of arrays
+ of chunks are possible. However, this latter option can suffer from poor performance when large numbers of
+ allocations are performed.
+
+*/
+template <typename UserAllocator>
+class pool: protected simple_segregated_storage < typename UserAllocator::size_type >
+{
+ public:
+ typedef UserAllocator user_allocator; //!< User allocator.
+ typedef typename UserAllocator::size_type size_type; //!< An unsigned integral type that can represent the size of the largest object to be allocated.
+ typedef typename UserAllocator::difference_type difference_type; //!< A signed integral type that can represent the difference of any two pointers.
+
+ private:
+ BOOST_STATIC_CONSTANT(size_type, min_alloc_size =
+ (::boost::math::static_lcm<sizeof(void *), sizeof(size_type)>::value) );
+ BOOST_STATIC_CONSTANT(size_type, min_align =
+ (::boost::math::static_lcm< ::boost::alignment_of<void *>::value, ::boost::alignment_of<size_type>::value>::value) );
+
+ //! \returns 0 if out-of-memory.
+ //! Called if malloc/ordered_malloc needs to resize the free list.
+ void * malloc_need_resize(); //! Called if malloc needs to resize the free list.
+ void * ordered_malloc_need_resize(); //! Called if ordered_malloc needs to resize the free list.
+
+ protected:
+ details::PODptr<size_type> list; //!< List structure holding ordered blocks.
+
+ simple_segregated_storage<size_type> & store()
+ { //! \returns pointer to store.
+ return *this;
+ }
+ const simple_segregated_storage<size_type> & store() const
+ { //! \returns pointer to store.
+ return *this;
+ }
+ const size_type requested_size;
+ size_type next_size;
+ size_type start_size;
+ size_type max_size;
+
+ //! finds which POD in the list 'chunk' was allocated from.
+ details::PODptr<size_type> find_POD(void * const chunk) const;
+
+ // is_from() tests a chunk to determine if it belongs in a block.
+ static bool is_from(void * const chunk, char * const i,
+ const size_type sizeof_i)
+ { //! \param chunk chunk to check if is from this pool.
+ //! \param i memory chunk at i with element sizeof_i.
+ //! \param sizeof_i element size (size of the chunk area of that block, not the total size of that block).
+ //! \returns true if chunk was allocated or may be returned.
+ //! as the result of a future allocation.
+ //!
+ //! Returns false if chunk was allocated from some other pool,
+ //! or may be returned as the result of a future allocation from some other pool.
+ //! Otherwise, the return value is meaningless.
+ //!
+ //! Note that this function may not be used to reliably test random pointer values.
+
+ // We use std::less_equal and std::less to test 'chunk'
+ // against the array bounds because standard operators
+ // may return unspecified results.
+ // This is to ensure portability. The operators < <= > >= are only
+ // defined for pointers to objects that are 1) in the same array, or
+ // 2) subobjects of the same object [5.9/2].
+ // The functor objects guarantee a total order for any pointer [20.3.3/8]
+ std::less_equal<void *> lt_eq;
+ std::less<void *> lt;
+ return (lt_eq(i, chunk) && lt(chunk, i + sizeof_i));
+ }
+
+ size_type alloc_size() const
+ { //! Calculated size of the memory chunks that will be allocated by this Pool.
+ //! \returns allocated size.
+ // For alignment reasons, this used to be defined to be lcm(requested_size, sizeof(void *), sizeof(size_type)),
+ // but is now more parsimonious: just rounding up to the minimum required alignment of our housekeeping data
+ // when required. This works provided all alignments are powers of two.
+ size_type s = (std::max)(requested_size, min_alloc_size);
+ size_type rem = s % min_align;
+ if(rem)
+ s += min_align - rem;
+ BOOST_ASSERT(s >= min_alloc_size);
+ BOOST_ASSERT(s % min_align == 0);
+ return s;
+ }
+
+ static void * & nextof(void * const ptr)
+ { //! \returns Pointer dereferenced.
+ //! (Provided and used for the sake of code readability :)
+ return *(static_cast<void **>(ptr));
+ }
+
+ public:
+ // pre: npartition_size != 0 && nnext_size != 0
+ explicit pool(const size_type nrequested_size,
+ const size_type nnext_size = 32,
+ const size_type nmax_size = 0)
+ :
+ list(0, 0), requested_size(nrequested_size), next_size(nnext_size), start_size(nnext_size),max_size(nmax_size)
+ { //! Constructs a new empty Pool that can be used to allocate chunks of size RequestedSize.
+ //! \param nrequested_size Requested chunk size
+ //! \param nnext_size parameter is of type size_type,
+ //! is the number of chunks to request from the system
+ //! the first time that object needs to allocate system memory.
+ //! The default is 32. This parameter may not be 0.
+ //! \param nmax_size is the maximum number of chunks to allocate in one block.
+ }
+
+ ~pool()
+ { //! Destructs the Pool, freeing its list of memory blocks.
+ purge_memory();
+ }
+
+ // Releases memory blocks that don't have chunks allocated
+ // pre: lists are ordered
+ // Returns true if memory was actually deallocated
+ bool release_memory();
+
+ // Releases *all* memory blocks, even if chunks are still allocated
+ // Returns true if memory was actually deallocated
+ bool purge_memory();
+
+ size_type get_next_size() const
+ { //! Number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be 0.
+ //! \returns next_size;
+ return next_size;
+ }
+ void set_next_size(const size_type nnext_size)
+ { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0.
+ //! \returns nnext_size.
+ next_size = start_size = nnext_size;
+ }
+ size_type get_max_size() const
+ { //! \returns max_size.
+ return max_size;
+ }
+ void set_max_size(const size_type nmax_size)
+ { //! Set max_size.
+ max_size = nmax_size;
+ }
+ size_type get_requested_size() const
+ { //! \returns the requested size passed into the constructor.
+ //! (This value will not change during the lifetime of a Pool object).
+ return requested_size;
+ }
+
+ // Both malloc and ordered_malloc do a quick inlined check first for any
+ // free chunks. Only if we need to get another memory block do we call
+ // the non-inlined *_need_resize() functions.
+ // Returns 0 if out-of-memory
+ void * malloc BOOST_PREVENT_MACRO_SUBSTITUTION()
+ { //! Allocates a chunk of memory. Searches in the list of memory blocks
+ //! for a block that has a free chunk, and returns that free chunk if found.
+ //! Otherwise, creates a new memory block, adds its free list to pool's free list,
+ //! \returns a free chunk from that block.
+ //! If a new memory block cannot be allocated, returns 0. Amortized O(1).
+ // Look for a non-empty storage
+ if (!store().empty())
+ return (store().malloc)();
+ return malloc_need_resize();
+ }
+
+ void * ordered_malloc()
+ { //! Same as malloc, only merges the free lists, to preserve order. Amortized O(1).
+ //! \returns a free chunk from that block.
+ //! If a new memory block cannot be allocated, returns 0. Amortized O(1).
+ // Look for a non-empty storage
+ if (!store().empty())
+ return (store().malloc)();
+ return ordered_malloc_need_resize();
+ }
+
+ // Returns 0 if out-of-memory
+ // Allocate a contiguous section of n chunks
+ void * ordered_malloc(size_type n);
+ //! Same as malloc, only allocates enough contiguous chunks to cover n * requested_size bytes. Amortized O(n).
+ //! \returns a free chunk from that block.
+ //! If a new memory block cannot be allocated, returns 0. Amortized O(1).
+
+ // pre: 'chunk' must have been previously
+ // returned by *this.malloc().
+ void free BOOST_PREVENT_MACRO_SUBSTITUTION(void * const chunk)
+ { //! Deallocates a chunk of memory. Note that chunk may not be 0. O(1).
+ //!
+ //! Chunk must have been previously returned by t.malloc() or t.ordered_malloc().
+ //! Assumes that chunk actually refers to a block of chunks
+ //! spanning n * partition_sz bytes.
+ //! deallocates each chunk in that block.
+ //! Note that chunk may not be 0. O(n).
+ (store().free)(chunk);
+ }
+
+ // pre: 'chunk' must have been previously
+ // returned by *this.malloc().
+ void ordered_free(void * const chunk)
+ { //! Same as above, but is order-preserving.
+ //!
+ //! Note that chunk may not be 0. O(N) with respect to the size of the free list.
+ //! chunk must have been previously returned by t.malloc() or t.ordered_malloc().
+ store().ordered_free(chunk);
+ }
+
+ // pre: 'chunk' must have been previously
+ // returned by *this.malloc(n).
+ void free BOOST_PREVENT_MACRO_SUBSTITUTION(void * const chunks, const size_type n)
+ { //! Assumes that chunk actually refers to a block of chunks.
+ //!
+ //! chunk must have been previously returned by t.ordered_malloc(n)
+ //! spanning n * partition_sz bytes.
+ //! Deallocates each chunk in that block.
+ //! Note that chunk may not be 0. O(n).
+ const size_type partition_size = alloc_size();
+ const size_type total_req_size = n * requested_size;
+ const size_type num_chunks = total_req_size / partition_size +
+ ((total_req_size % partition_size) ? true : false);
+
+ store().free_n(chunks, num_chunks, partition_size);
+ }
+
+ // pre: 'chunk' must have been previously
+ // returned by *this.malloc(n).
+ void ordered_free(void * const chunks, const size_type n)
+ { //! Assumes that chunk actually refers to a block of chunks spanning n * partition_sz bytes;
+ //! deallocates each chunk in that block.
+ //!
+ //! Note that chunk may not be 0. Order-preserving. O(N + n) where N is the size of the free list.
+ //! chunk must have been previously returned by t.malloc() or t.ordered_malloc().
+
+ const size_type partition_size = alloc_size();
+ const size_type total_req_size = n * requested_size;
+ const size_type num_chunks = total_req_size / partition_size +
+ ((total_req_size % partition_size) ? true : false);
+
+ store().ordered_free_n(chunks, num_chunks, partition_size);
+ }
+
+ // is_from() tests a chunk to determine if it was allocated from *this
+ bool is_from(void * const chunk) const
+ { //! \returns Returns true if chunk was allocated from u or
+ //! may be returned as the result of a future allocation from u.
+ //! Returns false if chunk was allocated from some other pool or
+ //! may be returned as the result of a future allocation from some other pool.
+ //! Otherwise, the return value is meaningless.
+ //! Note that this function may not be used to reliably test random pointer values.
+ return (find_POD(chunk).valid());
+ }
+};
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+template <typename UserAllocator>
+typename pool<UserAllocator>::size_type const pool<UserAllocator>::min_alloc_size;
+template <typename UserAllocator>
+typename pool<UserAllocator>::size_type const pool<UserAllocator>::min_align;
+#endif
+
+template <typename UserAllocator>
+bool pool<UserAllocator>::release_memory()
+{ //! pool must be ordered. Frees every memory block that doesn't have any allocated chunks.
+ //! \returns true if at least one memory block was freed.
+
+ // ret is the return value: it will be set to true when we actually call
+ // UserAllocator::free(..)
+ bool ret = false;
+
+ // This is a current & previous iterator pair over the memory block list
+ details::PODptr<size_type> ptr = list;
+ details::PODptr<size_type> prev;
+
+ // This is a current & previous iterator pair over the free memory chunk list
+ // Note that "prev_free" in this case does NOT point to the previous memory
+ // chunk in the free list, but rather the last free memory chunk before the
+ // current block.
+ void * free_p = this->first;
+ void * prev_free_p = 0;
+
+ const size_type partition_size = alloc_size();
+
+ // Search through all the all the allocated memory blocks
+ while (ptr.valid())
+ {
+ // At this point:
+ // ptr points to a valid memory block
+ // free_p points to either:
+ // 0 if there are no more free chunks
+ // the first free chunk in this or some next memory block
+ // prev_free_p points to either:
+ // the last free chunk in some previous memory block
+ // 0 if there is no such free chunk
+ // prev is either:
+ // the PODptr whose next() is ptr
+ // !valid() if there is no such PODptr
+
+ // If there are no more free memory chunks, then every remaining
+ // block is allocated out to its fullest capacity, and we can't
+ // release any more memory
+ if (free_p == 0)
+ break;
+
+ // We have to check all the chunks. If they are *all* free (i.e., present
+ // in the free list), then we can free the block.
+ bool all_chunks_free = true;
+
+ // Iterate 'i' through all chunks in the memory block
+ // if free starts in the memory block, be careful to keep it there
+ void * saved_free = free_p;
+ for (char * i = ptr.begin(); i != ptr.end(); i += partition_size)
+ {
+ // If this chunk is not free
+ if (i != free_p)
+ {
+ // We won't be able to free this block
+ all_chunks_free = false;
+
+ // free_p might have travelled outside ptr
+ free_p = saved_free;
+ // Abort searching the chunks; we won't be able to free this
+ // block because a chunk is not free.
+ break;
+ }
+
+ // We do not increment prev_free_p because we are in the same block
+ free_p = nextof(free_p);
+ }
+
+ // post: if the memory block has any chunks, free_p points to one of them
+ // otherwise, our assertions above are still valid
+
+ const details::PODptr<size_type> next = ptr.next();
+
+ if (!all_chunks_free)
+ {
+ if (is_from(free_p, ptr.begin(), ptr.element_size()))
+ {
+ std::less<void *> lt;
+ void * const end = ptr.end();
+ do
+ {
+ prev_free_p = free_p;
+ free_p = nextof(free_p);
+ } while (free_p && lt(free_p, end));
+ }
+ // This invariant is now restored:
+ // free_p points to the first free chunk in some next memory block, or
+ // 0 if there is no such chunk.
+ // prev_free_p points to the last free chunk in this memory block.
+
+ // We are just about to advance ptr. Maintain the invariant:
+ // prev is the PODptr whose next() is ptr, or !valid()
+ // if there is no such PODptr
+ prev = ptr;
+ }
+ else
+ {
+ // All chunks from this block are free
+
+ // Remove block from list
+ if (prev.valid())
+ prev.next(next);
+ else
+ list = next;
+
+ // Remove all entries in the free list from this block
+ if (prev_free_p != 0)
+ nextof(prev_free_p) = free_p;
+ else
+ this->first = free_p;
+
+ // And release memory
+ (UserAllocator::free)(ptr.begin());
+ ret = true;
+ }
+
+ // Increment ptr
+ ptr = next;
+ }
+
+ next_size = start_size;
+ return ret;
+}
+
+template <typename UserAllocator>
+bool pool<UserAllocator>::purge_memory()
+{ //! pool must be ordered.
+ //! Frees every memory block.
+ //!
+ //! This function invalidates any pointers previously returned
+ //! by allocation functions of t.
+ //! \returns true if at least one memory block was freed.
+
+ details::PODptr<size_type> iter = list;
+
+ if (!iter.valid())
+ return false;
+
+ do
+ {
+ // hold "next" pointer
+ const details::PODptr<size_type> next = iter.next();
+
+ // delete the storage
+ (UserAllocator::free)(iter.begin());
+
+ // increment iter
+ iter = next;
+ } while (iter.valid());
+
+ list.invalidate();
+ this->first = 0;
+ next_size = start_size;
+
+ return true;
+}
+
+template <typename UserAllocator>
+void * pool<UserAllocator>::malloc_need_resize()
+{ //! No memory in any of our storages; make a new storage,
+ //! Allocates chunk in newly malloc aftert resize.
+ //! \returns pointer to chunk.
+ size_type partition_size = alloc_size();
+ size_type POD_size = static_cast<size_type>(next_size * partition_size +
+ math::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type));
+ char * ptr = (UserAllocator::malloc)(POD_size);
+ if (ptr == 0)
+ {
+ if(next_size > 4)
+ {
+ next_size >>= 1;
+ partition_size = alloc_size();
+ POD_size = static_cast<size_type>(next_size * partition_size +
+ math::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type));
+ ptr = (UserAllocator::malloc)(POD_size);
+ }
+ if(ptr == 0)
+ return 0;
+ }
+ const details::PODptr<size_type> node(ptr, POD_size);
+
+ BOOST_USING_STD_MIN();
+ if(!max_size)
+ next_size <<= 1;
+ else if( next_size*partition_size/requested_size < max_size)
+ next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size);
+
+ // initialize it,
+ store().add_block(node.begin(), node.element_size(), partition_size);
+
+ // insert it into the list,
+ node.next(list);
+ list = node;
+
+ // and return a chunk from it.
+ return (store().malloc)();
+}
+
+template <typename UserAllocator>
+void * pool<UserAllocator>::ordered_malloc_need_resize()
+{ //! No memory in any of our storages; make a new storage,
+ //! \returns pointer to new chunk.
+ size_type partition_size = alloc_size();
+ size_type POD_size = static_cast<size_type>(next_size * partition_size +
+ math::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type));
+ char * ptr = (UserAllocator::malloc)(POD_size);
+ if (ptr == 0)
+ {
+ if(next_size > 4)
+ {
+ next_size >>= 1;
+ partition_size = alloc_size();
+ POD_size = static_cast<size_type>(next_size * partition_size +
+ math::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type));
+ ptr = (UserAllocator::malloc)(POD_size);
+ }
+ if(ptr == 0)
+ return 0;
+ }
+ const details::PODptr<size_type> node(ptr, POD_size);
+
+ BOOST_USING_STD_MIN();
+ if(!max_size)
+ next_size <<= 1;
+ else if( next_size*partition_size/requested_size < max_size)
+ next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size);
+
+ // initialize it,
+ // (we can use "add_block" here because we know that
+ // the free list is empty, so we don't have to use
+ // the slower ordered version)
+ store().add_ordered_block(node.begin(), node.element_size(), partition_size);
+
+ // insert it into the list,
+ // handle border case
+ if (!list.valid() || std::greater<void *>()(list.begin(), node.begin()))
+ {
+ node.next(list);
+ list = node;
+ }
+ else
+ {
+ details::PODptr<size_type> prev = list;
+
+ while (true)
+ {
+ // if we're about to hit the end or
+ // if we've found where "node" goes
+ if (prev.next_ptr() == 0
+ || std::greater<void *>()(prev.next_ptr(), node.begin()))
+ break;
+
+ prev = prev.next();
+ }
+
+ node.next(prev.next());
+ prev.next(node);
+ }
+ // and return a chunk from it.
+ return (store().malloc)();
+}
+
+template <typename UserAllocator>
+void * pool<UserAllocator>::ordered_malloc(const size_type n)
+{ //! Gets address of a chunk n, allocating new memory if not already available.
+ //! \returns Address of chunk n if allocated ok.
+ //! \returns 0 if not enough memory for n chunks.
+
+ const size_type partition_size = alloc_size();
+ const size_type total_req_size = n * requested_size;
+ const size_type num_chunks = total_req_size / partition_size +
+ ((total_req_size % partition_size) ? true : false);
+
+ void * ret = store().malloc_n(num_chunks, partition_size);
+
+#ifdef BOOST_POOL_INSTRUMENT
+ std::cout << "Allocating " << n << " chunks from pool of size " << partition_size << std::endl;
+#endif
+ if ((ret != 0) || (n == 0))
+ return ret;
+
+#ifdef BOOST_POOL_INSTRUMENT
+ std::cout << "Cache miss, allocating another chunk...\n";
+#endif
+
+ // Not enough memory in our storages; make a new storage,
+ BOOST_USING_STD_MAX();
+ next_size = max BOOST_PREVENT_MACRO_SUBSTITUTION(next_size, num_chunks);
+ size_type POD_size = static_cast<size_type>(next_size * partition_size +
+ math::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type));
+ char * ptr = (UserAllocator::malloc)(POD_size);
+ if (ptr == 0)
+ {
+ if(num_chunks < next_size)
+ {
+ // Try again with just enough memory to do the job, or at least whatever we
+ // allocated last time:
+ next_size >>= 1;
+ next_size = max BOOST_PREVENT_MACRO_SUBSTITUTION(next_size, num_chunks);
+ POD_size = static_cast<size_type>(next_size * partition_size +
+ math::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type));
+ ptr = (UserAllocator::malloc)(POD_size);
+ }
+ if(ptr == 0)
+ return 0;
+ }
+ const details::PODptr<size_type> node(ptr, POD_size);
+
+ // Split up block so we can use what wasn't requested.
+ if (next_size > num_chunks)
+ store().add_ordered_block(node.begin() + num_chunks * partition_size,
+ node.element_size() - num_chunks * partition_size, partition_size);
+
+ BOOST_USING_STD_MIN();
+ if(!max_size)
+ next_size <<= 1;
+ else if( next_size*partition_size/requested_size < max_size)
+ next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size);
+
+ // insert it into the list,
+ // handle border case.
+ if (!list.valid() || std::greater<void *>()(list.begin(), node.begin()))
+ {
+ node.next(list);
+ list = node;
+ }
+ else
+ {
+ details::PODptr<size_type> prev = list;
+
+ while (true)
+ {
+ // if we're about to hit the end, or if we've found where "node" goes.
+ if (prev.next_ptr() == 0
+ || std::greater<void *>()(prev.next_ptr(), node.begin()))
+ break;
+
+ prev = prev.next();
+ }
+
+ node.next(prev.next());
+ prev.next(node);
+ }
+
+ // and return it.
+ return node.begin();
+}
+
+template <typename UserAllocator>
+details::PODptr<typename pool<UserAllocator>::size_type>
+pool<UserAllocator>::find_POD(void * const chunk) const
+{ //! find which PODptr storage memory that this chunk is from.
+ //! \returns the PODptr that holds this chunk.
+ // Iterate down list to find which storage this chunk is from.
+ details::PODptr<size_type> iter = list;
+ while (iter.valid())
+ {
+ if (is_from(chunk, iter.begin(), iter.element_size()))
+ return iter;
+ iter = iter.next();
+ }
+
+ return iter;
+}
+
+#else // BOOST_POOL_VALGRIND
+
+template<typename UserAllocator>
+class pool
+{
+public:
+ // types
+ typedef UserAllocator user_allocator; // User allocator.
+ typedef typename UserAllocator::size_type size_type; // An unsigned integral type that can represent the size of the largest object to be allocated.
+ typedef typename UserAllocator::difference_type difference_type; // A signed integral type that can represent the difference of any two pointers.
+
+ // construct/copy/destruct
+ explicit pool(const size_type s, const size_type = 32, const size_type m = 0) : chunk_size(s), max_alloc_size(m) {}
+ ~pool()
+ {
+ purge_memory();
+ }
+
+ bool release_memory()
+ {
+ bool ret = free_list.empty() ? false : true;
+ for(std::set<void*>::iterator pos = free_list.begin(); pos != free_list.end(); ++pos)
+ {
+ (user_allocator::free)(static_cast<char*>(*pos));
+ }
+ free_list.clear();
+ return ret;
+ }
+ bool purge_memory()
+ {
+ bool ret = free_list.empty() && used_list.empty() ? false : true;
+ for(std::set<void*>::iterator pos = free_list.begin(); pos != free_list.end(); ++pos)
+ {
+ (user_allocator::free)(static_cast<char*>(*pos));
+ }
+ free_list.clear();
+ for(std::set<void*>::iterator pos = used_list.begin(); pos != used_list.end(); ++pos)
+ {
+ (user_allocator::free)(static_cast<char*>(*pos));
+ }
+ used_list.clear();
+ return ret;
+ }
+ size_type get_next_size() const
+ {
+ return 1;
+ }
+ void set_next_size(const size_type){}
+ size_type get_max_size() const
+ {
+ return max_alloc_size;
+ }
+ void set_max_size(const size_type s)
+ {
+ max_alloc_size = s;
+ }
+ size_type get_requested_size() const
+ {
+ return chunk_size;
+ }
+ void * malloc BOOST_PREVENT_MACRO_SUBSTITUTION()
+ {
+ void* ret;
+ if(free_list.empty())
+ {
+ ret = (user_allocator::malloc)(chunk_size);
+ VALGRIND_MAKE_MEM_UNDEFINED(ret, chunk_size);
+ }
+ else
+ {
+ ret = *free_list.begin();
+ free_list.erase(free_list.begin());
+ VALGRIND_MAKE_MEM_UNDEFINED(ret, chunk_size);
+ }
+ used_list.insert(ret);
+ return ret;
+ }
+ void * ordered_malloc()
+ {
+ return (this->malloc)();
+ }
+ void * ordered_malloc(size_type n)
+ {
+ if(max_alloc_size && (n > max_alloc_size))
+ return 0;
+ void* ret = (user_allocator::malloc)(chunk_size * n);
+ used_list.insert(ret);
+ return ret;
+ }
+ void free BOOST_PREVENT_MACRO_SUBSTITUTION(void *const chunk)
+ {
+ BOOST_ASSERT(used_list.count(chunk) == 1);
+ BOOST_ASSERT(free_list.count(chunk) == 0);
+ used_list.erase(chunk);
+ free_list.insert(chunk);
+ VALGRIND_MAKE_MEM_NOACCESS(chunk, chunk_size);
+ }
+ void ordered_free(void *const chunk)
+ {
+ return (this->free)(chunk);
+ }
+ void free BOOST_PREVENT_MACRO_SUBSTITUTION(void *const chunk, const size_type)
+ {
+ BOOST_ASSERT(used_list.count(chunk) == 1);
+ BOOST_ASSERT(free_list.count(chunk) == 0);
+ used_list.erase(chunk);
+ (user_allocator::free)(static_cast<char*>(chunk));
+ }
+ void ordered_free(void *const chunk, const size_type n)
+ {
+ (this->free)(chunk, n);
+ }
+ bool is_from(void *const chunk) const
+ {
+ return used_list.count(chunk) || free_list.count(chunk);
+ }
+
+protected:
+ size_type chunk_size, max_alloc_size;
+ std::set<void*> free_list, used_list;
+};
+
+#endif
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif // #ifdef BOOST_POOL_HPP
+

Added: sandbox/pool/boost/pool/pool_alloc.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/pool_alloc.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,488 @@
+// Copyright (C) 2000, 2001 Stephen Cleary
+// Copyright (C) 2010 Paul A. Bristow added Doxygen comments.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_POOL_ALLOC_HPP
+#define BOOST_POOL_ALLOC_HPP
+
+/*!
+ \file
+ \brief C++ Standard Library compatible pool-based allocators.
+ \details This header provides two template types -
+ \ref pool_allocator and \ref fast_pool_allocator -
+ that can be used for fast and efficient memory allocation
+ in conjunction with the C++ Standard Library containers.
+
+ These types both satisfy the Standard Allocator requirements [20.1.5]
+ and the additional requirements in [20.1.5/4],
+ so they can be used with either Standard or user-supplied containers.
+
+ In addition, the fast_pool_allocator also provides an additional allocation
+ and an additional deallocation function:
+
+<table>
+<tr><th>Expression</th><th>Return Type</th><th>Semantic Equivalence<th></tr>
+<tr><td><tt>PoolAlloc::allocate()</tt></td><td><tt>T *</tt></td><td><tt>PoolAlloc::allocate(1)</tt></tr>
+<tr><td><tt>PoolAlloc::deallocate(p)</tt></td><td>void</tt></td><td><tt>PoolAlloc::deallocate(p, 1)</tt></tr>
+</table>
+
+The typedef user_allocator publishes the value of the UserAllocator template parameter.
+
+<b>Notes</b>
+
+If the allocation functions run out of memory, they will throw <tt>std::bad_alloc</tt>.
+
+The underlying Pool type used by the allocators is accessible through the Singleton Pool Interface.
+The identifying tag used for pool_allocator is pool_allocator_tag,
+and the tag used for fast_pool_allocator is fast_pool_allocator_tag.
+All template parameters of the allocators (including implementation-specific ones)
+determine the type of the underlying Pool,
+with the exception of the first parameter T, whose size is used instead.
+
+Since the size of T is used to determine the type of the underlying Pool,
+each allocator for different types of the same size will share the same underlying pool.
+The tag class prevents pools from being shared between pool_allocator and fast_pool_allocator.
+For example, on a system where
+<tt>sizeof(int) == sizeof(void *)</tt>, <tt>pool_allocator<int></tt> and <tt>pool_allocator<void *></tt>
+will both allocate/deallocate from/to the same pool.
+
+If there is only one thread running before main() starts and after main() ends,
+then both allocators are completely thread-safe.
+
+<b>Compiler and STL Notes</b>
+
+A number of common STL libraries contain bugs in their using of allocators.
+Specifically, they pass null pointers to the deallocate 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:
+Borland C++ (Builder and command-line compiler)
+with default (RogueWave) library, ver. 5 and earlier,
+STLport (with any compiler), ver. 4.0 and earlier.
+*/
+
+// std::numeric_limits
+#include <boost/limits.hpp>
+// new, std::bad_alloc
+#include <new>
+
+#include <boost/throw_exception.hpp>
+#include <boost/pool/poolfwd.hpp>
+
+// boost::singleton_pool
+#include <boost/pool/singleton_pool.hpp>
+
+#include <boost/detail/workaround.hpp>
+
+#ifdef BOOST_POOL_INSTRUMENT
+#include <iostream>
+#include <iomanip>
+#endif
+
+// The following code will be put into Boost.Config in a later revision
+#if defined(_RWSTD_VER) || defined(__SGI_STL_PORT) || \
+ BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+ #define BOOST_NO_PROPER_STL_DEALLOCATE
+#endif
+
+namespace boost {
+
+#ifdef BOOST_POOL_INSTRUMENT
+
+template <bool b>
+struct debug_info
+{
+ static unsigned allocated;
+};
+
+template <bool b>
+unsigned debug_info<b>::allocated = 0;
+
+#endif
+
+ //! Simple tag type used by pool_allocator as an argument to the
+ //! underlying singleton_pool.
+ struct pool_allocator_tag
+{
+};
+
+/*! \brief A C++ Standard Library conforming allocator, based on an underlying pool.
+
+ Template parameters for pool_allocator are defined as follows:
+
+ <b>T</b> Type of object to allocate/deallocate.
+
+ <b>UserAllocator</B>. Defines the method that the underlying Pool will use to allocate memory from the system. See
+ User Allocators for details.
+
+ <b>Mutex</b> Allows the user to determine the type of synchronization to be used on the underlying singleton_pool.
+
+ <b>NextSize</b> The value of this parameter is passed to the underlying singleton_pool when it is created.
+
+ <b>MaxSize</b> Limit on the maximum size used.
+
+ \attention
+ The underlying singleton_pool used by the this allocator
+ constructs a pool instance that
+ <b>is never freed</b>. This means that memory allocated
+ by the allocator can be still used after main() has
+ completed, but may mean that some memory checking programs
+ will complain about leaks.
+
+
+ */
+template <typename T,
+ typename UserAllocator,
+ typename Mutex,
+ unsigned NextSize,
+ unsigned MaxSize >
+class pool_allocator
+{
+ public:
+ typedef T value_type; //!< value_type of template parameter T.
+ typedef UserAllocator user_allocator; //!< allocator that defines the method that the underlying Pool will use to allocate memory from the system.
+ typedef Mutex mutex; //!< typedef mutex publishes the value of the template parameter Mutex.
+ BOOST_STATIC_CONSTANT(unsigned, next_size = NextSize); //!< next_size publishes the values of the template parameter NextSize.
+
+ typedef value_type * pointer; //!<
+ typedef const value_type * const_pointer;
+ typedef value_type & reference;
+ typedef const value_type & const_reference;
+ typedef typename pool<UserAllocator>::size_type size_type;
+ typedef typename pool<UserAllocator>::difference_type difference_type;
+
+ //! \brief Nested class rebind allows for transformation from
+ //! pool_allocator<T> to pool_allocator<U>.
+ //!
+ //! Nested class rebind allows for transformation from
+ //! pool_allocator<T> to pool_allocator<U> via the member
+ //! typedef other.
+ template <typename U>
+ struct rebind
+ { //
+ typedef pool_allocator<U, UserAllocator, Mutex, NextSize, MaxSize> other;
+ };
+
+ public:
+ pool_allocator()
+ { /*! Results in default construction of the underlying singleton_pool IFF an
+ instance of this allocator is constructed during global initialization (
+ required to ensure construction of singleton_pool IFF an
+ instance of this allocator is constructed during global
+ initialization. See ticket #2359 for a complete explanation at
+ http://svn.boost.org/trac/boost/ticket/2359) .
+ */
+ singleton_pool<pool_allocator_tag, sizeof(T), UserAllocator, Mutex,
+ NextSize, MaxSize>::is_from(0);
+ }
+
+ // default copy constructor.
+
+ // default assignment operator.
+
+ // not explicit, mimicking std::allocator [20.4.1]
+ template <typename U>
+ pool_allocator(const pool_allocator<U, UserAllocator, Mutex, NextSize, MaxSize> &)
+ { /*! Results in the default construction of the underlying singleton_pool, this
+ is required to ensure construction of singleton_pool IFF an
+ instance of this allocator is constructed during global
+ initialization. See ticket #2359 for a complete explanation
+ at http://svn.boost.org/trac/boost/ticket/2359 .
+ */
+ singleton_pool<pool_allocator_tag, sizeof(T), UserAllocator, Mutex,
+ NextSize, MaxSize>::is_from(0);
+ }
+
+ // default destructor
+
+ static pointer address(reference r)
+ { return &r; }
+ static const_pointer address(const_reference s)
+ { return &s; }
+ static size_type max_size()
+ { return (std::numeric_limits<size_type>::max)(); }
+ static void construct(const pointer ptr, const value_type & t)
+ { new (ptr) T(t); }
+ static void destroy(const pointer ptr)
+ {
+ ptr->~T();
+ (void) ptr; // avoid unused variable warning.
+ }
+
+ bool operator==(const pool_allocator &) const
+ { return true; }
+ bool operator!=(const pool_allocator &) const
+ { return false; }
+
+ static pointer allocate(const size_type n)
+ {
+#ifdef BOOST_POOL_INSTRUMENT
+ debug_info<true>::allocated += n * sizeof(T);
+ std::cout << "Allocating " << n << " * " << sizeof(T) << " bytes...\n"
+ "Total allocated is now " << debug_info<true>::allocated << std::endl;
+#endif
+ const pointer ret = static_cast<pointer>(
+ singleton_pool<pool_allocator_tag, sizeof(T), UserAllocator, Mutex,
+ NextSize, MaxSize>::ordered_malloc(n) );
+ if ((ret == 0) && n)
+ boost::throw_exception(std::bad_alloc());
+ return ret;
+ }
+ static pointer allocate(const size_type n, const void * const)
+ { //! allocate n bytes
+ //! \param n bytes to allocate.
+ //! \param unused.
+ return allocate(n);
+ }
+ static void deallocate(const pointer ptr, const size_type n)
+ { //! Deallocate n bytes from ptr
+ //! \param ptr location to deallocate from.
+ //! \param n number of bytes to deallocate.
+#ifdef BOOST_POOL_INSTRUMENT
+ debug_info<true>::allocated -= n * sizeof(T);
+ std::cout << "Deallocating " << n << " * " << sizeof(T) << " bytes...\n"
+ "Total allocated is now " << debug_info<true>::allocated << std::endl;
+#endif
+#ifdef BOOST_NO_PROPER_STL_DEALLOCATE
+ if (ptr == 0 || n == 0)
+ return;
+#endif
+ singleton_pool<pool_allocator_tag, sizeof(T), UserAllocator, Mutex,
+ NextSize, MaxSize>::ordered_free(ptr, n);
+ }
+};
+
+/*! \brief Specialization of pool_allocator<void>.
+
+Specialization of pool_allocator for type void: required by the standard to make this a conforming allocator type.
+*/
+template<
+ typename UserAllocator,
+ typename Mutex,
+ unsigned NextSize,
+ unsigned MaxSize>
+class pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>
+{
+public:
+ typedef void* pointer;
+ typedef const void* const_pointer;
+ typedef void value_type;
+ //! \brief Nested class rebind allows for transformation from
+ //! pool_allocator<T> to pool_allocator<U>.
+ //!
+ //! Nested class rebind allows for transformation from
+ //! pool_allocator<T> to pool_allocator<U> via the member
+ //! typedef other.
+ template <class U>
+ struct rebind
+ {
+ typedef pool_allocator<U, UserAllocator, Mutex, NextSize, MaxSize> other;
+ };
+};
+
+//! Simple tag type used by fast_pool_allocator as a template parameter to the underlying singleton_pool.
+struct fast_pool_allocator_tag
+{
+};
+
+ /*! \brief A C++ Standard Library conforming allocator geared towards allocating single chunks.
+
+ While class template <tt>pool_allocator</tt> is a more general-purpose solution geared towards
+ efficiently servicing requests for any number of contiguous chunks,
+ <tt>fast_pool_allocator</tt> is also a general-purpose solution,
+ but is geared towards efficiently servicing requests for one chunk at a time;
+ it will work for contiguous chunks, but not as well as <tt>pool_allocator</tt>.
+
+ If you are seriously concerned about performance,
+ use <tt>fast_pool_allocator</tt> when dealing with containers such as <tt>std::list</tt>,
+ and use <tt>pool_allocator</tt> when dealing with containers such as <tt>std::vector</tt>.
+
+ The template parameters are defined as follows:
+
+ <b>T</b> Type of object to allocate/deallocate.
+
+ <b>UserAllocator</b>. Defines the method that the underlying Pool will use to allocate memory from the system.
+ See User Allocators for details.
+
+ <b>Mutex</b> Allows the user to determine the type of synchronization to be used on the underlying <tt>singleton_pool</tt>.
+
+ <b>NextSize</b> The value of this parameter is passed to the underlying Pool when it is created.
+
+ <b>MaxSize</b> Limit on the maximum size used.
+
+ \attention
+ The underlying singleton_pool used by the this allocator
+ constructs a pool instance that
+ <b>is never freed</b>. This means that memory allocated
+ by the allocator can be still used after main() has
+ completed, but may mean that some memory checking programs
+ will complain about leaks.
+
+ */
+
+template <typename T,
+ typename UserAllocator,
+ typename Mutex,
+ unsigned NextSize,
+ unsigned MaxSize >
+class fast_pool_allocator
+{
+ public:
+ typedef T value_type;
+ typedef UserAllocator user_allocator;
+ typedef Mutex mutex;
+ BOOST_STATIC_CONSTANT(unsigned, next_size = NextSize);
+
+ typedef value_type * pointer;
+ typedef const value_type * const_pointer;
+ typedef value_type & reference;
+ typedef const value_type & const_reference;
+ typedef typename pool<UserAllocator>::size_type size_type;
+ typedef typename pool<UserAllocator>::difference_type difference_type;
+
+ //! \brief Nested class rebind allows for transformation from
+ //! fast_pool_allocator<T> to fast_pool_allocator<U>.
+ //!
+ //! Nested class rebind allows for transformation from
+ //! fast_pool_allocator<T> to fast_pool_allocator<U> via the member
+ //! typedef other.
+ template <typename U>
+ struct rebind
+ {
+ typedef fast_pool_allocator<U, UserAllocator, Mutex, NextSize, MaxSize> other;
+ };
+
+ public:
+ fast_pool_allocator()
+ {
+ //! Ensures construction of the underlying singleton_pool IFF an
+ //! instance of this allocator is constructed during global
+ //! initialization. See ticket #2359 for a complete explanation
+ //! at http://svn.boost.org/trac/boost/ticket/2359 .
+ singleton_pool<fast_pool_allocator_tag, sizeof(T),
+ UserAllocator, Mutex, NextSize, MaxSize>::is_from(0);
+ }
+
+ // Default copy constructor used.
+
+ // Default assignment operator used.
+
+ // Not explicit, mimicking std::allocator [20.4.1]
+ template <typename U>
+ fast_pool_allocator(
+ const fast_pool_allocator<U, UserAllocator, Mutex, NextSize, MaxSize> &)
+ {
+ //! Ensures construction of the underlying singleton_pool IFF an
+ //! instance of this allocator is constructed during global
+ //! initialization. See ticket #2359 for a complete explanation
+ //! at http://svn.boost.org/trac/boost/ticket/2359 .
+ singleton_pool<fast_pool_allocator_tag, sizeof(T),
+ UserAllocator, Mutex, NextSize, MaxSize>::is_from(0);
+ }
+
+ // Default destructor used.
+
+ static pointer address(reference r)
+ {
+ return &r;
+ }
+ static const_pointer address(const_reference s)
+ { return &s; }
+ static size_type max_size()
+ { return (std::numeric_limits<size_type>::max)(); }
+ void construct(const pointer ptr, const value_type & t)
+ { new (ptr) T(t); }
+ void destroy(const pointer ptr)
+ { //! Destroy ptr using destructor.
+ ptr->~T();
+ (void) ptr; // Avoid unused variable warning.
+ }
+
+ bool operator==(const fast_pool_allocator &) const
+ { return true; }
+ bool operator!=(const fast_pool_allocator &) const
+ { return false; }
+
+ static pointer allocate(const size_type n)
+ {
+ const pointer ret = (n == 1) ?
+ static_cast<pointer>(
+ (singleton_pool<fast_pool_allocator_tag, sizeof(T),
+ UserAllocator, Mutex, NextSize, MaxSize>::malloc)() ) :
+ static_cast<pointer>(
+ singleton_pool<fast_pool_allocator_tag, sizeof(T),
+ UserAllocator, Mutex, NextSize, MaxSize>::ordered_malloc(n) );
+ if (ret == 0)
+ boost::throw_exception(std::bad_alloc());
+ return ret;
+ }
+ static pointer allocate(const size_type n, const void * const)
+ { //! Allocate memory .
+ return allocate(n);
+ }
+ static pointer allocate()
+ { //! Allocate memory.
+ const pointer ret = static_cast<pointer>(
+ (singleton_pool<fast_pool_allocator_tag, sizeof(T),
+ UserAllocator, Mutex, NextSize, MaxSize>::malloc)() );
+ if (ret == 0)
+ boost::throw_exception(std::bad_alloc());
+ return ret;
+ }
+ static void deallocate(const pointer ptr, const size_type n)
+ { //! Deallocate memory.
+
+#ifdef BOOST_NO_PROPER_STL_DEALLOCATE
+ if (ptr == 0 || n == 0)
+ return;
+#endif
+ if (n == 1)
+ (singleton_pool<fast_pool_allocator_tag, sizeof(T),
+ UserAllocator, Mutex, NextSize, MaxSize>::free)(ptr);
+ else
+ (singleton_pool<fast_pool_allocator_tag, sizeof(T),
+ UserAllocator, Mutex, NextSize, MaxSize>::free)(ptr, n);
+ }
+ static void deallocate(const pointer ptr)
+ { //! deallocate/free
+ (singleton_pool<fast_pool_allocator_tag, sizeof(T),
+ UserAllocator, Mutex, NextSize, MaxSize>::free)(ptr);
+ }
+};
+
+/*! \brief Specialization of fast_pool_allocator<void>.
+
+Specialization of fast_pool_allocator<void> required to make the allocator standard-conforming.
+*/
+template<
+ typename UserAllocator,
+ typename Mutex,
+ unsigned NextSize,
+ unsigned MaxSize >
+class fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>
+{
+public:
+ typedef void* pointer;
+ typedef const void* const_pointer;
+ typedef void value_type;
+
+ //! \brief Nested class rebind allows for transformation from
+ //! fast_pool_allocator<T> to fast_pool_allocator<U>.
+ //!
+ //! Nested class rebind allows for transformation from
+ //! fast_pool_allocator<T> to fast_pool_allocator<U> via the member
+ //! typedef other.
+ template <class U> struct rebind
+ {
+ typedef fast_pool_allocator<U, UserAllocator, Mutex, NextSize, MaxSize> other;
+ };
+};
+
+} // namespace boost
+
+#endif

Added: sandbox/pool/boost/pool/poolfwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/poolfwd.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,82 @@
+// Copyright (C) 2000, 2001 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_POOLFWD_HPP
+#define BOOST_POOLFWD_HPP
+
+/*!
+ \file
+ \brief Forward declarations of all public (non-implemention) classes.
+*/
+
+
+#include <boost/config.hpp> // for workarounds
+
+// std::size_t
+#include <cstddef>
+
+// boost::details::pool::default_mutex
+#include <boost/pool/detail/mutex.hpp>
+
+namespace boost {
+
+//
+// Location: <boost/pool/simple_segregated_storage.hpp>
+//
+template <typename SizeType = std::size_t>
+class simple_segregated_storage;
+
+//
+// Location: <boost/pool/pool.hpp>
+//
+struct default_user_allocator_new_delete;
+struct default_user_allocator_malloc_free;
+
+template <typename UserAllocator = default_user_allocator_new_delete>
+class pool;
+
+//
+// Location: <boost/pool/object_pool.hpp>
+//
+template <typename T, typename UserAllocator = default_user_allocator_new_delete>
+class object_pool;
+
+//
+// Location: <boost/pool/singleton_pool.hpp>
+//
+template <typename Tag, unsigned RequestedSize,
+ typename UserAllocator = default_user_allocator_new_delete,
+ typename Mutex = details::pool::default_mutex,
+ unsigned NextSize = 32,
+ unsigned MaxSize = 0>
+class singleton_pool;
+
+//
+// Location: <boost/pool/pool_alloc.hpp>
+//
+struct pool_allocator_tag;
+
+template <typename T,
+ typename UserAllocator = default_user_allocator_new_delete,
+ typename Mutex = details::pool::default_mutex,
+ unsigned NextSize = 32,
+ unsigned MaxSize = 0>
+class pool_allocator;
+
+struct fast_pool_allocator_tag;
+
+template <typename T,
+ typename UserAllocator = default_user_allocator_new_delete,
+ typename Mutex = details::pool::default_mutex,
+ unsigned NextSize = 32,
+ unsigned MaxSize = 0>
+class fast_pool_allocator;
+
+} // namespace boost
+
+#endif

Added: sandbox/pool/boost/pool/simple_segregated_storage.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/simple_segregated_storage.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,377 @@
+// Copyright (C) 2000, 2001 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_SIMPLE_SEGREGATED_STORAGE_HPP
+#define BOOST_SIMPLE_SEGREGATED_STORAGE_HPP
+
+/*!
+ \file
+ \brief Simple Segregated Storage.
+ \details A simple segregated storage implementation:
+ simple segregated storage is the basic idea behind the Boost Pool library.
+ Simple segregated storage is the simplest, and probably the fastest,
+ memory allocation/deallocation algorithm.
+ It begins by partitioning a memory block into fixed-size chunks.
+ Where the block comes from is not important until implementation time.
+ A Pool is some object that uses Simple Segregated Storage in this fashion.
+*/
+
+// std::greater
+#include <functional>
+
+#include <boost/pool/poolfwd.hpp>
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127) // Conditional expression is constant
+#endif
+
+#ifdef BOOST_POOL_VALIDATE
+# define BOOST_POOL_VALIDATE_INTERNALS validate();
+#else
+# define BOOST_POOL_VALIDATE_INTERNALS
+#endif
+
+namespace boost {
+
+/*!
+
+\brief Simple Segregated Storage is the simplest, and probably the fastest,
+memory allocation/deallocation algorithm. It is responsible for
+partitioning a memory block into fixed-size chunks: where the block comes from
+is determined by the client of the class.
+
+\details Template class simple_segregated_storage controls access to a free list of memory chunks.
+Please note that this is a very simple class, with preconditions on almost all its functions. It is intended to
+be the fastest and smallest possible quick memory allocator - e.g., something to use in embedded systems.
+This class delegates many difficult preconditions to the user (i.e., alignment issues).
+
+An object of type simple_segregated_storage<SizeType> is empty if its free list is empty.
+If it is not empty, then it is ordered if its free list is ordered. A free list is ordered if repeated calls
+to <tt>malloc()</tt> will result in a constantly-increasing sequence of values, as determined by <tt>std::less<void *></tt>.
+A member function is <i>order-preserving</i> if the free list maintains its order orientation (that is, an
+ordered free list is still ordered after the member function call).
+
+*/
+template <typename SizeType>
+class simple_segregated_storage
+{
+ public:
+ typedef SizeType size_type;
+
+ private:
+ simple_segregated_storage(const simple_segregated_storage &);
+ void operator=(const simple_segregated_storage &);
+
+ static void * try_malloc_n(void * & start, size_type n,
+ size_type partition_size);
+
+ protected:
+ void * first; /*!< This data member is the free list.
+ It points to the first chunk in the free list,
+ or is equal to 0 if the free list is empty.
+ */
+
+ void * find_prev(void * ptr);
+
+ // for the sake of code readability :)
+ static void * & nextof(void * const ptr)
+ { //! The return value is just *ptr cast to the appropriate type. ptr must not be 0. (For the sake of code readability :)
+ //! As an example, let us assume that we want to truncate the free list after the first chunk.
+ //! That is, we want to set *first to 0; this will result in a free list with only one entry.
+ //! The normal way to do this is to first cast first to a pointer to a pointer to void,
+ //! and then dereference and assign (*static_cast<void **>(first) = 0;).
+ //! This can be done more easily through the use of this convenience function (nextof(first) = 0;).
+ //! \returns dereferenced pointer.
+ return *(static_cast<void **>(ptr));
+ }
+
+ public:
+ // Post: empty()
+ simple_segregated_storage()
+ :first(0)
+ { //! Construct empty storage area.
+ //! \post empty()
+ }
+
+ static void * segregate(void * block,
+ size_type nsz, size_type npartition_sz,
+ void * end = 0);
+
+ // Same preconditions as 'segregate'
+ // Post: !empty()
+ void add_block(void * const block,
+ const size_type nsz, const size_type npartition_sz)
+ { //! Add block
+ //! Segregate this block and merge its free list into the
+ //! free list referred to by "first".
+ //! \pre Same as segregate.
+ //! \post !empty()
+ BOOST_POOL_VALIDATE_INTERNALS
+ first = segregate(block, nsz, npartition_sz, first);
+ BOOST_POOL_VALIDATE_INTERNALS
+ }
+
+ // Same preconditions as 'segregate'
+ // Post: !empty()
+ void add_ordered_block(void * const block,
+ const size_type nsz, const size_type npartition_sz)
+ { //! add block (ordered into list)
+ //! This (slower) version of add_block segregates the
+ //! block and merges its free list into our free list
+ //! in the proper order.
+ BOOST_POOL_VALIDATE_INTERNALS
+ // Find where "block" would go in the free list
+ void * const loc = find_prev(block);
+
+ // Place either at beginning or in middle/end
+ if (loc == 0)
+ add_block(block, nsz, npartition_sz);
+ else
+ nextof(loc) = segregate(block, nsz, npartition_sz, nextof(loc));
+ BOOST_POOL_VALIDATE_INTERNALS
+ }
+
+ // default destructor.
+
+ bool empty() const
+ { //! \returns true only if simple_segregated_storage is empty.
+ return (first == 0);
+ }
+
+ void * malloc BOOST_PREVENT_MACRO_SUBSTITUTION()
+ { //! Create a chunk.
+ //! \pre !empty()
+ //! Increment the "first" pointer to point to the next chunk.
+ BOOST_POOL_VALIDATE_INTERNALS
+ void * const ret = first;
+
+ // Increment the "first" pointer to point to the next chunk.
+ first = nextof(first);
+ BOOST_POOL_VALIDATE_INTERNALS
+ return ret;
+ }
+
+ void free BOOST_PREVENT_MACRO_SUBSTITUTION(void * const chunk)
+ { //! Free a chunk.
+ //! \pre chunk was previously returned from a malloc() referring to the same free list.
+ //! \post !empty()
+ BOOST_POOL_VALIDATE_INTERNALS
+ nextof(chunk) = first;
+ first = chunk;
+ BOOST_POOL_VALIDATE_INTERNALS
+ }
+
+ void ordered_free(void * const chunk)
+ { //! This (slower) implementation of 'free' places the memory
+ //! back in the list in its proper order.
+ //! \pre chunk was previously returned from a malloc() referring to the same free list
+ //! \post !empty().
+
+ // Find where "chunk" goes in the free list
+ BOOST_POOL_VALIDATE_INTERNALS
+ void * const loc = find_prev(chunk);
+
+ // Place either at beginning or in middle/end.
+ if (loc == 0)
+ (free)(chunk);
+ else
+ {
+ nextof(chunk) = nextof(loc);
+ nextof(loc) = chunk;
+ }
+ BOOST_POOL_VALIDATE_INTERNALS
+ }
+
+ void * malloc_n(size_type n, size_type partition_size);
+
+ //! \pre chunks was previously allocated from *this with the same
+ //! values for n and partition_size.
+ //! \post !empty()
+ //! \note If you're allocating/deallocating n a lot, you should
+ //! be using an ordered pool.
+ void free_n(void * const chunks, const size_type n,
+ const size_type partition_size)
+ {
+ BOOST_POOL_VALIDATE_INTERNALS
+ if(n != 0)
+ add_block(chunks, n * partition_size, partition_size);
+ BOOST_POOL_VALIDATE_INTERNALS
+ }
+
+ // pre: chunks was previously allocated from *this with the same
+ // values for n and partition_size.
+ // post: !empty()
+ void ordered_free_n(void * const chunks, const size_type n,
+ const size_type partition_size)
+ { //! Free n chunks from order list.
+ //! \pre chunks was previously allocated from *this with the same
+ //! values for n and partition_size.
+
+ //! \pre n should not be zero (n == 0 has no effect).
+ BOOST_POOL_VALIDATE_INTERNALS
+ if(n != 0)
+ add_ordered_block(chunks, n * partition_size, partition_size);
+ BOOST_POOL_VALIDATE_INTERNALS
+ }
+#ifdef BOOST_POOL_VALIDATE
+ void validate()
+ {
+ int index = 0;
+ void* old = 0;
+ void* ptr = first;
+ while(ptr)
+ {
+ void* pt = nextof(ptr); // trigger possible segfault *before* we update variables
+ ++index;
+ old = ptr;
+ ptr = nextof(ptr);
+ }
+ }
+#endif
+};
+
+//! Traverses the free list referred to by "first",
+//! and returns the iterator previous to where
+//! "ptr" would go if it was in the free list.
+//! Returns 0 if "ptr" would go at the beginning
+//! of the free list (i.e., before "first").
+
+//! \note Note that this function finds the location previous to where ptr would go
+//! if it was in the free list.
+//! It does not find the entry in the free list before ptr
+//! (unless ptr is already in the free list).
+//! Specifically, find_prev(0) will return 0,
+//! not the last entry in the free list.
+//! \returns location previous to where ptr would go if it was in the free list.
+template <typename SizeType>
+void * simple_segregated_storage<SizeType>::find_prev(void * const ptr)
+{
+ // Handle border case.
+ if (first == 0 || std::greater<void *>()(first, ptr))
+ return 0;
+
+ void * iter = first;
+ while (true)
+ {
+ // if we're about to hit the end, or if we've found where "ptr" goes.
+ if (nextof(iter) == 0 || std::greater<void *>()(nextof(iter), ptr))
+ return iter;
+
+ iter = nextof(iter);
+ }
+}
+
+//! Segregate block into chunks.
+//! \pre npartition_sz >= sizeof(void *)
+//! \pre npartition_sz = sizeof(void *) * i, for some integer i
+//! \pre nsz >= npartition_sz
+//! \pre Block is properly aligned for an array of object of
+//! size npartition_sz and array of void *.
+//! The requirements above guarantee that any pointer to a chunk
+//! (which is a pointer to an element in an array of npartition_sz)
+//! may be cast to void **.
+template <typename SizeType>
+void * simple_segregated_storage<SizeType>::segregate(
+ void * const block,
+ const size_type sz,
+ const size_type partition_sz,
+ void * const end)
+{
+ // Get pointer to last valid chunk, preventing overflow on size calculations
+ // The division followed by the multiplication just makes sure that
+ // old == block + partition_sz * i, for some integer i, even if the
+ // block size (sz) is not a multiple of the partition size.
+ char * old = static_cast<char *>(block)
+ + ((sz - partition_sz) / partition_sz) * partition_sz;
+
+ // Set it to point to the end
+ nextof(old) = end;
+
+ // Handle border case where sz == partition_sz (i.e., we're handling an array
+ // of 1 element)
+ if (old == block)
+ return block;
+
+ // Iterate backwards, building a singly-linked list of pointers
+ for (char * iter = old - partition_sz; iter != block;
+ old = iter, iter -= partition_sz)
+ nextof(iter) = old;
+
+ // Point the first pointer, too
+ nextof(block) = old;
+
+ return block;
+}
+
+//! \pre (n > 0), (start != 0), (nextof(start) != 0)
+//! \post (start != 0)
+//! The function attempts to find n contiguous chunks
+//! of size partition_size in the free list, starting at start.
+//! If it succeds, it returns the last chunk in that contiguous
+//! sequence, so that the sequence is known by [start, {retval}]
+//! If it fails, it does do either because it's at the end of the
+//! free list or hits a non-contiguous chunk. In either case,
+//! it will return 0, and set start to the last considered
+//! chunk. You are at the end of the free list if
+//! nextof(start) == 0. Otherwise, start points to the last
+//! chunk in the contiguous sequence, and nextof(start) points
+//! to the first chunk in the next contiguous sequence (assuming
+//! an ordered free list).
+template <typename SizeType>
+void * simple_segregated_storage<SizeType>::try_malloc_n(
+ void * & start, size_type n, const size_type partition_size)
+{
+ void * iter = nextof(start);
+ while (--n != 0)
+ {
+ void * next = nextof(iter);
+ if (next != static_cast<char *>(iter) + partition_size)
+ {
+ // next == 0 (end-of-list) or non-contiguous chunk found
+ start = iter;
+ return 0;
+ }
+ iter = next;
+ }
+ return iter;
+}
+
+//! Attempts to find a contiguous sequence of n partition_sz-sized chunks. If found, removes them
+//! all from the free list and returns a pointer to the first. If not found, returns 0. It is strongly
+//! recommended (but not required) that the free list be ordered, as this algorithm will fail to find
+//! a contiguous sequence unless it is contiguous in the free list as well. Order-preserving.
+//! O(N) with respect to the size of the free list.
+template <typename SizeType>
+void * simple_segregated_storage<SizeType>::malloc_n(const size_type n,
+ const size_type partition_size)
+{
+ BOOST_POOL_VALIDATE_INTERNALS
+ if(n == 0)
+ return 0;
+ void * start = &first;
+ void * iter;
+ do
+ {
+ if (nextof(start) == 0)
+ return 0;
+ iter = try_malloc_n(start, n, partition_size);
+ } while (iter == 0);
+ void * const ret = nextof(start);
+ nextof(start) = nextof(iter);
+ BOOST_POOL_VALIDATE_INTERNALS
+ return ret;
+}
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif

Added: sandbox/pool/boost/pool/singleton_pool.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/boost/pool/singleton_pool.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,251 @@
+// Copyright (C) 2000, 2001 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_SINGLETON_POOL_HPP
+#define BOOST_SINGLETON_POOL_HPP
+
+/*!
+ \file
+ \brief The <tt>singleton_pool</tt> class allows other pool interfaces
+ for types of the same size to share the same underlying pool.
+
+ \details Header singleton_pool.hpp provides a template class <tt>singleton_pool</tt>,
+ which provides access to a pool as a singleton object.
+
+*/
+
+#include <boost/pool/poolfwd.hpp>
+
+// boost::pool
+#include <boost/pool/pool.hpp>
+// boost::details::pool::guard
+#include <boost/pool/detail/guard.hpp>
+
+#include <boost/type_traits/aligned_storage.hpp>
+
+namespace boost {
+
+ /*!
+ The singleton_pool class allows other pool interfaces
+ for types of the same size to share the same pool. Template
+ parameters are as follows:
+
+ <b>Tag</b> User-specified type to uniquely identify this pool: allows different unbounded sets of singleton pools to exist.
+
+ <b>RequestedSize</b> The size of each chunk returned by member function <tt>malloc()</tt>.
+
+ <B>UserAllocator</b> User allocator, default = default_user_allocator_new_delete.
+
+ <b>Mutex</B> This class is the type of mutex to use to protect simultaneous access to the underlying Pool.
+ Can be any Boost.Thread Mutex type or <tt>boost::details::pool::null_mutex</tt>.
+ It is exposed so that users may declare some singleton pools normally (i.e., with synchronization), but
+ some singleton pools without synchronization (by specifying <tt>boost::details::pool::null_mutex</tt>) for efficiency reasons.
+ The member typedef <tt>mutex</tt> exposes the value of this template parameter. The default for this
+ parameter is boost::details::pool::default_mutex which is a synonym for either <tt>boost::details::pool::null_mutex</tt>
+ (when threading support is turned off in the compiler (so BOOST_HAS_THREADS is not set), or threading support
+ has ben explicitly disabled with BOOST_DISABLE_THREADS (Boost-wide disabling of threads) or BOOST_POOL_NO_MT (this library only))
+ or for <tt>boost::mutex</tt> (when threading support is enabled in the compiler).
+
+ <B>NextSize</b> The value of this parameter is passed to the underlying Pool when it is created and
+ specifies the number of chunks to allocate in the first allocation request (defaults to 32).
+ The member typedef <tt>static const value next_size</tt> exposes the value of this template parameter.
+
+ <b>MaxSize</B>The value of this parameter is passed to the underlying Pool when it is created and
+ specifies the maximum number of chunks to allocate in any single allocation request (defaults to 0).
+
+ <b>Notes:</b>
+
+ The underlying pool <i>p</i> referenced by the static functions
+ in singleton_pool is actually declared in a way that is:
+
+ 1 Thread-safe if there is only one thread running before main() begins and after main() ends
+ -- all of the static functions of singleton_pool synchronize their access to p.
+
+ 2 Guaranteed to be constructed before it is used --
+ thus, the simple static object in the synopsis above would actually be an incorrect implementation.
+ The actual implementation to guarantee this is considerably more complicated.
+
+ 3 Note too that a different underlying pool p exists
+ for each different set of template parameters,
+ including implementation-specific ones.
+
+ 4 The underlying pool is constructed "as if" by:
+
+ pool<UserAllocator> p(RequestedSize, NextSize, MaxSize);
+
+ \attention
+ The underlying pool constructed by the singleton
+ <b>is never freed</b>. This means that memory allocated
+ by a singleton_pool can be still used after main() has
+ completed, but may mean that some memory checking programs
+ will complain about leaks from singleton_pool.
+
+ */
+
+ template <typename Tag,
+ unsigned RequestedSize,
+ typename UserAllocator,
+ typename Mutex,
+ unsigned NextSize,
+ unsigned MaxSize >
+class singleton_pool
+{
+ public:
+ typedef Tag tag; /*!< The Tag template parameter uniquely
+ identifies this pool and allows
+ different unbounded sets of singleton pools to exist.
+ For example, the pool allocators use two tag classes to ensure that the
+ two different allocator types never share the same underlying singleton pool.
+ Tag is never actually used by singleton_pool.
+ */
+ typedef Mutex mutex; //!< The type of mutex used to synchonise access to this pool (default <tt>details::pool::default_mutex</tt>).
+ typedef UserAllocator user_allocator; //!< The user-allocator used by this pool, default = <tt>default_user_allocator_new_delete</tt>.
+ typedef typename pool<UserAllocator>::size_type size_type; //!< size_type of user allocator.
+ typedef typename pool<UserAllocator>::difference_type difference_type; //!< difference_type of user allocator.
+
+ BOOST_STATIC_CONSTANT(unsigned, requested_size = RequestedSize); //!< The size of each chunk allocated by this pool.
+ BOOST_STATIC_CONSTANT(unsigned, next_size = NextSize); //!< The number of chunks to allocate on the first allocation.
+
+private:
+ singleton_pool();
+
+#ifndef BOOST_DOXYGEN
+ struct pool_type: public Mutex, public pool<UserAllocator>
+ {
+ pool_type() : pool<UserAllocator>(RequestedSize, NextSize, MaxSize) {}
+ }; // struct pool_type: Mutex
+
+#else
+ //
+ // This is invoked when we build with Doxygen only:
+ //
+public:
+ static pool<UserAllocator> p; //!< For exposition only!
+#endif
+
+
+ public:
+ static void * malloc BOOST_PREVENT_MACRO_SUBSTITUTION()
+ { //! Equivalent to SingletonPool::p.malloc(); synchronized.
+ pool_type & p = get_pool();
+ details::pool::guard<Mutex> g(p);
+ return (p.malloc)();
+ }
+ static void * ordered_malloc()
+ { //! Equivalent to SingletonPool::p.ordered_malloc(); synchronized.
+ pool_type & p = get_pool();
+ details::pool::guard<Mutex> g(p);
+ return p.ordered_malloc();
+ }
+ static void * ordered_malloc(const size_type n)
+ { //! Equivalent to SingletonPool::p.ordered_malloc(n); synchronized.
+ pool_type & p = get_pool();
+ details::pool::guard<Mutex> g(p);
+ return p.ordered_malloc(n);
+ }
+ static bool is_from(void * const ptr)
+ { //! Equivalent to SingletonPool::p.is_from(chunk); synchronized.
+ //! \returns true if chunk is from SingletonPool::is_from(chunk)
+ pool_type & p = get_pool();
+ details::pool::guard<Mutex> g(p);
+ return p.is_from(ptr);
+ }
+ static void free BOOST_PREVENT_MACRO_SUBSTITUTION(void * const ptr)
+ { //! Equivalent to SingletonPool::p.free(chunk); synchronized.
+ pool_type & p = get_pool();
+ details::pool::guard<Mutex> g(p);
+ (p.free)(ptr);
+ }
+ static void ordered_free(void * const ptr)
+ { //! Equivalent to SingletonPool::p.ordered_free(chunk); synchronized.
+ pool_type & p = get_pool();
+ details::pool::guard<Mutex> g(p);
+ p.ordered_free(ptr);
+ }
+ static void free BOOST_PREVENT_MACRO_SUBSTITUTION(void * const ptr, const size_type n)
+ { //! Equivalent to SingletonPool::p.free(chunk, n); synchronized.
+ pool_type & p = get_pool();
+ details::pool::guard<Mutex> g(p);
+ (p.free)(ptr, n);
+ }
+ static void ordered_free(void * const ptr, const size_type n)
+ { //! Equivalent to SingletonPool::p.ordered_free(chunk, n); synchronized.
+ pool_type & p = get_pool();
+ details::pool::guard<Mutex> g(p);
+ p.ordered_free(ptr, n);
+ }
+ static bool release_memory()
+ { //! Equivalent to SingletonPool::p.release_memory(); synchronized.
+ pool_type & p = get_pool();
+ details::pool::guard<Mutex> g(p);
+ return p.release_memory();
+ }
+ static bool purge_memory()
+ { //! Equivalent to SingletonPool::p.purge_memory(); synchronized.
+ pool_type & p = get_pool();
+ details::pool::guard<Mutex> g(p);
+ return p.purge_memory();
+ }
+
+private:
+ typedef boost::aligned_storage<sizeof(pool_type), boost::alignment_of<pool_type>::value> storage_type;
+ static storage_type storage;
+
+ static pool_type& get_pool()
+ {
+ static bool f = false;
+ if(!f)
+ {
+ // This code *must* be called before main() starts,
+ // and when only one thread is executing.
+ f = true;
+ new (&storage) pool_type;
+ }
+
+ // The following line does nothing else than force the instantiation
+ // of singleton<T>::create_object, whose constructor is
+ // called before main() begins.
+ create_object.do_nothing();
+
+ return *static_cast<pool_type*>(static_cast<void*>(&storage));
+ }
+
+ struct object_creator
+ {
+ object_creator()
+ { // This constructor does nothing more than ensure that instance()
+ // is called before main() begins, thus creating the static
+ // T object before multithreading race issues can come up.
+ singleton_pool<Tag, RequestedSize, UserAllocator, Mutex, NextSize, MaxSize>::get_pool();
+ }
+ inline void do_nothing() const
+ {
+ }
+ };
+ static object_creator create_object;
+}; // struct singleton_pool
+
+template <typename Tag,
+ unsigned RequestedSize,
+ typename UserAllocator,
+ typename Mutex,
+ unsigned NextSize,
+ unsigned MaxSize >
+typename singleton_pool<Tag, RequestedSize, UserAllocator, Mutex, NextSize, MaxSize>::storage_type singleton_pool<Tag, RequestedSize, UserAllocator, Mutex, NextSize, MaxSize>::storage;
+
+template <typename Tag,
+ unsigned RequestedSize,
+ typename UserAllocator,
+ typename Mutex,
+ unsigned NextSize,
+ unsigned MaxSize >
+typename singleton_pool<Tag, RequestedSize, UserAllocator, Mutex, NextSize, MaxSize>::object_creator singleton_pool<Tag, RequestedSize, UserAllocator, Mutex, NextSize, MaxSize>::create_object;
+
+} // namespace boost
+
+#endif

Added: sandbox/pool/libs/pool/doc/html/BOOST_POOL_VALIDATE_INTERNALS.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/BOOST_POOL_VALIDATE_INTERNALS.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro BOOST_POOL_VALIDATE_INTERNALS</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Boost.Pool">
+<link rel="up" href="header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;">
+<link rel="prev" href="boost/simple_segregated_storage.html" title="Class template simple_segregated_storage">
+<link rel="next" href="header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/simple_segregated_storage.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="header/boost/pool/simple_segregated_storage_hpp.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="header/boost/pool/singleton_pool_hpp.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="BOOST_POOL_VALIDATE_INTERNALS"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_POOL_VALIDATE_INTERNALS</span></h2>
+<p>BOOST_POOL_VALIDATE_INTERNALS</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;">boost/pool/simple_segregated_storage.hpp</a>&gt;
+
+</span>BOOST_POOL_VALIDATE_INTERNALS</pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/simple_segregated_storage.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="header/boost/pool/simple_segregated_storage_hpp.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="header/boost/pool/singleton_pool_hpp.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/default_user_allocator_malloc_free.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/default_user_allocator_malloc_free.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,69 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct default_user_allocator_malloc_free</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;">
+<link rel="prev" href="default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete">
+<link rel="next" href="pool.html" title="Class template pool">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="default_user_allocator_new_delete.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pool.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.default_user_allocator_malloc_free"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct default_user_allocator_malloc_free</span></h2>
+<p>boost::default_user_allocator_malloc_free &#8212; UserAllocator used as template parameter for <a class="link" href="pool.html" title="Class template pool">pool</a> and <a class="link" href="object_pool.html" title="Class template object_pool">object_pool</a>. Uses malloc and free internally. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;">boost/pool/pool.hpp</a>&gt;
+
+</span>
+<span class="keyword">struct</span> <a class="link" href="default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free">default_user_allocator_malloc_free</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="boost.default_user_allocator_malloc_free.size_type"></a><span class="identifier">size_type</span><span class="special">;</span> <span class="comment">// An unsigned integral type that can represent the size of the largest object to be allocated. </span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span> <a name="boost.default_user_allocator_malloc_free.difference_type"></a><span class="identifier">difference_type</span><span class="special">;</span> <span class="comment">// A signed integral type that can represent the difference of any two pointers. </span>
+
+ <span class="comment">// <a class="link" href="default_user_allocator_malloc_free.html#id376945-bb">public static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">char</span> <span class="special">*</span> <a class="link" href="default_user_allocator_malloc_free.html#id376947-bb"><span class="identifier">malloc</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="default_user_allocator_malloc_free.html#id376958-bb"><span class="identifier">free</span></a><span class="special">(</span><span class="keyword">char</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id927952"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id927956"></a><h3>
+<a name="id376945-bb"></a><code class="computeroutput">default_user_allocator_malloc_free</code> public static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="keyword">char</span> <span class="special">*</span> <a name="id376947-bb"></a><span class="identifier">malloc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> bytes<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id376958-bb"></a><span class="identifier">free</span><span class="special">(</span><span class="keyword">char</span> <span class="special">*</span><span class="keyword">const</span> block<span class="special">)</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="default_user_allocator_new_delete.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pool.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/default_user_allocator_new_delete.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/default_user_allocator_new_delete.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,83 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct default_user_allocator_new_delete</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;">
+<link rel="prev" href="../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;">
+<link rel="next" href="default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/pool/pool_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="default_user_allocator_malloc_free.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.default_user_allocator_new_delete"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct default_user_allocator_new_delete</span></h2>
+<p>boost::default_user_allocator_new_delete &#8212; Allocator used as the default template parameter for a UserAllocator template parameter. Uses new and delete. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;">boost/pool/pool.hpp</a>&gt;
+
+</span>
+<span class="keyword">struct</span> <a class="link" href="default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete">default_user_allocator_new_delete</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="boost.default_user_allocator_new_delete.size_type"></a><span class="identifier">size_type</span><span class="special">;</span> <span class="comment">// An unsigned integral type that can represent the size of the largest object to be allocated. </span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span> <a name="boost.default_user_allocator_new_delete.difference_type"></a><span class="identifier">difference_type</span><span class="special">;</span> <span class="comment">// A signed integral type that can represent the difference of any two pointers. </span>
+
+ <span class="comment">// <a class="link" href="default_user_allocator_new_delete.html#id376878-bb">public static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">char</span> <span class="special">*</span> <a class="link" href="default_user_allocator_new_delete.html#id376880-bb"><span class="identifier">malloc</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="default_user_allocator_new_delete.html#id376895-bb"><span class="identifier">free</span></a><span class="special">(</span><span class="keyword">char</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id927604"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id927608"></a><h3>
+<a name="id376878-bb"></a><code class="computeroutput">default_user_allocator_new_delete</code> public static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">char</span> <span class="special">*</span> <a name="id376880-bb"></a><span class="identifier">malloc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> bytes<span class="special">)</span><span class="special">;</span></pre>
+<p>Attempts to allocate n bytes from the system. Returns 0 if out-of-memory </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id376895-bb"></a><span class="identifier">free</span><span class="special">(</span><span class="keyword">char</span> <span class="special">*</span><span class="keyword">const</span> block<span class="special">)</span><span class="special">;</span></pre>
+<p>Attempts to de-allocate block.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td><p>Block must have been previously returned from a call to UserAllocator::malloc. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/pool/pool_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="default_user_allocator_malloc_free.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,177 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template fast_pool_allocator</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">
+<link rel="prev" href="fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag">
+<link rel="next" href="fast_pool_allocator/rebind.html" title="Struct template rebind">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="fast_pool_allocator_tag.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fast_pool_allocator/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.fast_pool_allocator"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template fast_pool_allocator</span></h2>
+<p>boost::fast_pool_allocator &#8212; A C++ Standard Library conforming allocator geared towards allocating single chunks. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">boost/pool/pool_alloc.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> UserAllocator<span class="special">,</span> <span class="keyword">typename</span> Mutex<span class="special">,</span>
+ <span class="keyword">unsigned</span> NextSize<span class="special">,</span> <span class="keyword">unsigned</span> MaxSize<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a name="boost.fast_pool_allocator.value_type"></a><span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span> <a name="boost.fast_pool_allocator.user_allocator"></a><span class="identifier">user_allocator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">Mutex</span> <a name="boost.fast_pool_allocator.mutex"></a><span class="identifier">mutex</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="special">*</span> <a name="boost.fast_pool_allocator.pointer"></a><span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">*</span> <a name="boost.fast_pool_allocator.const_pointer"></a><span class="identifier">const_pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <a name="boost.fast_pool_allocator.reference"></a><span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <a name="boost.fast_pool_allocator.const_reference"></a><span class="identifier">const_reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">size_type</span> <a name="boost.fast_pool_allocator.size_type"></a><span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">difference_type</span> <a name="boost.fast_pool_allocator.difference_type"></a><span class="identifier">difference_type</span><span class="special">;</span>
+
+ <span class="comment">// member classes/structs/unions</span>
+
+ <span class="comment">// Nested class rebind allows for transformation from fast_pool_allocator&lt;T&gt;
+ // to fast_pool_allocator&lt;U&gt;.</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+ <span class="keyword">struct</span> <a class="link" href="fast_pool_allocator/rebind.html" title="Struct template rebind">rebind</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <a class="link" href="fast_pool_allocator/rebind.html#boost.fast_pool_allocator.rebind.other"><span class="identifier">other</span></a><span class="special">;</span>
+ <span class="special">}</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="fast_pool_allocator.html#boost.fast_pool_allocatorconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="fast_pool_allocator.html#id378382-bb"><span class="identifier">fast_pool_allocator</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+ <a class="link" href="fast_pool_allocator.html#id378396-bb"><span class="identifier">fast_pool_allocator</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="fast_pool_allocator.html#id378321-bb">public member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="fast_pool_allocator.html#id378323-bb"><span class="identifier">construct</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="fast_pool_allocator.html#id378339-bb"><span class="identifier">destroy</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">bool</span> <a class="link" href="fast_pool_allocator.html#id378353-bb"><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <a class="link" href="fast_pool_allocator.html#id378368-bb"><span class="keyword">operator</span><span class="special">!=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="fast_pool_allocator.html#id378425-bb">public static functions</a></span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <a class="link" href="fast_pool_allocator.html#id378428-bb"><span class="identifier">address</span></a><span class="special">(</span><span class="identifier">reference</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">const_pointer</span> <a class="link" href="fast_pool_allocator.html#id378438-bb"><span class="identifier">address</span></a><span class="special">(</span><span class="identifier">const_reference</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">size_type</span> <a class="link" href="fast_pool_allocator.html#id378449-bb"><span class="identifier">max_size</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <a class="link" href="fast_pool_allocator.html#id378455-bb"><span class="identifier">allocate</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <a class="link" href="fast_pool_allocator.html#id378466-bb"><span class="identifier">allocate</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">void</span> <span class="special">*</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <a class="link" href="fast_pool_allocator.html#id378485-bb"><span class="identifier">allocate</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="fast_pool_allocator.html#id378495-bb"><span class="identifier">deallocate</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="fast_pool_allocator.html#id378514-bb"><span class="identifier">deallocate</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// public data members</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="identifier">next_size</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id937146"></a><h2>Description</h2>
+<p>While class template <code class="computeroutput"><a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a></code> is a more general-purpose solution geared towards efficiently servicing requests for any number of contiguous chunks, <code class="computeroutput"><a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a></code> is also a general-purpose solution, but is geared towards efficiently servicing requests for one chunk at a time; it will work for contiguous chunks, but not as well as <code class="computeroutput"><a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a></code>.</p>
+<p>If you are seriously concerned about performance, use <code class="computeroutput"><a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a></code> when dealing with containers such as <code class="computeroutput">std::list</code>, and use <code class="computeroutput"><a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a></code> when dealing with containers such as <code class="computeroutput">std::vector</code>.</p>
+<p>The template parameters are defined as follows:</p>
+<p><span class="bold"><strong>T</strong></span> Type of object to allocate/deallocate.</p>
+<p><span class="bold"><strong>UserAllocator</strong></span>. Defines the method that the underlying Pool will use to allocate memory from the system. See User Allocators for details.</p>
+<p><span class="bold"><strong>Mutex</strong></span> Allows the user to determine the type of synchronization to be used on the underlying <code class="computeroutput"><a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a></code>.</p>
+<p><span class="bold"><strong>NextSize</strong></span> The value of this parameter is passed to the underlying Pool when it is created.</p>
+<p><span class="bold"><strong>MaxSize</strong></span> Limit on the maximum size used.</p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>The underlying <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a> used by the this allocator constructs a pool instance that <span class="bold"><strong>is never freed</strong></span>. This means that memory allocated by the allocator can be still used after main() has completed, but may mean that some memory checking programs will complain about leaks. </p></td></tr>
+</table></div>
+<p>
+</p>
+<div class="refsect2">
+<a name="id937261"></a><h3>
+<a name="boost.fast_pool_allocatorconstruct-copy-destruct"></a><code class="computeroutput">fast_pool_allocator</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a name="id378382-bb"></a><span class="identifier">fast_pool_allocator</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Ensures construction of the underlying <code class="computeroutput"><a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a></code> IFF an instance of this allocator is constructed during global initialization. See ticket #2359 for a complete explanation at http://svn.boost.org/trac/boost/ticket/2359 . </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+ <a name="id378396-bb"></a><span class="identifier">fast_pool_allocator</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Ensures construction of the underlying <code class="computeroutput"><a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a></code> IFF an instance of this allocator is constructed during global initialization. See ticket #2359 for a complete explanation at http://svn.boost.org/trac/boost/ticket/2359 . </p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id937425"></a><h3>
+<a name="id378321-bb"></a><code class="computeroutput">fast_pool_allocator</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><pre class="literallayout"><span class="keyword">void</span> <a name="id378323-bb"></a><span class="identifier">construct</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span> ptr<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> t<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id378339-bb"></a><span class="identifier">destroy</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span> ptr<span class="special">)</span><span class="special">;</span></pre>
+<p>Destroy ptr using destructor. </p>
+</li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">bool</span> <a name="id378353-bb"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">bool</span> <a name="id378368-bb"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id937633"></a><h3>
+<a name="id378425-bb"></a><code class="computeroutput">fast_pool_allocator</code> public static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="identifier">pointer</span> <a name="id378428-bb"></a><span class="identifier">address</span><span class="special">(</span><span class="identifier">reference</span> r<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="identifier">const_pointer</span> <a name="id378438-bb"></a><span class="identifier">address</span><span class="special">(</span><span class="identifier">const_reference</span> s<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="identifier">size_type</span> <a name="id378449-bb"></a><span class="identifier">max_size</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="identifier">pointer</span> <a name="id378455-bb"></a><span class="identifier">allocate</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="identifier">pointer</span> <a name="id378466-bb"></a><span class="identifier">allocate</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">,</span> <span class="keyword">const</span> <span class="keyword">void</span> <span class="special">*</span> const<span class="special">)</span><span class="special">;</span></pre>
+<p>Allocate memory . </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="identifier">pointer</span> <a name="id378485-bb"></a><span class="identifier">allocate</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Allocate memory. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id378495-bb"></a><span class="identifier">deallocate</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span> ptr<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre>
+<p>Deallocate memory. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id378514-bb"></a><span class="identifier">deallocate</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span> ptr<span class="special">)</span><span class="special">;</span></pre>
+<p>deallocate/free </p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id938145"></a><h3>Specializations</h3>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><a class="link" href="fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</a></p></li></ul></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="fast_pool_allocator_tag.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fast_pool_allocator/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator/rebind.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator/rebind.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template rebind</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../fast_pool_allocator.html#id937146" title="Description">
+<link rel="prev" href="../fast_pool_allocator.html" title="Class template fast_pool_allocator">
+<link rel="next" href="../fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../fast_pool_allocator.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fast_pool_allocator.html#id937146"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../fast_pool_allocator_void__UserAllocat_id378528.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.fast_pool_allocator.rebind"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template rebind</span></h2>
+<p>boost::fast_pool_allocator::rebind &#8212; Nested class rebind allows for transformation from fast_pool_allocator&lt;T&gt; to fast_pool_allocator&lt;U&gt;. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">boost/pool/pool_alloc.hpp</a>&gt;
+
+</span>
+
+<span class="comment">// Nested class rebind allows for transformation from fast_pool_allocator&lt;T&gt;
+// to fast_pool_allocator&lt;U&gt;.</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="rebind.html" title="Struct template rebind">rebind</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="../fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <a name="boost.fast_pool_allocator.rebind.other"></a><span class="identifier">other</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id938139"></a><h2>Description</h2>
+<p>Nested class rebind allows for transformation from fast_pool_allocator&lt;T&gt; to fast_pool_allocator&lt;U&gt; via the member typedef other. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../fast_pool_allocator.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fast_pool_allocator.html#id937146"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../fast_pool_allocator_void__UserAllocat_id378528.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator_tag.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator_tag.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct fast_pool_allocator_tag</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">
+<link rel="prev" href="pool_allocator_void__UserAllocator__M_id378014/rebind.html" title="Struct template rebind">
+<link rel="next" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="pool_allocator_void__UserAllocator__M_id378014/rebind.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fast_pool_allocator.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.fast_pool_allocator_tag"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct fast_pool_allocator_tag</span></h2>
+<p>boost::fast_pool_allocator_tag &#8212; Simple tag type used by <a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a> as a template parameter to the underlying <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a>. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">boost/pool/pool_alloc.hpp</a>&gt;
+
+</span>
+<span class="keyword">struct</span> <a class="link" href="fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag">fast_pool_allocator_tag</a> <span class="special">{</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="pool_allocator_void__UserAllocator__M_id378014/rebind.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fast_pool_allocator.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id378528.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id378528.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">
+<link rel="prev" href="fast_pool_allocator/rebind.html" title="Struct template rebind">
+<link rel="next" href="fast_pool_allocator_void__UserAllocat_id378528/rebind.html" title="Struct template rebind">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="fast_pool_allocator/rebind.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fast_pool_allocator_void__UserAllocat_id378528/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.fast_pool_allocator_void,_UserAllocat_id378528"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></h2>
+<p>boost::fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt; &#8212; Specialization of fast_pool_allocator&lt;void&gt;. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">boost/pool/pool_alloc.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> UserAllocator<span class="special">,</span> <span class="keyword">typename</span> Mutex<span class="special">,</span> <span class="keyword">unsigned</span> NextSize<span class="special">,</span>
+ <span class="keyword">unsigned</span> MaxSize<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;">fast_pool_allocator</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span><span class="special">&gt;</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="special">*</span> <a name="boost.fast_pool_allocator_void,_UserAllocat_id378528.pointer"></a><span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">void</span> <span class="special">*</span> <a name="boost.fast_pool_allocator_void,_UserAllocat_id378528.const_pointer"></a><span class="identifier">const_pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <a name="boost.fast_pool_allocator_void,_UserAllocat_id378528.value_type"></a><span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="comment">// member classes/structs/unions</span>
+
+ <span class="comment">// Nested class rebind allows for transformation from fast_pool_allocator&lt;T&gt;
+ // to fast_pool_allocator&lt;U&gt;.</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+ <span class="keyword">struct</span> <a class="link" href="fast_pool_allocator_void__UserAllocat_id378528/rebind.html" title="Struct template rebind">rebind</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <a class="link" href="fast_pool_allocator_void__UserAllocat_id378528/rebind.html#boost.fast_pool_allocator_void,_UserAllocat_id378528.rebind.other"><span class="identifier">other</span></a><span class="special">;</span>
+ <span class="special">}</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id938511"></a><h2>Description</h2>
+<p>Specialization of fast_pool_allocator&lt;void&gt; required to make the allocator standard-conforming. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="fast_pool_allocator/rebind.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fast_pool_allocator_void__UserAllocat_id378528/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id378528/rebind.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id378528/rebind.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template rebind</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../fast_pool_allocator_void__UserAllocat_id378528.html#id938511" title="Description">
+<link rel="prev" href="../fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;">
+<link rel="next" href="../../header/boost/pool/poolfwd_hpp.html" title="Header &lt;boost/pool/poolfwd.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../fast_pool_allocator_void__UserAllocat_id378528.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fast_pool_allocator_void__UserAllocat_id378528.html#id938511"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../header/boost/pool/poolfwd_hpp.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.fast_pool_allocator_void,_UserAllocat_id378528.rebind"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template rebind</span></h2>
+<p>boost::fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;::rebind &#8212; Nested class rebind allows for transformation from fast_pool_allocator&lt;T&gt; to fast_pool_allocator&lt;U&gt;. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">boost/pool/pool_alloc.hpp</a>&gt;
+
+</span>
+
+<span class="comment">// Nested class rebind allows for transformation from fast_pool_allocator&lt;T&gt;
+// to fast_pool_allocator&lt;U&gt;.</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="rebind.html" title="Struct template rebind">rebind</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="../fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <a name="boost.fast_pool_allocator_void,_UserAllocat_id378528.rebind.other"></a><span class="identifier">other</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id938665"></a><h2>Description</h2>
+<p>Nested class rebind allows for transformation from fast_pool_allocator&lt;T&gt; to fast_pool_allocator&lt;U&gt; via the member typedef other. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../fast_pool_allocator_void__UserAllocat_id378528.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fast_pool_allocator_void__UserAllocat_id378528.html#id938511"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../header/boost/pool/poolfwd_hpp.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/object_pool.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/object_pool.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,285 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template object_pool</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;">
+<link rel="prev" href="../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;">
+<link rel="next" href="../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/pool/object_pool_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/object_pool_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../header/boost/pool/pool_hpp.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.object_pool"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template object_pool</span></h2>
+<p>boost::object_pool &#8212; A template class that can be used for fast and efficient memory allocation of objects. It also provides automatic destruction of non-deallocated objects. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;">boost/pool/object_pool.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> UserAllocator<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="object_pool.html" title="Class template object_pool">object_pool</a> <span class="special">:</span> <span class="keyword">protected</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pool</span><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a name="boost.object_pool.element_type"></a><span class="identifier">element_type</span><span class="special">;</span> <span class="comment">// ElementType. </span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span> <a name="boost.object_pool.user_allocator"></a><span class="identifier">user_allocator</span><span class="special">;</span> <span class="comment">// User allocator. </span>
+ <span class="keyword">typedef</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">size_type</span> <a name="boost.object_pool.size_type"></a><span class="identifier">size_type</span><span class="special">;</span> <span class="comment">// pool&lt;UserAllocator&gt;::size_type </span>
+ <span class="keyword">typedef</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">difference_type</span> <a name="boost.object_pool.difference_type"></a><span class="identifier">difference_type</span><span class="special">;</span> <span class="comment">// pool&lt;UserAllocator&gt;::difference_type </span>
+
+ <span class="comment">// <a class="link" href="object_pool.html#boost.object_poolconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <span class="keyword">explicit</span> <a class="link" href="object_pool.html#id376821-bb"><span class="identifier">object_pool</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> <span class="special">=</span> <span class="number">32</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="object_pool.html#id376845-bb"><span class="special">~</span><span class="identifier">object_pool</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="object_pool.html#id376561-bb">protected member functions</a></span>
+ <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <a class="link" href="object_pool.html#id376563-bb"><span class="identifier">store</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">const</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <a class="link" href="object_pool.html#id376584-bb"><span class="identifier">store</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="object_pool.html#id376605-bb">protected static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span><span class="special">&amp;</span> <a class="link" href="object_pool.html#id376608-bb"><span class="identifier">nextof</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="object_pool.html#id376626-bb">public member functions</a></span>
+ <span class="identifier">element_type</span> <span class="special">*</span> <a class="link" href="object_pool.html#id376628-bb"><span class="identifier">malloc</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="object_pool.html#id376644-bb"><span class="identifier">free</span></a><span class="special">(</span><span class="identifier">element_type</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">bool</span> <a class="link" href="object_pool.html#id376667-bb"><span class="identifier">is_from</span></a><span class="special">(</span><span class="identifier">element_type</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">element_type</span> <span class="special">*</span> <a class="link" href="object_pool.html#id376693-bb"><span class="identifier">construct</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Arg1<span class="special">,</span> <span class="special">...</span><span class="keyword">class</span> ArgN<span class="special">&gt;</span>
+ <span class="identifier">element_type</span> <span class="special">*</span> <a class="link" href="object_pool.html#id376706-bb"><span class="identifier">construct</span></a><span class="special">(</span><span class="identifier">Arg1</span> <span class="special">&amp;</span><span class="special">,</span> <span class="special">...</span><span class="identifier">ArgN</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="object_pool.html#id376765-bb"><span class="identifier">destroy</span></a><span class="special">(</span><span class="identifier">element_type</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+ <span class="identifier">size_type</span> <a class="link" href="object_pool.html#id376790-bb"><span class="identifier">get_next_size</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="object_pool.html#id376803-bb"><span class="identifier">set_next_size</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id926407"></a><h2>Description</h2>
+<p><span class="bold"><strong>T</strong></span> The type of object to allocate/deallocate. T must have a non-throwing destructor.</p>
+<p><span class="bold"><strong>UserAllocator</strong></span> Defines the allocator that the underlying Pool will use to allocate memory from the system. See User Allocators for details.</p>
+<p>Class <a class="link" href="object_pool.html" title="Class template object_pool">object_pool</a> is a template class that can be used for fast and efficient memory allocation of objects. It also provides automatic destruction of non-deallocated objects.</p>
+<p>When the object pool is destroyed, then the destructor for type T is called for each allocated T that has not yet been deallocated. O(N).</p>
+<p>Whenever an object of type ObjectPool needs memory from the system, it will request it from its UserAllocator template parameter. The amount requested is determined using a doubling algorithm; that is, each time more system memory is allocated, the amount of system memory requested is doubled. Users may control the doubling algorithm by the parameters passed to the object_pool's constructor. </p>
+<div class="refsect2">
+<a name="id926439"></a><h3>
+<a name="boost.object_poolconstruct-copy-destruct"></a><code class="computeroutput">object_pool</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">explicit</span> <a name="id376821-bb"></a><span class="identifier">object_pool</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> arg_next_size <span class="special">=</span> <span class="number">32</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">size_type</span> arg_max_size <span class="special">=</span> <span class="number">0</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Constructs a new (empty by default) ObjectPool.
+
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td><p>next_size != 0. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem"><pre class="literallayout"><a name="id376845-bb"></a><span class="special">~</span><span class="identifier">object_pool</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id926560"></a><h3>
+<a name="id376561-bb"></a><code class="computeroutput">object_pool</code> protected member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <a name="id376563-bb"></a><span class="identifier">store</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>The underlying boost:: <a class="link" href="pool.html" title="Class template pool">pool</a> storage used by *this. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">const</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <a name="id376584-bb"></a><span class="identifier">store</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>The underlying boost:: <a class="link" href="pool.html" title="Class template pool">pool</a> storage used by *this. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id926710"></a><h3>
+<a name="id376605-bb"></a><code class="computeroutput">object_pool</code> protected static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span><span class="special">&amp;</span> <a name="id376608-bb"></a><span class="identifier">nextof</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> ptr<span class="special">)</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>The next memory block after ptr (for the sake of code readability :) </p></td>
+</tr></tbody>
+</table></div>
+</li></ol></div>
+</div>
+<div class="refsect2">
+<a name="id926791"></a><h3>
+<a name="id376626-bb"></a><code class="computeroutput">object_pool</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="identifier">element_type</span> <span class="special">*</span> <a name="id376628-bb"></a><span class="identifier">malloc</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Allocates memory that can hold one object of type ElementType.</p>
+<p>If out of memory, returns 0.</p>
+<p>Amortized O(1). </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id376644-bb"></a><span class="identifier">free</span><span class="special">(</span><span class="identifier">element_type</span> <span class="special">*</span><span class="keyword">const</span> chunk<span class="special">)</span><span class="special">;</span></pre>
+<p>De-Allocates memory that holds a chunk of type ElementType.</p>
+<p>Note that p may not be 0.<br>
+</p>
+<p>Note that the destructor for p is not called. O(N). </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">bool</span> <a name="id376667-bb"></a><span class="identifier">is_from</span><span class="special">(</span><span class="identifier">element_type</span> <span class="special">*</span><span class="keyword">const</span> chunk<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>
+Returns false if chunk was allocated from some other pool or may be returned as the result of a future allocation from some other pool.</p>
+<p>Otherwise, the return value is meaningless.</p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>This function may NOT be used to reliably test random pointer values!</p></td></tr>
+</table></div>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>true if chunk was allocated from *this or may be returned as the result of a future allocation from *this.</p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="identifier">element_type</span> <span class="special">*</span> <a name="id376693-bb"></a><span class="identifier">construct</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>A pointer to an object of type T, allocated in memory from the underlying pool and default constructed. The returned objected can be freed by a call to destroy. Otherwise the returned object will be automatically destroyed when *this is destroyed. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Arg1<span class="special">,</span> <span class="special">...</span><span class="keyword">class</span> ArgN<span class="special">&gt;</span>
+ <span class="identifier">element_type</span> <span class="special">*</span> <a name="id376706-bb"></a><span class="identifier">construct</span><span class="special">(</span><span class="identifier">Arg1</span> <span class="special">&amp;</span><span class="special">,</span> <span class="special">...</span><span class="identifier">ArgN</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>Since the number and type of arguments to this function is totally arbitrary, a simple system has been set up to automatically generate template construct functions. This system is based on the macro preprocessor m4, which is standard on UNIX systems and also available for Win32 systems.<br>
+<br>
+ detail/pool_construct.m4, when run with m4, will create the file detail/pool_construct.ipp, which only defines the construct functions for the proper number of arguments. The number of arguments may be passed into the file as an m4 macro, NumberOfArguments; if not provided, it will default to 3.<br>
+<br>
+ For each different number of arguments (1 to NumberOfArguments), a template function is generated. There are the same number of template parameters as there are arguments, and each argument's type is a reference to that (possibly cv-qualified) template argument. Each possible permutation of the cv-qualifications is also generated.<br>
+<br>
+ Because each permutation is generated for each possible number of arguments, the included file size grows exponentially in terms of the number of constructor arguments, not linearly. For the sake of rational compile times, only use as many arguments as you need.<br>
+<br>
+ detail/pool_construct.bat and detail/pool_construct.sh are also provided to call m4, defining NumberOfArguments to be their command-line parameter. See these files for more details. </p></td></tr>
+</table></div>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>A pointer to an object of type T, allocated in memory from the underlying pool and constructed from arguments Arg1 to ArgN. The returned objected can be freed by a call to destroy. Otherwise the returned object will be automatically destroyed when *this is destroyed.</p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id376765-bb"></a><span class="identifier">destroy</span><span class="special">(</span><span class="identifier">element_type</span> <span class="special">*</span><span class="keyword">const</span> chunk<span class="special">)</span><span class="special">;</span></pre>
+<p>Destroys an object allocated with construct.</p>
+<p>Equivalent to:</p>
+<p>p-&gt;~ElementType(); this-&gt;free(p);</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td><p>p must have been previously allocated from *this via a call to construct. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="identifier">size_type</span> <a name="id376790-bb"></a><span class="identifier">get_next_size</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>The number of chunks that will be allocated next time we run out of memory. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id376803-bb"></a><span class="identifier">set_next_size</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> x<span class="special">)</span><span class="special">;</span></pre>
+<p>Set a new number of chunks to allocate the next time we run out of memory.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Parameters:</span></p></td>
+<td><div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><code class="computeroutput">x</code></span></p></td>
+<td><p>wanted next_size (must not be zero). </p></td>
+</tr></tbody>
+</table></div></td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/pool/object_pool_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/object_pool_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../header/boost/pool/pool_hpp.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/pool.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/pool.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,452 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template pool</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;">
+<link rel="prev" href="default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free">
+<link rel="next" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="default_user_allocator_malloc_free.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.pool"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template pool</span></h2>
+<p>boost::pool &#8212; A fast memory allocator that guarantees proper alignment of all allocated chunks. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;">boost/pool/pool.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> UserAllocator<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="pool.html" title="Class template pool">pool</a> <span class="special">:</span>
+ <span class="keyword">protected</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">simple_segregated_storage</span><span class="special">&lt;</span> <span class="identifier">UserAllocator</span><span class="special">::</span><span class="identifier">size_type</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span> <a name="boost.pool.user_allocator"></a><span class="identifier">user_allocator</span><span class="special">;</span> <span class="comment">// User allocator. </span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span><span class="special">::</span><span class="identifier">size_type</span> <a name="boost.pool.size_type"></a><span class="identifier">size_type</span><span class="special">;</span> <span class="comment">// An unsigned integral type that can represent the size of the largest object to be allocated. </span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span><span class="special">::</span><span class="identifier">difference_type</span> <a name="boost.pool.difference_type"></a><span class="identifier">difference_type</span><span class="special">;</span> <span class="comment">// A signed integral type that can represent the difference of any two pointers. </span>
+
+ <span class="comment">// <a class="link" href="pool.html#boost.poolconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <span class="keyword">explicit</span> <a class="link" href="pool.html#id377454-bb"><span class="identifier">pool</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> <span class="special">=</span> <span class="number">32</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="pool.html#id377492-bb"><span class="special">~</span><span class="identifier">pool</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="pool.html#id377028-bb">private member functions</a></span>
+ <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="pool.html#id377030-bb"><span class="identifier">malloc_need_resize</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="pool.html#id377051-bb"><span class="identifier">ordered_malloc_need_resize</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="pool.html#id377066-bb">protected member functions</a></span>
+ <a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a><span class="special">&lt;</span> <span class="identifier">size_type</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <a class="link" href="pool.html#id377069-bb"><span class="identifier">store</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">const</span> <a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a><span class="special">&lt;</span> <span class="identifier">size_type</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <a class="link" href="pool.html#id377084-bb"><span class="identifier">store</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ details::PODptr<span class="special">&lt;</span> <span class="identifier">size_type</span> <span class="special">&gt;</span> <a class="link" href="pool.html#id377101-bb"><span class="identifier">find_POD</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">size_type</span> <a class="link" href="pool.html#id377126-bb"><span class="identifier">alloc_size</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="pool.html#id377139-bb">protected static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <a class="link" href="pool.html#id377142-bb"><span class="identifier">is_from</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">,</span> <span class="keyword">char</span> <span class="special">*</span><span class="keyword">const</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span><span class="special">&amp;</span> <a class="link" href="pool.html#id377183-bb"><span class="identifier">nextof</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="pool.html#id377201-bb">public member functions</a></span>
+ <span class="keyword">bool</span> <a class="link" href="pool.html#id377203-bb"><span class="identifier">release_memory</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">bool</span> <a class="link" href="pool.html#id377216-bb"><span class="identifier">purge_memory</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="identifier">size_type</span> <a class="link" href="pool.html#id377232-bb"><span class="identifier">get_next_size</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="pool.html#id377246-bb"><span class="identifier">set_next_size</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="identifier">size_type</span> <a class="link" href="pool.html#id377264-bb"><span class="identifier">get_max_size</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="pool.html#id377277-bb"><span class="identifier">set_max_size</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="identifier">size_type</span> <a class="link" href="pool.html#id377291-bb"><span class="identifier">get_requested_size</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="pool.html#id377304-bb"><span class="identifier">malloc</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="pool.html#id377318-bb"><span class="identifier">ordered_malloc</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="pool.html#id377331-bb"><span class="identifier">ordered_malloc</span></a><span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="pool.html#id377351-bb"><span class="identifier">free</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="pool.html#id377375-bb"><span class="identifier">ordered_free</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="pool.html#id377392-bb"><span class="identifier">free</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="pool.html#id377415-bb"><span class="identifier">ordered_free</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">bool</span> <a class="link" href="pool.html#id377436-bb"><span class="identifier">is_from</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id929240"></a><h2>Description</h2>
+<p>Whenever an object of type pool needs memory from the system, it will request it from its UserAllocator template parameter. The amount requested is determined using a doubling algorithm; that is, each time more system memory is allocated, the amount of system memory requested is doubled.</p>
+<p>Users may control the doubling algorithm by using the following extensions:</p>
+<p>Users may pass an additional constructor parameter to pool. This parameter is of type size_type, and is the number of chunks to request from the system the first time that object needs to allocate system memory. The default is 32. This parameter may not be 0.</p>
+<p>Users may also pass an optional third parameter to pool's constructor. This parameter is of type size_type, and sets a maximum size for allocated chunks. When this parameter takes the default value of 0, then there is no upper limit on chunk size.</p>
+<p>Finally, if the doubling algorithm results in no memory being allocated, the pool will backtrack just once, halving the chunk size and trying again.</p>
+<p><span class="bold"><strong>UserAllocator type</strong></span> - the method that the Pool will use to allocate memory from the system.</p>
+<p>There are essentially two ways to use class pool: the client can call malloc() and free() to allocate and free single chunks of memory, this is the most efficient way to use a pool, but does not allow for the efficient allocation of arrays of chunks. Alternatively, the client may call ordered_malloc() and ordered_free(), in which case the free list is maintained in an ordered state, and efficient allocation of arrays of chunks are possible. However, this latter option can suffer from poor performance when large numbers of allocations are performed. </p>
+<div class="refsect2">
+<a name="id929264"></a><h3>
+<a name="boost.poolconstruct-copy-destruct"></a><code class="computeroutput">pool</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">explicit</span> <a name="id377454-bb"></a><span class="identifier">pool</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> nrequested_size<span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">size_type</span> nnext_size <span class="special">=</span> <span class="number">32</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> nmax_size <span class="special">=</span> <span class="number">0</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Constructs a new empty Pool that can be used to allocate chunks of size RequestedSize.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Parameters:</span></p></td>
+<td><div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><code class="computeroutput">nmax_size</code></span></p></td>
+<td><p>is the maximum number of chunks to allocate in one block. </p></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="computeroutput">nnext_size</code></span></p></td>
+<td><p>parameter is of type size_type, is the number of chunks to request from the system the first time that object needs to allocate system memory. The default is 32. This parameter may not be 0. </p></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="computeroutput">nrequested_size</code></span></p></td>
+<td><p>Requested chunk size </p></td>
+</tr>
+</tbody>
+</table></div></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><a name="id377492-bb"></a><span class="special">~</span><span class="identifier">pool</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Destructs the Pool, freeing its list of memory blocks. </p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id929433"></a><h3>
+<a name="id377028-bb"></a><code class="computeroutput">pool</code> private member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <span class="special">*</span> <a name="id377030-bb"></a><span class="identifier">malloc_need_resize</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>
+</p>
+<p>No memory in any of our storages; make a new storage, Allocates chunk in newly malloc aftert resize.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>0 if out-of-memory. Called if malloc/ordered_malloc needs to resize the free list. </p></td>
+</tr>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>pointer to chunk. </p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <span class="special">*</span> <a name="id377051-bb"></a><span class="identifier">ordered_malloc_need_resize</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>Called if malloc needs to resize the free list. <p>No memory in any of our storages; make a new storage,
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>pointer to new chunk. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id929549"></a><h3>
+<a name="id377066-bb"></a><code class="computeroutput">pool</code> protected member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a><span class="special">&lt;</span> <span class="identifier">size_type</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <a name="id377069-bb"></a><span class="identifier">store</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>pointer to store. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">const</span> <a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a><span class="special">&lt;</span> <span class="identifier">size_type</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <a name="id377084-bb"></a><span class="identifier">store</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>pointer to store. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout">details::PODptr<span class="special">&lt;</span> <span class="identifier">size_type</span> <span class="special">&gt;</span> <a name="id377101-bb"></a><span class="identifier">find_POD</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunk<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>finds which POD in the list 'chunk' was allocated from. <p>find which PODptr storage memory that this chunk is from.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>the PODptr that holds this chunk. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="identifier">size_type</span> <a name="id377126-bb"></a><span class="identifier">alloc_size</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>Calculated size of the memory chunks that will be allocated by this Pool.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>allocated size. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id929807"></a><h3>
+<a name="id377139-bb"></a><code class="computeroutput">pool</code> protected static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">bool</span> <a name="id377142-bb"></a><span class="identifier">is_from</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunk<span class="special">,</span> <span class="keyword">char</span> <span class="special">*</span><span class="keyword">const</span> i<span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">size_type</span> sizeof_i<span class="special">)</span><span class="special">;</span></pre>
+<p>
+
+Returns false if chunk was allocated from some other pool, or may be returned as the result of a future allocation from some other pool. Otherwise, the return value is meaningless.</p>
+<p>Note that this function may not be used to reliably test random pointer values. </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Parameters:</span></p></td>
+<td><div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><code class="computeroutput">chunk</code></span></p></td>
+<td><p>chunk to check if is from this pool. </p></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="computeroutput">i</code></span></p></td>
+<td><p>memory chunk at i with element sizeof_i. </p></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="computeroutput">sizeof_i</code></span></p></td>
+<td><p>element size (size of the chunk area of that block, not the total size of that block). </p></td>
+</tr>
+</tbody>
+</table></div></td>
+</tr>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>true if chunk was allocated or may be returned. as the result of a future allocation.</p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span><span class="special">&amp;</span> <a name="id377183-bb"></a><span class="identifier">nextof</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> ptr<span class="special">)</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>Pointer dereferenced. (Provided and used for the sake of code readability :) </p></td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id930018"></a><h3>
+<a name="id377201-bb"></a><code class="computeroutput">pool</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">bool</span> <a name="id377203-bb"></a><span class="identifier">release_memory</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>pool must be ordered. Frees every memory block that doesn't have any allocated chunks.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>true if at least one memory block was freed. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">bool</span> <a name="id377216-bb"></a><span class="identifier">purge_memory</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>pool must be ordered. Frees every memory block.</p>
+<p>This function invalidates any pointers previously returned by allocation functions of t.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>true if at least one memory block was freed. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="identifier">size_type</span> <a name="id377232-bb"></a><span class="identifier">get_next_size</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>Number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be 0.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>next_size; </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id377246-bb"></a><span class="identifier">set_next_size</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> nnext_size<span class="special">)</span><span class="special">;</span></pre>
+<p>Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>nnext_size. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="identifier">size_type</span> <a name="id377264-bb"></a><span class="identifier">get_max_size</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>max_size. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id377277-bb"></a><span class="identifier">set_max_size</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> nmax_size<span class="special">)</span><span class="special">;</span></pre>
+<p>Set max_size. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="identifier">size_type</span> <a name="id377291-bb"></a><span class="identifier">get_requested_size</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>the requested size passed into the constructor. (This value will not change during the lifetime of a Pool object). </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <span class="special">*</span> <a name="id377304-bb"></a><span class="identifier">malloc</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Allocates a chunk of memory. Searches in the list of memory blocks for a block that has a free chunk, and returns that free chunk if found. Otherwise, creates a new memory block, adds its free list to pool's free list,
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>a free chunk from that block. If a new memory block cannot be allocated, returns 0. Amortized O(1). </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <span class="special">*</span> <a name="id377318-bb"></a><span class="identifier">ordered_malloc</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Same as malloc, only merges the free lists, to preserve order. Amortized O(1).
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>a free chunk from that block. If a new memory block cannot be allocated, returns 0. Amortized O(1). </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <span class="special">*</span> <a name="id377331-bb"></a><span class="identifier">ordered_malloc</span><span class="special">(</span><span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre>
+<p>Gets address of a chunk n, allocating new memory if not already available.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+<p>Address of chunk n if allocated ok. </p>
+<p>0 if not enough memory for n chunks. </p>
+</td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id377351-bb"></a><span class="identifier">free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunk<span class="special">)</span><span class="special">;</span></pre>
+<p>Same as malloc, only allocates enough contiguous chunks to cover n * requested_size bytes. Amortized O(n).
+</p>
+<p>Deallocates a chunk of memory. Note that chunk may not be 0. O(1).</p>
+<p>Chunk must have been previously returned by t.malloc() or t.ordered_malloc(). Assumes that chunk actually refers to a block of chunks spanning n * partition_sz bytes. deallocates each chunk in that block. Note that chunk may not be 0. O(n). </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>a free chunk from that block. If a new memory block cannot be allocated, returns 0. Amortized O(1). </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id377375-bb"></a><span class="identifier">ordered_free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunk<span class="special">)</span><span class="special">;</span></pre>
+<p>Same as above, but is order-preserving.</p>
+<p>Note that chunk may not be 0. O(N) with respect to the size of the free list. chunk must have been previously returned by t.malloc() or t.ordered_malloc(). </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id377392-bb"></a><span class="identifier">free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunks<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre>
+<p>Assumes that chunk actually refers to a block of chunks.</p>
+<p>chunk must have been previously returned by t.ordered_malloc(n) spanning n * partition_sz bytes. Deallocates each chunk in that block. Note that chunk may not be 0. O(n). </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id377415-bb"></a><span class="identifier">ordered_free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunks<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre>
+<p>Assumes that chunk actually refers to a block of chunks spanning n * partition_sz bytes; deallocates each chunk in that block.</p>
+<p>Note that chunk may not be 0. Order-preserving. O(N + n) where N is the size of the free list. chunk must have been previously returned by t.malloc() or t.ordered_malloc(). </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">bool</span> <a name="id377436-bb"></a><span class="identifier">is_from</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunk<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>Returns true if chunk was allocated from u or may be returned as the result of a future allocation from u. Returns false if chunk was allocated from some other pool or may be returned as the result of a future allocation from some other pool. Otherwise, the return value is meaningless. Note that this function may not be used to reliably test random pointer values. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="default_user_allocator_malloc_free.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/pool_allocator.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/pool_allocator.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,197 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template pool_allocator</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">
+<link rel="prev" href="pool_allocator_tag.html" title="Struct pool_allocator_tag">
+<link rel="next" href="pool_allocator/rebind.html" title="Struct template rebind">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="pool_allocator_tag.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pool_allocator/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.pool_allocator"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template pool_allocator</span></h2>
+<p>boost::pool_allocator &#8212; A C++ Standard Library conforming allocator, based on an underlying pool. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">boost/pool/pool_alloc.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> UserAllocator<span class="special">,</span> <span class="keyword">typename</span> Mutex<span class="special">,</span>
+ <span class="keyword">unsigned</span> NextSize<span class="special">,</span> <span class="keyword">unsigned</span> MaxSize<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <a name="boost.pool_allocator.value_type"></a><span class="identifier">value_type</span><span class="special">;</span> <span class="comment">// value_type of template parameter T. </span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span> <a name="boost.pool_allocator.user_allocator"></a><span class="identifier">user_allocator</span><span class="special">;</span> <span class="comment">// allocator that defines the method that the underlying Pool will use to allocate memory from the system. </span>
+ <span class="keyword">typedef</span> <span class="identifier">Mutex</span> <a name="boost.pool_allocator.mutex"></a><span class="identifier">mutex</span><span class="special">;</span> <span class="comment">// typedef mutex publishes the value of the template parameter Mutex. </span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="special">*</span> <a name="boost.pool_allocator.pointer"></a><span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">*</span> <a name="boost.pool_allocator.const_pointer"></a><span class="identifier">const_pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <a name="boost.pool_allocator.reference"></a><span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <a name="boost.pool_allocator.const_reference"></a><span class="identifier">const_reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">size_type</span> <a name="boost.pool_allocator.size_type"></a><span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">difference_type</span> <a name="boost.pool_allocator.difference_type"></a><span class="identifier">difference_type</span><span class="special">;</span>
+
+ <span class="comment">// member classes/structs/unions</span>
+
+ <span class="comment">// Nested class rebind allows for transformation from pool_allocator&lt;T&gt; to
+ // pool_allocator&lt;U&gt;.</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+ <span class="keyword">struct</span> <a class="link" href="pool_allocator/rebind.html" title="Struct template rebind">rebind</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <a class="link" href="pool_allocator/rebind.html#boost.pool_allocator.rebind.other"><span class="identifier">other</span></a><span class="special">;</span>
+ <span class="special">}</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="pool_allocator.html#boost.pool_allocatorconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="pool_allocator.html#id377842-bb"><span class="identifier">pool_allocator</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+ <a class="link" href="pool_allocator.html#id377861-bb"><span class="identifier">pool_allocator</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="pool_allocator.html#id377811-bb">public member functions</a></span>
+ <span class="keyword">bool</span> <a class="link" href="pool_allocator.html#id377813-bb"><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <a class="link" href="pool_allocator.html#id377828-bb"><span class="keyword">operator</span><span class="special">!=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="pool_allocator.html#id377895-bb">public static functions</a></span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <a class="link" href="pool_allocator.html#id377897-bb"><span class="identifier">address</span></a><span class="special">(</span><span class="identifier">reference</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">const_pointer</span> <a class="link" href="pool_allocator.html#id377908-bb"><span class="identifier">address</span></a><span class="special">(</span><span class="identifier">const_reference</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">size_type</span> <a class="link" href="pool_allocator.html#id377919-bb"><span class="identifier">max_size</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="pool_allocator.html#id377925-bb"><span class="identifier">construct</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="pool_allocator.html#id377940-bb"><span class="identifier">destroy</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <a class="link" href="pool_allocator.html#id377951-bb"><span class="identifier">allocate</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <a class="link" href="pool_allocator.html#id377962-bb"><span class="identifier">allocate</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">void</span> <span class="special">*</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="pool_allocator.html#id377987-bb"><span class="identifier">deallocate</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// public data members</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="identifier">next_size</span><span class="special">;</span> <span class="comment">// next_size publishes the values of the template parameter NextSize. </span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id933084"></a><h2>Description</h2>
+<p>Template parameters for <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a> are defined as follows:</p>
+<p><span class="bold"><strong>T</strong></span> Type of object to allocate/deallocate.</p>
+<p><span class="bold"><strong>UserAllocator</strong></span>. Defines the method that the underlying Pool will use to allocate memory from the system. See User Allocators for details.</p>
+<p><span class="bold"><strong>Mutex</strong></span> Allows the user to determine the type of synchronization to be used on the underlying <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a>.</p>
+<p><span class="bold"><strong>NextSize</strong></span> The value of this parameter is passed to the underlying <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a> when it is created.</p>
+<p><span class="bold"><strong>MaxSize</strong></span> Limit on the maximum size used.</p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>The underlying <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a> used by the this allocator constructs a pool instance that <span class="bold"><strong>is never freed</strong></span>. This means that memory allocated by the allocator can be still used after main() has completed, but may mean that some memory checking programs will complain about leaks. </p></td></tr>
+</table></div>
+<p>
+</p>
+<div class="refsect2">
+<a name="id933157"></a><h3>
+<a name="boost.pool_allocatorconstruct-copy-destruct"></a><code class="computeroutput">pool_allocator</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a name="id377842-bb"></a><span class="identifier">pool_allocator</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Results in default construction of the underlying <code class="computeroutput"><a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a></code> IFF an instance of this allocator is constructed during global initialization ( required to ensure construction of <code class="computeroutput"><a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a></code> IFF an instance of this allocator is constructed during global initialization. See ticket #2359 for a complete explanation at http://svn.boost.org/trac/boost/ticket/2359) .</p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+ <a name="id377861-bb"></a><span class="identifier">pool_allocator</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Results in the default construction of the underlying <code class="computeroutput"><a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a></code>, this is required to ensure construction of <code class="computeroutput"><a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a></code> IFF an instance of this allocator is constructed during global initialization. See ticket #2359 for a complete explanation at http://svn.boost.org/trac/boost/ticket/2359 .</p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id934733"></a><h3>
+<a name="id377811-bb"></a><code class="computeroutput">pool_allocator</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><pre class="literallayout"><span class="keyword">bool</span> <a name="id377813-bb"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">bool</span> <a name="id377828-bb"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id934845"></a><h3>
+<a name="id377895-bb"></a><code class="computeroutput">pool_allocator</code> public static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="identifier">pointer</span> <a name="id377897-bb"></a><span class="identifier">address</span><span class="special">(</span><span class="identifier">reference</span> r<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="identifier">const_pointer</span> <a name="id377908-bb"></a><span class="identifier">address</span><span class="special">(</span><span class="identifier">const_reference</span> s<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="identifier">size_type</span> <a name="id377919-bb"></a><span class="identifier">max_size</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id377925-bb"></a><span class="identifier">construct</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span> ptr<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> t<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id377940-bb"></a><span class="identifier">destroy</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span> ptr<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="identifier">pointer</span> <a name="id377951-bb"></a><span class="identifier">allocate</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="identifier">pointer</span> <a name="id377962-bb"></a><span class="identifier">allocate</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">,</span> <span class="keyword">const</span> <span class="keyword">void</span> <span class="special">*</span> const<span class="special">)</span><span class="special">;</span></pre>
+<p>allocate n bytes</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Parameters:</span></p></td>
+<td><div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><code class="computeroutput">n</code></span></p></td>
+<td><p>bytes to allocate. </p></td>
+</tr></tbody>
+</table></div></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id377987-bb"></a><span class="identifier">deallocate</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pointer</span> ptr<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre>
+<p>Deallocate n bytes from ptr
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Parameters:</span></p></td>
+<td><div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><code class="computeroutput">n</code></span></p></td>
+<td><p>number of bytes to deallocate. </p></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="computeroutput">ptr</code></span></p></td>
+<td><p>location to deallocate from. </p></td>
+</tr>
+</tbody>
+</table></div></td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id935438"></a><h3>Specializations</h3>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><a class="link" href="pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</a></p></li></ul></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="pool_allocator_tag.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pool_allocator/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/pool_allocator/rebind.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/pool_allocator/rebind.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template rebind</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../pool_allocator.html#id933084" title="Description">
+<link rel="prev" href="../pool_allocator.html" title="Class template pool_allocator">
+<link rel="next" href="../pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../pool_allocator.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool_allocator.html#id933084"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../pool_allocator_void__UserAllocator__M_id378014.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.pool_allocator.rebind"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template rebind</span></h2>
+<p>boost::pool_allocator::rebind &#8212; Nested class rebind allows for transformation from pool_allocator&lt;T&gt; to pool_allocator&lt;U&gt;. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">boost/pool/pool_alloc.hpp</a>&gt;
+
+</span>
+
+<span class="comment">// Nested class rebind allows for transformation from pool_allocator&lt;T&gt; to
+// pool_allocator&lt;U&gt;.</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="rebind.html" title="Struct template rebind">rebind</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="../pool_allocator.html" title="Class template pool_allocator">pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <a name="boost.pool_allocator.rebind.other"></a><span class="identifier">other</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id935432"></a><h2>Description</h2>
+<p>Nested class rebind allows for transformation from pool_allocator&lt;T&gt; to pool_allocator&lt;U&gt; via the member typedef other. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../pool_allocator.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool_allocator.html#id933084"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../pool_allocator_void__UserAllocator__M_id378014.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/pool_allocator_tag.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/pool_allocator_tag.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct pool_allocator_tag</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">
+<link rel="prev" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">
+<link rel="next" href="pool_allocator.html" title="Class template pool_allocator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pool_allocator.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.pool_allocator_tag"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct pool_allocator_tag</span></h2>
+<p>boost::pool_allocator_tag</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">boost/pool/pool_alloc.hpp</a>&gt;
+
+</span>
+<span class="keyword">struct</span> <a class="link" href="pool_allocator_tag.html" title="Struct pool_allocator_tag">pool_allocator_tag</a> <span class="special">{</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id931985"></a><h2>Description</h2>
+<p>Simple tag type used by <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a> as an argument to the underlying <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a>. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pool_allocator.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id378014.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id378014.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">
+<link rel="prev" href="pool_allocator/rebind.html" title="Struct template rebind">
+<link rel="next" href="pool_allocator_void__UserAllocator__M_id378014/rebind.html" title="Struct template rebind">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="pool_allocator/rebind.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pool_allocator_void__UserAllocator__M_id378014/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.pool_allocator_void,_UserAllocator,_M_id378014"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></h2>
+<p>boost::pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt; &#8212; Specialization of pool_allocator&lt;void&gt;. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">boost/pool/pool_alloc.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> UserAllocator<span class="special">,</span> <span class="keyword">typename</span> Mutex<span class="special">,</span> <span class="keyword">unsigned</span> NextSize<span class="special">,</span>
+ <span class="keyword">unsigned</span> MaxSize<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;">pool_allocator</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span><span class="special">&gt;</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="special">*</span> <a name="boost.pool_allocator_void,_UserAllocator,_M_id378014.pointer"></a><span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">void</span> <span class="special">*</span> <a name="boost.pool_allocator_void,_UserAllocator,_M_id378014.const_pointer"></a><span class="identifier">const_pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <a name="boost.pool_allocator_void,_UserAllocator,_M_id378014.value_type"></a><span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="comment">// member classes/structs/unions</span>
+
+ <span class="comment">// Nested class rebind allows for transformation from pool_allocator&lt;T&gt; to
+ // pool_allocator&lt;U&gt;.</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+ <span class="keyword">struct</span> <a class="link" href="pool_allocator_void__UserAllocator__M_id378014/rebind.html" title="Struct template rebind">rebind</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <a class="link" href="pool_allocator_void__UserAllocator__M_id378014/rebind.html#boost.pool_allocator_void,_UserAllocator,_M_id378014.rebind.other"><span class="identifier">other</span></a><span class="special">;</span>
+ <span class="special">}</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id935804"></a><h2>Description</h2>
+<p>Specialization of <a class="link" href="pool_allocator.html" title="Class template pool_allocator">pool_allocator</a> for type void: required by the standard to make this a conforming allocator type. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="pool_allocator/rebind.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/pool_alloc_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pool_allocator_void__UserAllocator__M_id378014/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id378014/rebind.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id378014/rebind.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template rebind</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../pool_allocator_void__UserAllocator__M_id378014.html#id935804" title="Description">
+<link rel="prev" href="../pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;">
+<link rel="next" href="../fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../pool_allocator_void__UserAllocator__M_id378014.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool_allocator_void__UserAllocator__M_id378014.html#id935804"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../fast_pool_allocator_tag.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.pool_allocator_void,_UserAllocator,_M_id378014.rebind"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template rebind</span></h2>
+<p>boost::pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;::rebind &#8212; Nested class rebind allows for transformation from pool_allocator&lt;T&gt; to pool_allocator&lt;U&gt;. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">boost/pool/pool_alloc.hpp</a>&gt;
+
+</span>
+
+<span class="comment">// Nested class rebind allows for transformation from pool_allocator&lt;T&gt; to
+// pool_allocator&lt;U&gt;.</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="rebind.html" title="Struct template rebind">rebind</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="../pool_allocator.html" title="Class template pool_allocator">pool_allocator</a><span class="special">&lt;</span> <span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span> <span class="special">&gt;</span> <a name="boost.pool_allocator_void,_UserAllocator,_M_id378014.rebind.other"></a><span class="identifier">other</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id935962"></a><h2>Description</h2>
+<p>Nested class rebind allows for transformation from pool_allocator&lt;T&gt; to pool_allocator&lt;U&gt; via the member typedef other. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../pool_allocator_void__UserAllocator__M_id378014.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool_allocator_void__UserAllocator__M_id378014.html#id935804"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../fast_pool_allocator_tag.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/simple_segregated_storage.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/simple_segregated_storage.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,340 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template simple_segregated_storage</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;">
+<link rel="prev" href="../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;">
+<link rel="next" href="../BOOST_POOL_VALIDATE_INTERNALS.html" title="Macro BOOST_POOL_VALIDATE_INTERNALS">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/pool/simple_segregated_storage_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/simple_segregated_storage_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../BOOST_POOL_VALIDATE_INTERNALS.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.simple_segregated_storage"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template simple_segregated_storage</span></h2>
+<p>boost::simple_segregated_storage &#8212; Simple Segregated Storage is the simplest, and probably the fastest, memory allocation/deallocation algorithm. It is responsible for partitioning a memory block into fixed-size chunks: where the block comes from is determined by the client of the class. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;">boost/pool/simple_segregated_storage.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> SizeType<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="identifier">SizeType</span> <a name="boost.simple_segregated_storage.size_type"></a><span class="identifier">size_type</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="simple_segregated_storage.html#boost.simple_segregated_storageconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="simple_segregated_storage.html#id378665-bb"><span class="identifier">simple_segregated_storage</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="simple_segregated_storage.html#id378983-bb"><span class="identifier">simple_segregated_storage</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ simple_segregated_storage&amp; <a class="link" href="simple_segregated_storage.html#id378675-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="simple_segregated_storage.html#id378684-bb">private static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="simple_segregated_storage.html#id378687-bb"><span class="identifier">try_malloc_n</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="special">&amp;</span><span class="special">,</span> <span class="identifier">size_type</span><span class="special">,</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="simple_segregated_storage.html#id378718-bb">protected member functions</a></span>
+ <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="simple_segregated_storage.html#id378720-bb"><span class="identifier">find_prev</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="simple_segregated_storage.html#id378743-bb">protected static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span><span class="special">&amp;</span> <a class="link" href="simple_segregated_storage.html#id378746-bb"><span class="identifier">nextof</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="simple_segregated_storage.html#id378766-bb">public member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="simple_segregated_storage.html#id378768-bb"><span class="identifier">add_block</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="simple_segregated_storage.html#id378800-bb"><span class="identifier">add_ordered_block</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">bool</span> <a class="link" href="simple_segregated_storage.html#id378824-bb"><span class="identifier">empty</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="simple_segregated_storage.html#id378842-bb"><span class="identifier">malloc</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="simple_segregated_storage.html#id378855-bb"><span class="identifier">free</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="simple_segregated_storage.html#id378876-bb"><span class="identifier">ordered_free</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="simple_segregated_storage.html#id378898-bb"><span class="identifier">malloc_n</span></a><span class="special">(</span><span class="identifier">size_type</span><span class="special">,</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="simple_segregated_storage.html#id378917-bb"><span class="identifier">free_n</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="simple_segregated_storage.html#id378953-bb"><span class="identifier">ordered_free_n</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="simple_segregated_storage.html#id378992-bb">public static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="simple_segregated_storage.html#id378994-bb"><span class="identifier">segregate</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="special">,</span> <span class="identifier">size_type</span><span class="special">,</span> <span class="identifier">size_type</span><span class="special">,</span> <span class="keyword">void</span> <span class="special">*</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id941276"></a><h2>Description</h2>
+<p>Template class <a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a> controls access to a free list of memory chunks. Please note that this is a very simple class, with preconditions on almost all its functions. It is intended to be the fastest and smallest possible quick memory allocator - e.g., something to use in embedded systems. This class delegates many difficult preconditions to the user (i.e., alignment issues).</p>
+<p>An object of type simple_segregated_storage&lt;SizeType&gt; is empty if its free list is empty. If it is not empty, then it is ordered if its free list is ordered. A free list is ordered if repeated calls to <code class="computeroutput">malloc()</code> will result in a constantly-increasing sequence of values, as determined by <code class="computeroutput">std::less&lt;void *&gt;</code>. A member function is <span class="emphasis"><em>order-preserving</em></span> if the free list maintains its order orientation (that is, an ordered free list is still ordered after the member function call). </p>
+<div class="refsect2">
+<a name="id941302"></a><h3>
+<a name="boost.simple_segregated_storageconstruct-copy-destruct"></a><code class="computeroutput">simple_segregated_storage</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><pre class="literallayout"><a name="id378665-bb"></a><span class="identifier">simple_segregated_storage</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem">
+<pre class="literallayout"><a name="id378983-bb"></a><span class="identifier">simple_segregated_storage</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Construct empty storage area.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Postconditions:</span></p></td>
+<td><p>empty() </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem"><pre class="literallayout">simple_segregated_storage&amp; <a name="id378675-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id941430"></a><h3>
+<a name="id378684-bb"></a><code class="computeroutput">simple_segregated_storage</code> private static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span>
+<a name="id378687-bb"></a><span class="identifier">try_malloc_n</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="special">&amp;</span> start<span class="special">,</span> <span class="identifier">size_type</span> n<span class="special">,</span> <span class="identifier">size_type</span> partition_size<span class="special">)</span><span class="special">;</span></pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td><p>(n &gt; 0), (start != 0), (nextof(start) != 0) </p></td>
+</tr>
+<tr>
+<td><p><span class="term">Postconditions:</span></p></td>
+<td><p>(start != 0) The function attempts to find n contiguous chunks of size partition_size in the free list, starting at start. If it succeds, it returns the last chunk in that contiguous sequence, so that the sequence is known by [start, {retval}] If it fails, it does do either because it's at the end of the free list or hits a non-contiguous chunk. In either case, it will return 0, and set start to the last considered chunk. You are at the end of the free list if nextof(start) == 0. Otherwise, start points to the last chunk in the contiguous sequence, and nextof(start) points to the first chunk in the next contiguous sequence (assuming an ordered free list). </p></td>
+</tr>
+</tbody>
+</table></div>
+</li></ol></div>
+</div>
+<div class="refsect2">
+<a name="id941533"></a><h3>
+<a name="id378718-bb"></a><code class="computeroutput">simple_segregated_storage</code> protected member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <span class="special">*</span> <a name="id378720-bb"></a><span class="identifier">find_prev</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> ptr<span class="special">)</span><span class="special">;</span></pre>
+<p>Traverses the free list referred to by "first", and returns the iterator previous to where "ptr" would go if it was in the free list. Returns 0 if "ptr" would go at the beginning of the free list (i.e., before "first"). </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>Note that this function finds the location previous to where ptr would go if it was in the free list. It does not find the entry in the free list before ptr (unless ptr is already in the free list). Specifically, find_prev(0) will return 0, not the last entry in the free list. </p></td></tr>
+</table></div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>location previous to where ptr would go if it was in the free list. </p></td>
+</tr></tbody>
+</table></div>
+</li></ol></div>
+</div>
+<div class="refsect2">
+<a name="id941606"></a><h3>
+<a name="id378743-bb"></a><code class="computeroutput">simple_segregated_storage</code> protected static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span><span class="special">&amp;</span> <a name="id378746-bb"></a><span class="identifier">nextof</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> ptr<span class="special">)</span><span class="special">;</span></pre>
+<p>The return value is just *ptr cast to the appropriate type. ptr must not be 0. (For the sake of code readability :)</p>
+<p>As an example, let us assume that we want to truncate the free list after the first chunk. That is, we want to set *first to 0; this will result in a free list with only one entry. The normal way to do this is to first cast first to a pointer to a pointer to void, and then dereference and assign (*static_cast&lt;void **&gt;(first) = 0;). This can be done more easily through the use of this convenience function (nextof(first) = 0;).
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>dereferenced pointer. </p></td>
+</tr></tbody>
+</table></div>
+</li></ol></div>
+</div>
+<div class="refsect2">
+<a name="id941689"></a><h3>
+<a name="id378766-bb"></a><code class="computeroutput">simple_segregated_storage</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id378768-bb"></a><span class="identifier">add_block</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> block<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> nsz<span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">size_type</span> npartition_sz<span class="special">)</span><span class="special">;</span></pre>
+<p>Add block Segregate this block and merge its free list into the free list referred to by "first".
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td><p>Same as segregate. </p></td>
+</tr>
+<tr>
+<td><p><span class="term">Postconditions:</span></p></td>
+<td><p>!empty() </p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id378800-bb"></a><span class="identifier">add_ordered_block</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> block<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> nsz<span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">size_type</span> npartition_sz<span class="special">)</span><span class="special">;</span></pre>
+<p>add block (ordered into list) This (slower) version of add_block segregates the block and merges its free list into our free list in the proper order. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">bool</span> <a name="id378824-bb"></a><span class="identifier">empty</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>true only if <a class="link" href="simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a> is empty. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <span class="special">*</span> <a name="id378842-bb"></a><span class="identifier">malloc</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Create a chunk.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td><p>!empty() Increment the "first" pointer to point to the next chunk. </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id378855-bb"></a><span class="identifier">free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunk<span class="special">)</span><span class="special">;</span></pre>
+<p>Free a chunk.
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td><p>chunk was previously returned from a malloc() referring to the same free list. </p></td>
+</tr>
+<tr>
+<td><p><span class="term">Postconditions:</span></p></td>
+<td><p>!empty() </p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id378876-bb"></a><span class="identifier">ordered_free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunk<span class="special">)</span><span class="special">;</span></pre>
+<p>This (slower) implementation of 'free' places the memory back in the list in its proper order.
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td><p>chunk was previously returned from a malloc() referring to the same free list </p></td>
+</tr>
+<tr>
+<td><p><span class="term">Postconditions:</span></p></td>
+<td><p>!empty(). </p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <span class="special">*</span> <a name="id378898-bb"></a><span class="identifier">malloc_n</span><span class="special">(</span><span class="identifier">size_type</span> n<span class="special">,</span> <span class="identifier">size_type</span> partition_size<span class="special">)</span><span class="special">;</span></pre>
+<p>Attempts to find a contiguous sequence of n partition_sz-sized chunks. If found, removes them all from the free list and returns a pointer to the first. If not found, returns 0. It is strongly recommended (but not required) that the free list be ordered, as this algorithm will fail to find a contiguous sequence unless it is contiguous in the free list as well. Order-preserving. O(N) with respect to the size of the free list. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id378917-bb"></a><span class="identifier">free_n</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunks<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">size_type</span> partition_size<span class="special">)</span><span class="special">;</span></pre>
+<p>
+
+</p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>If you're allocating/deallocating n a lot, you should be using an ordered pool. </p></td></tr>
+</table></div>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td><p>chunks was previously allocated from *this with the same values for n and partition_size. </p></td>
+</tr>
+<tr>
+<td><p><span class="term">Postconditions:</span></p></td>
+<td><p>!empty() </p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">void</span> <a name="id378953-bb"></a><span class="identifier">ordered_free_n</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> chunks<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">size_type</span> partition_size<span class="special">)</span><span class="special">;</span></pre>
+<p>Free n chunks from order list.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td>
+<p>chunks was previously allocated from *this with the same values for n and partition_size.</p>
+<p>n should not be zero (n == 0 has no effect). </p>
+</td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id942312"></a><h3>
+<a name="id378992-bb"></a><code class="computeroutput">simple_segregated_storage</code> public static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span>
+<a name="id378994-bb"></a><span class="identifier">segregate</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> block<span class="special">,</span> <span class="identifier">size_type</span> nsz<span class="special">,</span> <span class="identifier">size_type</span> npartition_sz<span class="special">,</span>
+ <span class="keyword">void</span> <span class="special">*</span> end <span class="special">=</span> <span class="number">0</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Segregate block into chunks.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td>
+<p>npartition_sz &gt;= sizeof(void *) </p>
+<p>npartition_sz = sizeof(void *) * i, for some integer i </p>
+<p>nsz &gt;= npartition_sz </p>
+<p>Block is properly aligned for an array of object of size npartition_sz and array of void *. The requirements above guarantee that any pointer to a chunk (which is a pointer to an element in an array of npartition_sz) may be cast to void **. </p>
+</td>
+</tr></tbody>
+</table></div>
+</li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/pool/simple_segregated_storage_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/simple_segregated_storage_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../BOOST_POOL_VALIDATE_INTERNALS.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/singleton_pool.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/singleton_pool.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,195 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template singleton_pool</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;">
+<link rel="prev" href="../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;">
+<link rel="next" href="singleton_pool/object_creator.html" title="Struct object_creator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/pool/singleton_pool_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/singleton_pool_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="singleton_pool/object_creator.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.singleton_pool"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template singleton_pool</span></h2>
+<p>boost::singleton_pool</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;">boost/pool/singleton_pool.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Tag<span class="special">,</span> <span class="keyword">unsigned</span> RequestedSize<span class="special">,</span> <span class="keyword">typename</span> UserAllocator<span class="special">,</span>
+ <span class="keyword">typename</span> Mutex<span class="special">,</span> <span class="keyword">unsigned</span> NextSize<span class="special">,</span> <span class="keyword">unsigned</span> MaxSize<span class="special">&gt;</span>
+<span class="keyword">class</span> <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// <a class="link" href="singleton_pool.html#boost.singleton_pooltypes">types</a></span>
+ <span class="keyword">typedef</span> <span class="identifier">Tag</span> <a class="link" href="singleton_pool.html#boost.singleton_pool.tag"><span class="identifier">tag</span></a><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">Mutex</span> <a name="boost.singleton_pool.mutex"></a><span class="identifier">mutex</span><span class="special">;</span> <span class="comment">// The type of mutex used to synchonise access to this pool (default <code class="computeroutput">details::pool::default_mutex</code>). </span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span> <a name="boost.singleton_pool.user_allocator"></a><span class="identifier">user_allocator</span><span class="special">;</span> <span class="comment">// The user-allocator used by this pool, default = <code class="computeroutput"><a class="link" href="default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete">default_user_allocator_new_delete</a></code>. </span>
+ <span class="keyword">typedef</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">size_type</span> <a name="boost.singleton_pool.size_type"></a><span class="identifier">size_type</span><span class="special">;</span> <span class="comment">// size_type of user allocator. </span>
+ <span class="keyword">typedef</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">difference_type</span> <a name="boost.singleton_pool.difference_type"></a><span class="identifier">difference_type</span><span class="special">;</span> <span class="comment">// difference_type of user allocator. </span>
+
+ <span class="comment">// member classes/structs/unions</span>
+
+ <span class="keyword">struct</span> <a class="link" href="singleton_pool/object_creator.html" title="Struct object_creator">object_creator</a> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="singleton_pool/object_creator.html#boost.singleton_pool.object_creatorconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="singleton_pool/object_creator.html#id379229-bb"><span class="identifier">object_creator</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="singleton_pool/object_creator.html#id379221-bb">public member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="singleton_pool/object_creator.html#id379223-bb"><span class="identifier">do_nothing</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">}</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="singleton_pool.html#boost.singleton_poolconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="singleton_pool.html#id379318-bb"><span class="identifier">singleton_pool</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="singleton_pool.html#id379319-bb">public static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="singleton_pool.html#id379322-bb"><span class="identifier">malloc</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="singleton_pool.html#id379331-bb"><span class="identifier">ordered_malloc</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="singleton_pool.html#id379342-bb"><span class="identifier">ordered_malloc</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <a class="link" href="singleton_pool.html#id379356-bb"><span class="identifier">is_from</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="singleton_pool.html#id379376-bb"><span class="identifier">free</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="singleton_pool.html#id379391-bb"><span class="identifier">ordered_free</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="singleton_pool.html#id379406-bb"><span class="identifier">free</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="singleton_pool.html#id379426-bb"><span class="identifier">ordered_free</span></a><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <a class="link" href="singleton_pool.html#id379446-bb"><span class="identifier">release_memory</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <a class="link" href="singleton_pool.html#id379456-bb"><span class="identifier">purge_memory</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="singleton_pool.html#id379467-bb">private static functions</a></span>
+ <span class="keyword">static</span> <span class="identifier">pool_type</span> <span class="special">&amp;</span> <a class="link" href="singleton_pool.html#id379470-bb"><span class="identifier">get_pool</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// public data members</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="identifier">requested_size</span><span class="special">;</span> <span class="comment">// The size of each chunk allocated by this pool. </span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="identifier">next_size</span><span class="special">;</span> <span class="comment">// The number of chunks to allocate on the first allocation. </span>
+ <span class="keyword">static</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special">&lt;</span> <span class="identifier">UserAllocator</span> <span class="special">&gt;</span> <span class="identifier">p</span><span class="special">;</span> <span class="comment">// For exposition only! </span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id944392"></a><h2>Description</h2>
+<p>The <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a> class allows other pool interfaces for types of the same size to share the same pool. Template parameters are as follows:</p>
+<p><span class="bold"><strong>Tag</strong></span> User-specified type to uniquely identify this pool: allows different unbounded sets of singleton pools to exist.</p>
+<p><span class="bold"><strong>RequestedSize</strong></span> The size of each chunk returned by member function <code class="computeroutput">malloc()</code>.</p>
+<p><span class="bold"><strong>UserAllocator</strong></span> User allocator, default = <a class="link" href="default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete">default_user_allocator_new_delete</a>.</p>
+<p><span class="bold"><strong>Mutex</strong></span> This class is the type of mutex to use to protect simultaneous access to the underlying Pool. Can be any Boost.Thread Mutex type or <code class="computeroutput">boost::details::pool::null_mutex</code>. It is exposed so that users may declare some singleton pools normally (i.e., with synchronization), but some singleton pools without synchronization (by specifying <code class="computeroutput">boost::details::pool::null_mutex</code>) for efficiency reasons. The member typedef <code class="computeroutput">mutex</code> exposes the value of this template parameter. The default for this parameter is boost::details::pool::default_mutex which is a synonym for either <code class="computeroutput">boost::details::pool::null_mutex</code> (when threading support is turned off in the compiler (so BOOST_HAS_THREADS is not set), or threading support has ben explicitly disabled with BOOST_DISABLE_THREADS (Boost-wide disabling of threads) or BOOST_POOL_NO_MT (this library o
nly)) or for <code class="computeroutput">boost::mutex</code> (when threading support is enabled in the compiler).</p>
+<p><span class="bold"><strong>NextSize</strong></span> The value of this parameter is passed to the underlying Pool when it is created and specifies the number of chunks to allocate in the first allocation request (defaults to 32). The member typedef <code class="computeroutput">static const value next_size</code> exposes the value of this template parameter.</p>
+<p><span class="bold"><strong>MaxSize</strong></span>The value of this parameter is passed to the underlying Pool when it is created and specifies the maximum number of chunks to allocate in any single allocation request (defaults to 0).</p>
+<p><span class="bold"><strong>Notes:</strong></span></p>
+<p>The underlying pool <span class="emphasis"><em>p</em></span> referenced by the static functions in <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a> is actually declared in a way that is:</p>
+<p>1 Thread-safe if there is only one thread running before main() begins and after main() ends -- all of the static functions of <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a> synchronize their access to p.</p>
+<p>2 Guaranteed to be constructed before it is used -- thus, the simple static object in the synopsis above would actually be an incorrect implementation. The actual implementation to guarantee this is considerably more complicated.</p>
+<p>3 Note too that a different underlying pool p exists for each different set of template parameters, including implementation-specific ones.</p>
+<p>4 The underlying pool is constructed "as if" by:</p>
+<p>pool&lt;UserAllocator&gt; p(RequestedSize, NextSize, MaxSize);</p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>The underlying pool constructed by the singleton <span class="bold"><strong>is never freed</strong></span>. This means that memory allocated by a <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a> can be still used after main() has completed, but may mean that some memory checking programs will complain about leaks from <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a>. </p></td></tr>
+</table></div>
+<p>
+</p>
+<div class="refsect2">
+<a name="id944530"></a><h3>
+<a name="boost.singleton_pooltypes"></a><code class="computeroutput">singleton_pool</code>
+ public
+ types</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<p>
+<span class="keyword">typedef</span> <span class="identifier">Tag</span> <a name="boost.singleton_pool.tag"></a><span class="identifier">tag</span><span class="special">;</span></p>
+<p>The Tag template parameter uniquely identifies this pool and allows different unbounded sets of singleton pools to exist. For example, the pool allocators use two tag classes to ensure that the two different allocator types never share the same underlying singleton pool. Tag is never actually used by <a class="link" href="singleton_pool.html" title="Class template singleton_pool">singleton_pool</a>. </p>
+</li></ol></div>
+</div>
+<div class="refsect2">
+<a name="id944574"></a><h3>
+<a name="boost.singleton_poolconstruct-copy-destruct"></a><code class="computeroutput">singleton_pool</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="literallayout"><a name="id379318-bb"></a><span class="identifier">singleton_pool</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre></li></ol></div>
+</div>
+<div class="refsect2">
+<a name="id944610"></a><h3>
+<a name="id379319-bb"></a><code class="computeroutput">singleton_pool</code> public static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <a name="id379322-bb"></a><span class="identifier">malloc</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Equivalent to SingletonPool::p.malloc(); synchronized. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <a name="id379331-bb"></a><span class="identifier">ordered_malloc</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Equivalent to SingletonPool::p.ordered_malloc(); synchronized. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <a name="id379342-bb"></a><span class="identifier">ordered_malloc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre>
+<p>Equivalent to SingletonPool::p.ordered_malloc(n); synchronized. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">bool</span> <a name="id379356-bb"></a><span class="identifier">is_from</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> ptr<span class="special">)</span><span class="special">;</span></pre>
+<p>Equivalent to SingletonPool::p.is_from(chunk); synchronized.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td><p>true if chunk is from SingletonPool::is_from(chunk) </p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id379376-bb"></a><span class="identifier">free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> ptr<span class="special">)</span><span class="special">;</span></pre>
+<p>Equivalent to SingletonPool::p.free(chunk); synchronized. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id379391-bb"></a><span class="identifier">ordered_free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> ptr<span class="special">)</span><span class="special">;</span></pre>
+<p>Equivalent to SingletonPool::p.ordered_free(chunk); synchronized. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id379406-bb"></a><span class="identifier">free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> ptr<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre>
+<p>Equivalent to SingletonPool::p.free(chunk, n); synchronized. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="id379426-bb"></a><span class="identifier">ordered_free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="keyword">const</span> ptr<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre>
+<p>Equivalent to SingletonPool::p.ordered_free(chunk, n); synchronized. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">bool</span> <a name="id379446-bb"></a><span class="identifier">release_memory</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Equivalent to SingletonPool::p.release_memory(); synchronized. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">static</span> <span class="keyword">bool</span> <a name="id379456-bb"></a><span class="identifier">purge_memory</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Equivalent to SingletonPool::p.purge_memory(); synchronized. </p>
+</li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id945106"></a><h3>
+<a name="id379467-bb"></a><code class="computeroutput">singleton_pool</code> private static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="identifier">pool_type</span> <span class="special">&amp;</span> <a name="id379470-bb"></a><span class="identifier">get_pool</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre></li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/pool/singleton_pool_hpp.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/pool/singleton_pool_hpp.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="singleton_pool/object_creator.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost/singleton_pool/object_creator.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost/singleton_pool/object_creator.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct object_creator</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../singleton_pool.html#id944392" title="Description">
+<link rel="prev" href="../singleton_pool.html" title="Class template singleton_pool">
+<link rel="next" href="../../boost_pool/appendices.html" title="Appendices">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../singleton_pool.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../singleton_pool.html#id944392"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../boost_pool/appendices.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.singleton_pool.object_creator"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct object_creator</span></h2>
+<p>boost::singleton_pool::object_creator</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;">boost/pool/singleton_pool.hpp</a>&gt;
+
+</span>
+
+<span class="keyword">struct</span> <a class="link" href="object_creator.html" title="Struct object_creator">object_creator</a> <span class="special">{</span>
+ <span class="comment">// <a class="link" href="object_creator.html#boost.singleton_pool.object_creatorconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="object_creator.html#id379229-bb"><span class="identifier">object_creator</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="object_creator.html#id379221-bb">public member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="object_creator.html#id379223-bb"><span class="identifier">do_nothing</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id945270"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id945273"></a><h3>
+<a name="boost.singleton_pool.object_creatorconstruct-copy-destruct"></a><code class="computeroutput">object_creator</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="literallayout"><a name="id379229-bb"></a><span class="identifier">object_creator</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre></li></ol></div>
+</div>
+<div class="refsect2">
+<a name="id945312"></a><h3>
+<a name="id379221-bb"></a><code class="computeroutput">object_creator</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="literallayout"><span class="keyword">void</span> <a name="id379223-bb"></a><span class="identifier">do_nothing</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre></li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../singleton_pool.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../singleton_pool.html#id944392"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../boost_pool/appendices.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/appendices.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/appendices.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendices</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../index.html" title="Boost.Pool">
+<link rel="prev" href="../boost/singleton_pool/object_creator.html" title="Struct object_creator">
+<link rel="next" href="appendices/history.html" title="Appendix A: History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost/singleton_pool/object_creator.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="appendices/history.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_pool.appendices"></a><a class="link" href="appendices.html" title="Appendices">Appendices</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Appendix A: History</span></dt>
+<dt><span class="section">Appendix B: FAQ</span></dt>
+<dt><span class="section">Appendix C: Acknowledgements</span></dt>
+<dt><span class="section">Appendix D: Tests</span></dt>
+<dt><span class="section">Appendix E: Tickets</span></dt>
+<dt><span class="section"><a href="appendices/implementations.html">Appendix F: Other
+ Implementations</a></span></dt>
+<dt><span class="section">Appendix G: References</span></dt>
+<dt><span class="section">Appendix H: Future plans</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost/singleton_pool/object_creator.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="appendices/history.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/appendices/acknowledgements.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/appendices/acknowledgements.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix C: Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="faq.html" title="Appendix B: FAQ">
+<link rel="next" href="tests.html" title="Appendix D: Tests">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="faq.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tests.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.appendices.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Appendix C: Acknowledgements">Appendix C: Acknowledgements</a>
+</h3></div></div></div>
+<p>
+ Many, many thanks to the Boost peers, notably Jeff Garland, Beman Dawes,
+ Ed Brey, Gary Powell, Peter Dimov, and Jens Maurer for providing helpful
+ suggestions!
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="faq.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tests.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/appendices/faq.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/appendices/faq.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix B: FAQ</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="history.html" title="Appendix A: History">
+<link rel="next" href="acknowledgements.html" title="Appendix C: Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="history.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.appendices.faq"></a><a class="link" href="faq.html" title="Appendix B: FAQ">Appendix B: FAQ</a>
+</h3></div></div></div>
+<h6>
+<a name="boost_pool.appendices.faq.h0"></a>
+ <span><a name="boost_pool.appendices.faq.why_should_i_use_pool_"></a></span><a class="link" href="faq.html#boost_pool.appendices.faq.why_should_i_use_pool_">Why
+ should I use Pool?</a>
+ </h6>
+<p>
+ Using Pools gives you more control over how memory is used in your program.
+ For example, you could have a situation where you want to allocate a bunch
+ of small objects at one point, and then reach a point in your program where
+ none of them are needed any more. Using pool interfaces, you can choose to
+ run their destructors or just drop them off into oblivion; the pool interface
+ will guarantee that there are no system memory leaks.
+ </p>
+<h6>
+<a name="boost_pool.appendices.faq.h1"></a>
+ <span><a name="boost_pool.appendices.faq.when_should_i_use_pool_"></a></span><a class="link" href="faq.html#boost_pool.appendices.faq.when_should_i_use_pool_">When
+ should I use Pool?</a>
+ </h6>
+<p>
+ Pools are generally used when there is a lot of allocation and deallocation
+ of small objects. Another common usage is the situation above, where many
+ objects may be dropped out of memory.
+ </p>
+<p>
+ In general, use Pools when you need a more efficient way to do unusual memory
+ control.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="history.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/appendices/history.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/appendices/history.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,86 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix A: History</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="../appendices.html" title="Appendices">
+<link rel="next" href="faq.html" title="Appendix B: FAQ">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../appendices.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="faq.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.appendices.history"></a><a class="link" href="history.html" title="Appendix A: History">Appendix A: History</a>
+</h3></div></div></div>
+<h5>
+<a name="boost_pool.appendices.history.h0"></a>
+ <span><a name="boost_pool.appendices.history.version_2_0_0__january_11__2011"></a></span><a class="link" href="history.html#boost_pool.appendices.history.version_2_0_0__january_11__2011">Version
+ 2.0.0, January 11, 2011</a>
+ </h5>
+<p>
+ <span class="emphasis"><em>Documentation and testing revision</em></span>
+ </p>
+<p>
+ <span class="bold"><strong>Features:</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Fix issues 1252,
+ 4960,
+ 5526,
+ 5700,
+ 2696.
+ </li>
+<li class="listitem">
+ Documentation converted and rewritten and revised by Paul A. Bristow
+ using Quickbook, Doxygen, for html and pdf, based on Stephen Cleary's
+ html version, Revised 05 December, 2006.
+ </li>
+</ul></div>
+<p>
+ This used Opera 11.0, and <code class="computeroutput"><span class="identifier">html_to_quickbook</span><span class="special">.</span><span class="identifier">css</span></code> as
+ a special display format. On the Opera full taskbar (chose <span class="emphasis"><em>enable
+ full taskbar</em></span>) View, Style, Manage modes, Display.
+ </p>
+<p>
+ Choose <span class="emphasis"><em>add <code class="computeroutput"><span class="special">\</span><span class="identifier">boost</span><span class="special">-</span><span class="identifier">sandbox</span><span class="special">\</span><span class="identifier">boost_docs</span><span class="special">\</span><span class="identifier">trunk</span><span class="special">\</span><span class="identifier">doc</span><span class="special">\</span><span class="identifier">style</span><span class="special">\</span><span class="identifier">html</span><span class="special">\</span><span class="identifier">conversion</span><span class="special">\</span><span class="identifier">html_to_quickbook</span><span class="special">.</span><span class="identifier">css</span></code></em></span>
+ to My Style Sheet. Html pages are now displayed as Quickbook and can be copied
+ and pasted into quickbook files using your favored text editor for Quickbook.
+ </p>
+<h5>
+<a name="boost_pool.appendices.history.h1"></a>
+ <span><a name="boost_pool.appendices.history.version_1_0_0__january_1__2000"></a></span><a class="link" href="history.html#boost_pool.appendices.history.version_1_0_0__january_1__2000">Version
+ 1.0.0, January 1, 2000</a>
+ </h5>
+<p>
+ <span class="emphasis"><em>First release</em></span>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../appendices.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="faq.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/appendices/implementations.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/appendices/implementations.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,133 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix F: Other Implementations</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="tickets.html" title="Appendix E: Tickets">
+<link rel="next" href="references.html" title="Appendix G: References">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tickets.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="references.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.appendices.implementations"></a><a class="link" href="implementations.html" title="Appendix F: Other Implementations">Appendix F: Other
+ Implementations</a>
+</h3></div></div></div>
+<p>
+ Pool allocators are found in many programming languages, and in many variations.
+ The beginnings of many implementations may be found in common programming
+ literature; some of these are given below. Note that none of these are complete
+ implementations of a Pool; most of these leave some aspects of a Pool as
+ a user exercise. However, in each case, even though some aspects are missing,
+ these examples use the same underlying concept of a Simple Segregated Storage
+ described in this document.
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ <span class="emphasis"><em>The C++ Programming Language</em></span>, 3rd ed., by Bjarne
+ Stroustrup, Section 19.4.2. Missing aspects:
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Not portable.
+ </li>
+<li class="listitem">
+ Cannot handle allocations of arbitrary numbers of objects (this
+ was left as an exercise).
+ </li>
+<li class="listitem">
+ Not thread-safe.
+ </li>
+<li class="listitem">
+ Suffers from the static initialization problem.
+ </li>
+</ul></div>
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>MicroC/OS-II: The Real-Time Kernel</em></span>, by Jean J. Labrosse,
+ Chapter 7 and Appendix B.04.
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ An example of the Simple Segregated Storage scheme at work in the
+ internals of an actual OS.
+ </li>
+<li class="listitem">
+ Missing aspects:
+ </li>
+<li class="listitem">
+ Not portable (though this is OK, since it's part of its own OS).
+ </li>
+<li class="listitem">
+ Cannot handle allocations of arbitrary numbers of blocks (which
+ is also OK, since this feature is not needed).
+ </li>
+<li class="listitem">
+ Requires non-intuitive user code to create and destroy the Pool.
+ </li>
+</ul></div>
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>Efficient C++: Performance Programming Techniques</em></span>,
+ by Dov Bulka and David Mayhew, Chapters 6 and 7.
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ This is a good example of iteratively developing a Pool solutio.
+ </li>
+<li class="listitem">
+ however, their premise (that the system-supplied allocation mechanism
+ is hopelessly inefficient) is flawed on every system I've tested
+ on.
+ </li>
+<li class="listitem">
+ Run their timings on your system before you accept their conclusions.
+ </li>
+<li class="listitem">
+ Missing aspect: Requires non-intuitive user code to create and
+ destroy the Pool.
+ </li>
+</ul></div>
+ </li>
+<li class="listitem">
+ <span class="emphasis"><em>Advanced C++: Programming Styles and Idioms</em></span>, by
+ James O. Coplien, Section 3.6.
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Has examples of both static and dynamic pooling, but missing aspects:
+ </li>
+<li class="listitem">
+ Not thread-safe.
+ </li>
+<li class="listitem">
+ The static pooling example is not portable.
+ </li>
+</ul></div>
+ </li>
+</ol></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tickets.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="references.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/appendices/references.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/appendices/references.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix G: References</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="implementations.html" title="Appendix F: Other Implementations">
+<link rel="next" href="todo.html" title="Appendix H: Future plans">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="implementations.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="todo.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.appendices.references"></a><a class="link" href="references.html" title="Appendix G: References">Appendix G: References</a>
+</h3></div></div></div>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ <a name="ref1"></a> Doug Lea, A Memory Allocator. See http://gee.cs.oswego.edu/dl/html/malloc.html
+ </li>
+<li class="listitem">
+ <a name="ref2"></a>Paul R. Wilson, Mark S. Johnstone, Michael Neely,
+ and David Boles, <span class="emphasis"><em>Dynamic Storage Allocation: A Survey and Critical
+ Review</em></span> in International Workshop on Memory Management, September
+ 1995, pg. 28, 36. See ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps
+ </li>
+</ol></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="implementations.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="todo.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/appendices/tests.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/appendices/tests.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix D: Tests</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="acknowledgements.html" title="Appendix C: Acknowledgements">
+<link rel="next" href="tickets.html" title="Appendix E: Tickets">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tickets.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.appendices.tests"></a><a class="link" href="tests.html" title="Appendix D: Tests">Appendix D: Tests</a>
+</h3></div></div></div>
+<p>
+ See folder <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">pool</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span></code>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tickets.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/appendices/tickets.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/appendices/tickets.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix E: Tickets</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="tests.html" title="Appendix D: Tests">
+<link rel="next" href="implementations.html" title="Appendix F: Other Implementations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tests.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="implementations.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.appendices.tickets"></a><a class="link" href="tickets.html" title="Appendix E: Tickets">Appendix E: Tickets</a>
+</h3></div></div></div>
+<p>
+ Report and view bugs and features by adding a ticket at Boost.Trac.
+ </p>
+<p>
+ Existing open tickets for this library alone can be viewed here.
+ Existing tickets for this library - including closed ones - can be viewed
+ here.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tests.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="implementations.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/appendices/todo.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/appendices/todo.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Appendix H: Future plans</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="references.html" title="Appendix G: References">
+<link rel="next" href="../indexes.html" title="Indexes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="references.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../indexes.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.appendices.todo"></a><a class="link" href="todo.html" title="Appendix H: Future plans">Appendix H: Future plans</a>
+</h3></div></div></div>
+<p>
+ Another pool interface will be written: a base class for per-class pool allocation.
+ </p>
+<p>
+ This "pool_base" interface will be Singleton Usage with Exceptions,
+ and built on the singleton_pool interface.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="references.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../indexes.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/indexes.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/indexes.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Indexes</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../index.html" title="Boost.Pool">
+<link rel="prev" href="appendices/todo.html" title="Appendix H: Future plans">
+<link rel="next" href="indexes/s01.html" title="Function Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="appendices/todo.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes/s01.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_pool.indexes"></a><a class="link" href="indexes.html" title="Indexes">Indexes</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Function Index</span></dt>
+<dt><span class="section">Class Index</span></dt>
+<dt><span class="section">Typedef Index</span></dt>
+<dt><span class="section">Index</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="appendices/todo.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes/s01.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s01.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s01.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,327 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Function Index</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../indexes.html" title="Indexes">
+<link rel="prev" href="../indexes.html" title="Indexes">
+<link rel="next" href="s02.html" title="Class Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../indexes.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s02.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id947354"></a>Function Index</h3></div></div></div>
+<p><a class="link" href="s01.html#idx_id_0">A</a> <a class="link" href="s01.html#idx_id_2">C</a> <a class="link" href="s01.html#idx_id_3">D</a> <a class="link" href="s01.html#idx_id_5">F</a> <a class="link" href="s01.html#idx_id_6">G</a> <a class="link" href="s01.html#idx_id_8">I</a> <a class="link" href="s01.html#idx_id_10">M</a> <a class="link" href="s01.html#idx_id_11">N</a> <a class="link" href="s01.html#idx_id_12">O</a> <a class="link" href="s01.html#idx_id_13">P</a> <a class="link" href="s01.html#idx_id_14">R</a> <a class="link" href="s01.html#idx_id_15">S</a> <a class="link" href="s01.html#idx_id_16">T</a></p>
+<div class="variablelist"><dl>
+<dt>
+<a name="idx_id_0"></a><span class="term">A</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">address</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">add_block</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">add_ordered_block</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">allocate</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_2"></a><span class="term">C</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">construct</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_3"></a><span class="term">D</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">deallocate</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">destroy</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_5"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_prev</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">free</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">free_n</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_6"></a><span class="term">G</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">get_pool</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_8"></a><span class="term">I</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">is_from</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_10"></a><span class="term">M</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">main</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">malloc</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">malloc_n</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">malloc_need_resize</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">max_size</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_11"></a><span class="term">N</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nextof</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_12"></a><span class="term">O</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ordered_free</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ordered_free_n</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ordered_malloc</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ordered_malloc_need_resize</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_13"></a><span class="term">P</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">purge_memory</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_14"></a><span class="term">R</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">release_memory</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_15"></a><span class="term">S</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">segregate</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">set_max_size</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">set_next_size</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sizeof</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_16"></a><span class="term">T</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">try_malloc_n</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li></ul></div>
+</li></ul></div></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../indexes.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s02.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s02.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s02.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,167 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class Index</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../indexes.html" title="Indexes">
+<link rel="prev" href="s01.html" title="Function Index">
+<link rel="next" href="s03.html" title="Typedef Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="s01.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s03.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id948701"></a>Class Index</h3></div></div></div>
+<p><a class="link" href="s02.html#idx_id_22">D</a> <a class="link" href="s02.html#idx_id_24">F</a> <a class="link" href="s02.html#idx_id_31">O</a> <a class="link" href="s02.html#idx_id_32">P</a> <a class="link" href="s02.html#idx_id_33">R</a> <a class="link" href="s02.html#idx_id_34">S</a></p>
+<div class="variablelist"><dl>
+<dt>
+<a name="idx_id_22"></a><span class="term">D</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">default_user_allocator_malloc_free</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">default_user_allocator_new_delete</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_24"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fast_pool_allocator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fast_pool_allocator_tag</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">Struct fast_pool_allocator_tag</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_31"></a><span class="term">O</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">object_creator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">Struct object_creator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">object_pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></strong></span></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_32"></a><span class="term">P</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></strong></span></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pool_allocator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pool_allocator_tag</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag"><span class="index-entry-level-1">Struct pool_allocator_tag</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_33"></a><span class="term">R</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rebind</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_34"></a><span class="term">S</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">simple_segregated_storage</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">singleton_pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></strong></span></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="s01.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s03.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s03.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s03.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,207 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Typedef Index</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../indexes.html" title="Indexes">
+<link rel="prev" href="s02.html" title="Class Index">
+<link rel="next" href="s04.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="s02.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s04.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id949226"></a>Typedef Index</h3></div></div></div>
+<p><a class="link" href="s03.html#idx_id_40">C</a> <a class="link" href="s03.html#idx_id_41">D</a> <a class="link" href="s03.html#idx_id_42">E</a> <a class="link" href="s03.html#idx_id_48">M</a> <a class="link" href="s03.html#idx_id_50">O</a> <a class="link" href="s03.html#idx_id_51">P</a> <a class="link" href="s03.html#idx_id_52">R</a> <a class="link" href="s03.html#idx_id_53">S</a> <a class="link" href="s03.html#idx_id_54">T</a> <a class="link" href="s03.html#idx_id_55">U</a> <a class="link" href="s03.html#idx_id_56">V</a></p>
+<div class="variablelist"><dl>
+<dt>
+<a name="idx_id_40"></a><span class="term">C</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">const_pointer</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">const_reference</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_41"></a><span class="term">D</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">difference_type</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_42"></a><span class="term">E</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">element_type</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_48"></a><span class="term">M</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mutex</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_50"></a><span class="term">O</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">other</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_51"></a><span class="term">P</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pointer</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_52"></a><span class="term">R</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">reference</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_53"></a><span class="term">S</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">size_type</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_54"></a><span class="term">T</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tag</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_55"></a><span class="term">U</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_allocator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_56"></a><span class="term">V</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">value_type</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="s02.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s04.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s04.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/indexes/s04.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,1760 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../indexes.html" title="Indexes">
+<link rel="prev" href="s03.html" title="Typedef Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="s03.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id950307"></a>Index</h3></div></div></div>
+<p><a class="link" href="s04.html#idx_id_57">A</a> <a class="link" href="s04.html#idx_id_58">B</a> <a class="link" href="s04.html#idx_id_59">C</a> <a class="link" href="s04.html#idx_id_60">D</a> <a class="link" href="s04.html#idx_id_61">E</a> <a class="link" href="s04.html#idx_id_62">F</a> <a class="link" href="s04.html#idx_id_63">G</a> <a class="link" href="s04.html#idx_id_64">H</a> <a class="link" href="s04.html#idx_id_65">I</a> <a class="link" href="s04.html#idx_id_66">J</a> <a class="link" href="s04.html#idx_id_67">M</a> <a class="link" href="s04.html#idx_id_68">N</a> <a class="link" href="s04.html#idx_id_69">O</a> <a class="link" href="s04.html#idx_id_70">P</a> <a class="link" href="s04.html#idx_id_71">R</a> <a class="link" href="s04.html#idx_id_72">S</a> <a class="link" href="s04.html#idx_id_73">T</a> <a class="link" href="s04.html#idx_id_74">U</a> <a class="link" href="s04.html#idx_id_75">V</a></p>
+<div class="variablelist"><dl>
+<dt>
+<a name="idx_id_57"></a><span class="term">A</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">address</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">add_block</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">add_ordered_block</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">alignment</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">allocate</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">allocation</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">Allocation and Deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/faq.html" title="Appendix B: FAQ"><span class="index-entry-level-1">Appendix B: FAQ</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">Appendix F: Other Implementations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/references.html" title="Appendix G: References"><span class="index-entry-level-1">Appendix G: References</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/todo.html" title="Appendix H: Future plans"><span class="index-entry-level-1">Appendix H: Future plans</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">Boost Pool Interfaces - What interfaces are provided and when to use each one.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/object_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">Simple Segregated Storage</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Allocation and Deallocation</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">size</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Appendix B: FAQ</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/faq.html" title="Appendix B: FAQ"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/faq.html" title="Appendix B: FAQ"><span class="index-entry-level-1">deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/faq.html" title="Appendix B: FAQ"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/faq.html" title="Appendix B: FAQ"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/faq.html" title="Appendix B: FAQ"><span class="index-entry-level-1">objects</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Appendix F: Other Implementations</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">concepts</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">portable</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">segregated</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Appendix G: References</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/references.html" title="Appendix G: References"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/references.html" title="Appendix G: References"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/references.html" title="Appendix G: References"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/references.html" title="Appendix G: References"><span class="index-entry-level-1">segregated</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Appendix H: Future plans</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/todo.html" title="Appendix H: Future plans"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/todo.html" title="Appendix H: Future plans"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/todo.html" title="Appendix H: Future plans"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/todo.html" title="Appendix H: Future plans"><span class="index-entry-level-1">singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">automatic</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/object_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_58"></a><span class="term">B</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Basic ideas behind pooling</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">new</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">size</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">block</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">Allocation and Deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">Appendix F: Other Implementations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">Boost Pool Interfaces - What interfaces are provided and when to use each one.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">Segregation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">Simple Segregated Storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.ss_symbols" title="Table&#160;1.&#160;Symbol Table"><span class="index-entry-level-1">Symbol Table</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">The UserAllocator Concept</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator.userallocator_requirements" title="Table&#160;7.&#160;UserAllocator Requirements"><span class="index-entry-level-1">UserAllocator Requirements</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Boost Pool Interfaces - What interfaces are provided and when to use each one.</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">concepts</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">singleton</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">BOOST_POOL_VALIDATE_INTERNALS</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../BOOST_POOL_VALIDATE_INTERNALS.html" title="Macro BOOST_POOL_VALIDATE_INTERNALS"><span class="index-entry-level-1">Macro BOOST_POOL_VALIDATE_INTERNALS</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">build</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/installation.html" title="Installation"><span class="index-entry-level-1">Installation</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Building the Test Programs</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/testing.html" title="Building the Test Programs"><span class="index-entry-level-1">jamfile</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_59"></a><span class="term">C</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">chunk</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">Allocation and Deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">Boost Pool Interfaces - What interfaces are provided and when to use each one.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">Segregation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">Simple Segregated Storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.ss_symbols" title="Table&#160;1.&#160;Symbol Table"><span class="index-entry-level-1">Symbol Table</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">The UserAllocator Concept</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Class template fast_pool_allocator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">address</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">allocate</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">construct</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">const_pointer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">const_reference</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">deallocate</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">destroy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">main</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">max_size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">mutex</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">other</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">pointer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">rebind</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">reference</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">user_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">const_pointer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">other</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">pointer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">rebind</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Class template object_pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">automatic</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">construct</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">destroy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">element_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">include</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">is_from</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">new</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">nextof</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">set_next_size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">user_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Class template pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">alignment</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">is_from</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">malloc_need_resize</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">new</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">nextof</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">ordered_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">ordered_malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">ordered_malloc_need_resize</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">purge_memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">release_memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">set_max_size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">set_next_size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">user_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Class template pool_allocator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">address</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">allocate</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">construct</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">const_pointer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">const_reference</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">deallocate</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">destroy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">main</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">max_size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">mutex</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">other</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">pointer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">rebind</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">reference</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">user_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">const_pointer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">other</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">pointer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">rebind</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Class template simple_segregated_storage</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">add_block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">add_ordered_block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">alignment</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">find_prev</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">free_n</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">malloc_n</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">nextof</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">ordered_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">ordered_free_n</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">segregate</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">try_malloc_n</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Class template singleton_pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">get_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">is_from</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">main</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">mutex</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">object_creator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">ordered_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">ordered_malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">purge_memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">release_memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">user_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">concepts</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">Appendix F: Other Implementations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">Boost Pool Interfaces - What interfaces are provided and when to use each one.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">Documentation Naming and Formatting Conventions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">The UserAllocator Concept</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">construct</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Constructors, Destructors, and State</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Constructors" title="Table&#160;4.&#160;Constructors, Destructors, and State"><span class="index-entry-level-1">new</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Constructors" title="Table&#160;4.&#160;Constructors, Destructors, and State"><span class="index-entry-level-1">ordered</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">const_pointer</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">const_reference</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">conventions</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">Documentation Naming and Formatting Conventions</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_60"></a><span class="term">D</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">deallocate</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">deallocation</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">Allocation and Deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/faq.html" title="Appendix B: FAQ"><span class="index-entry-level-1">Appendix B: FAQ</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">Simple Segregated Storage</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">default_user_allocator_malloc_free</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">default_user_allocator_new_delete</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">destroy</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">difference_type</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Documentation Naming and Formatting Conventions</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">concepts</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">conventions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">include</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">naming</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_61"></a><span class="term">E</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">elements</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">element_type</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_62"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fast_pool_allocator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">fast_pool_allocator_tag</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">Struct fast_pool_allocator_tag</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">find_prev</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">free</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">free_n</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_63"></a><span class="term">G</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">get_pool</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Guaranteeing Alignment - How we guarantee alignment portably.</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">address</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">alignment</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">automatic</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">concepts</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">elements</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">new</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">overview</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">padding</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">portable</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">sizeof</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_64"></a><span class="term">H</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Header &lt; boost/pool/object_pool.hpp &gt;</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">automatic</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Header &lt; boost/pool/pool.hpp &gt;</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">alignment</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Header &lt; boost/pool/poolfwd.hpp &gt;</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/poolfwd_hpp.html" title="Header &lt;boost/pool/poolfwd.hpp&gt;"><span class="index-entry-level-1">headers</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">main</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">sizeof</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">BOOST_POOL_VALIDATE_INTERNALS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Header &lt; boost/pool/singleton_pool.hpp &gt;</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">headers</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/object_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/poolfwd_hpp.html" title="Header &lt;boost/pool/poolfwd.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/poolfwd.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/singleton_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/usage.html" title="How do I use Pool?"><span class="index-entry-level-1">How do I use Pool?</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/installation.html" title="Installation"><span class="index-entry-level-1">Installation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../BOOST_POOL_VALIDATE_INTERNALS.html" title="Macro BOOST_POOL_VALIDATE_INTERNALS"><span class="index-entry-level-1">Macro BOOST_POOL_VALIDATE_INTERNALS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">Struct fast_pool_allocator_tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">Struct object_creator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag"><span class="index-entry-level-1">Struct pool_allocator_tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">How Contiguous Chunks are Handled</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">alignment</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">padding</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">sizeof</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">How do I use Pool?</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/usage.html" title="How do I use Pool?"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/usage.html" title="How do I use Pool?"><span class="index-entry-level-1">include</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/usage.html" title="How do I use Pool?"><span class="index-entry-level-1">interface</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_65"></a><span class="term">I</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">include</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">Documentation Naming and Formatting Conventions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/usage.html" title="How do I use Pool?"><span class="index-entry-level-1">How do I use Pool?</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/installation.html" title="Installation"><span class="index-entry-level-1">Installation</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Installation</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/installation.html" title="Installation"><span class="index-entry-level-1">build</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/installation.html" title="Installation"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/installation.html" title="Installation"><span class="index-entry-level-1">include</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/installation.html" title="Installation"><span class="index-entry-level-1">installation</span></a></strong></span></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">interface</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/faq.html" title="Appendix B: FAQ"><span class="index-entry-level-1">Appendix B: FAQ</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/todo.html" title="Appendix H: Future plans"><span class="index-entry-level-1">Appendix H: Future plans</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">Boost Pool Interfaces - What interfaces are provided and when to use each one.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/singleton_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/usage.html" title="How do I use Pool?"><span class="index-entry-level-1">How do I use Pool?</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces" title="Pool Interfaces"><span class="index-entry-level-1">Pool Interfaces</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">The UserAllocator Concept</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Introduction</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">concepts</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">segregated</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Introduction and Overview</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool.html" title="Introduction and Overview"><span class="index-entry-level-1">overview</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">is_from</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_66"></a><span class="term">J</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">jamfile</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/testing.html" title="Building the Test Programs"><span class="index-entry-level-1">Building the Test Programs</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
+<a name="idx_id_67"></a><span class="term">M</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Macro BOOST_POOL_VALIDATE_INTERNALS</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../BOOST_POOL_VALIDATE_INTERNALS.html" title="Macro BOOST_POOL_VALIDATE_INTERNALS"><span class="index-entry-level-1">BOOST_POOL_VALIDATE_INTERNALS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../BOOST_POOL_VALIDATE_INTERNALS.html" title="Macro BOOST_POOL_VALIDATE_INTERNALS"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../BOOST_POOL_VALIDATE_INTERNALS.html" title="Macro BOOST_POOL_VALIDATE_INTERNALS"><span class="index-entry-level-1">segregated</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">main</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">malloc</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">Allocation and Deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/references.html" title="Appendix G: References"><span class="index-entry-level-1">Appendix G: References</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator.userallocator_requirements" title="Table&#160;7.&#160;UserAllocator Requirements"><span class="index-entry-level-1">UserAllocator Requirements</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">malloc_n</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">malloc_need_resize</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">max_size</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">memory</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/faq.html" title="Appendix B: FAQ"><span class="index-entry-level-1">Appendix B: FAQ</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/references.html" title="Appendix G: References"><span class="index-entry-level-1">Appendix G: References</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">Boost Pool Interfaces - What interfaces are provided and when to use each one.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/object_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">Segregation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">Simple Segregated Storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">The UserAllocator Concept</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator.userallocator_requirements" title="Table&#160;7.&#160;UserAllocator Requirements"><span class="index-entry-level-1">UserAllocator Requirements</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mutex</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_68"></a><span class="term">N</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">naming</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">Documentation Naming and Formatting Conventions</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">new</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Constructors" title="Table&#160;4.&#160;Constructors, Destructors, and State"><span class="index-entry-level-1">Constructors, Destructors, and State</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">nextof</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_69"></a><span class="term">O</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">objects</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/faq.html" title="Appendix B: FAQ"><span class="index-entry-level-1">Appendix B: FAQ</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">Appendix F: Other Implementations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">Boost Pool Interfaces - What interfaces are provided and when to use each one.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">Documentation Naming and Formatting Conventions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/object_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/singleton_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">Segregation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">Simple Segregated Storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">Struct object_creator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">The UserAllocator Concept</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator.userallocator_requirements" title="Table&#160;7.&#160;UserAllocator Requirements"><span class="index-entry-level-1">UserAllocator Requirements</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">object_creator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">Struct object_creator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Object_pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">automatic</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">construct</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">destroy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">element_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/object_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">is_from</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">object_pool</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">user_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">object_pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></strong></span></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ordered</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">Allocation and Deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">Boost Pool Interfaces - What interfaces are provided and when to use each one.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Constructors" title="Table&#160;4.&#160;Constructors, Destructors, and State"><span class="index-entry-level-1">Constructors, Destructors, and State</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">Segregation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ordered_free</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ordered_free_n</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ordered_malloc</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">ordered_malloc_need_resize</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">other</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">overview</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool.html" title="Introduction and Overview"><span class="index-entry-level-1">Introduction and Overview</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_70"></a><span class="term">P</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">padding</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pointer</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">alignment</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">default_user_allocator_new_delete</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">is_from</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">new</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">ordered_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">ordered_malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">purge_memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">release_memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">user_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Pool Interfaces</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces" title="Pool Interfaces"><span class="index-entry-level-1">interface</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pool_allocator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">address</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">allocate</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">construct</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">const_pointer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">const_reference</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">deallocate</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">destroy</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">fast_pool_allocator_tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">max_size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">other</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pointer</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator_tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">rebind</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">reference</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">user_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">value_type</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">pool_allocator_tag</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag"><span class="index-entry-level-1">Struct pool_allocator_tag</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">portable</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">Appendix F: Other Implementations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">purge_memory</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_71"></a><span class="term">R</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">rebind</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">reference</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">release_memory</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_72"></a><span class="term">S</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">segregate</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">segregated</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/implementations.html" title="Appendix F: Other Implementations"><span class="index-entry-level-1">Appendix F: Other Implementations</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/references.html" title="Appendix G: References"><span class="index-entry-level-1">Appendix G: References</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/introduction.html" title="Introduction"><span class="index-entry-level-1">Introduction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../BOOST_POOL_VALIDATE_INTERNALS.html" title="Macro BOOST_POOL_VALIDATE_INTERNALS"><span class="index-entry-level-1">Macro BOOST_POOL_VALIDATE_INTERNALS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">Simple Segregated Storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.ss_symbols" title="Table&#160;1.&#160;Symbol Table"><span class="index-entry-level-1">Symbol Table</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Segregation</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">size</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">set_max_size</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">set_next_size</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Simple Segregated Storage</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">allocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">size</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">add_block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">add_ordered_block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">alignment</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">free_n</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">malloc_n</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">ordered_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">ordered_free_n</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">segregate</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">simple_segregated_storage</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">singleton</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/todo.html" title="Appendix H: Future plans"><span class="index-entry-level-1">Appendix H: Future plans</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one."><span class="index-entry-level-1">Boost Pool Interfaces - What interfaces are provided and when to use each one.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/singleton_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">Struct fast_pool_allocator_tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">Struct object_creator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag"><span class="index-entry-level-1">Struct pool_allocator_tag</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Singleton_pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../appendices/todo.html" title="Appendix H: Future plans"><span class="index-entry-level-1">Appendix H: Future plans</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/singleton_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">is_from</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">main</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">ordered</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">ordered_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">ordered_malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">purge_memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">release_memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">singleton_pool</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">Struct fast_pool_allocator_tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">Struct object_creator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag"><span class="index-entry-level-1">Struct pool_allocator_tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">user_allocator</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">singleton_pool</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></strong></span></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">size</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.alloc" title="Table&#160;6.&#160;Allocation and Deallocation"><span class="index-entry-level-1">Allocation and Deallocation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling"><span class="index-entry-level-1">Basic ideas behind pooling</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/singleton_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Segregation" title="Table&#160;5.&#160;Segregation"><span class="index-entry-level-1">Segregation</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage"><span class="index-entry-level-1">Simple Segregated Storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.ss_symbols" title="Table&#160;1.&#160;Symbol Table"><span class="index-entry-level-1">Symbol Table</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.templates" title="Table&#160;2.&#160;Template Parameters"><span class="index-entry-level-1">Template Parameters</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">The UserAllocator Concept</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Typedefs" title="Table&#160;3.&#160;Typedefs"><span class="index-entry-level-1">Typedefs</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator.userallocator_requirements" title="Table&#160;7.&#160;UserAllocator Requirements"><span class="index-entry-level-1">UserAllocator Requirements</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">sizeof</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">size_type</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Struct default_user_allocator_malloc_free</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Struct default_user_allocator_new_delete</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">default_user_allocator_new_delete</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">difference_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">new</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">size_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Struct fast_pool_allocator_tag</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">fast_pool_allocator_tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Struct object_creator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">object_creator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Struct pool_allocator_tag</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag"><span class="index-entry-level-1">pool_allocator_tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag"><span class="index-entry-level-1">singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Struct template rebind</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">headers</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">other</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">rebind</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Symbol Table</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.ss_symbols" title="Table&#160;1.&#160;Symbol Table"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.ss_symbols" title="Table&#160;1.&#160;Symbol Table"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.ss_symbols" title="Table&#160;1.&#160;Symbol Table"><span class="index-entry-level-1">segregated</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.ss_symbols" title="Table&#160;1.&#160;Symbol Table"><span class="index-entry-level-1">size</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_73"></a><span class="term">T</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">tag</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">template</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/conventions.html" title="Documentation Naming and Formatting Conventions"><span class="index-entry-level-1">Documentation Naming and Formatting Conventions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/object_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/simple_segregated_storage.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/singleton_pool.hpp &gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">Struct fast_pool_allocator_tag</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.templates" title="Table&#160;2.&#160;Template Parameters"><span class="index-entry-level-1">Template Parameters</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">The UserAllocator Concept</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Template Parameters</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.templates" title="Table&#160;2.&#160;Template Parameters"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.templates" title="Table&#160;2.&#160;Template Parameters"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">try_malloc_n</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">Typedefs</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated.Typedefs" title="Table&#160;3.&#160;Typedefs"><span class="index-entry-level-1">size</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_74"></a><span class="term">U</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">UserAllocator Concept</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">chunk</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">concepts</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">interface</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">size</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept"><span class="index-entry-level-1">template</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">UserAllocator Requirements</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator.userallocator_requirements" title="Table&#160;7.&#160;UserAllocator Requirements"><span class="index-entry-level-1">block</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator.userallocator_requirements" title="Table&#160;7.&#160;UserAllocator Requirements"><span class="index-entry-level-1">malloc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator.userallocator_requirements" title="Table&#160;7.&#160;UserAllocator Requirements"><span class="index-entry-level-1">memory</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator.userallocator_requirements" title="Table&#160;7.&#160;UserAllocator Requirements"><span class="index-entry-level-1">objects</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.user_allocator.userallocator_requirements" title="Table&#160;7.&#160;UserAllocator Requirements"><span class="index-entry-level-1">size</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">user_allocator</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
+</ul></div>
+</li>
+</ul></div></dd>
+<dt>
+<a name="idx_id_75"></a><span class="term">V</span>
+</dt>
+<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">value_type</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
+</ul></div>
+</li></ul></div></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="s03.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/pool.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/pool.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Introduction and Overview</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Pool">
+<link rel="up" href="../index.html" title="Boost.Pool">
+<link rel="prev" href="../index.html" title="Boost.Pool">
+<link rel="next" href="pool/conventions.html" title="Documentation Naming and Formatting Conventions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pool/conventions.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_pool.pool"></a><a class="link" href="pool.html" title="Introduction and Overview">Introduction and Overview</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="pool/conventions.html">Documentation Naming and
+ Formatting Conventions</a></span></dt>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">How do I use Pool?</span></dt>
+<dt><span class="section">Installation</span></dt>
+<dt><span class="section">Building the Test Programs</span></dt>
+<dt><span class="section"><a href="pool/interfaces.html">Boost Pool Interfaces - What
+ interfaces are provided and when to use each one.</a></span></dt>
+<dd><dl><dt><span class="section">Pool Interfaces</span></dt></dl></dd>
+<dt><span class="section">Pool in More Depth</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="pool/pooling.html#boost_pool.pool.pooling.concepts">Basic ideas behind
+ pooling</a></span></dt>
+<dt><span class="section">Simple Segregated Storage</span></dt>
+<dt><span class="section"><a href="pool/pooling.html#boost_pool.pool.pooling.alignment">Guaranteeing Alignment
+ - How we guarantee alignment portably.</a></span></dt>
+<dt><span class="section"><a href="pool/pooling.html#boost_pool.pool.pooling.simple_segregated">Simple Segregated
+ Storage (Not for the faint of heart - Embedded programmers only!)</a></span></dt>
+<dt><span class="section"><a href="pool/pooling.html#boost_pool.pool.pooling.user_allocator">The UserAllocator
+ Concept</a></span></dt>
+</dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pool/conventions.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/pool/conventions.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/pool/conventions.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,93 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Documentation Naming and Formatting Conventions</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../pool.html" title="Introduction and Overview">
+<link rel="prev" href="../pool.html" title="Introduction and Overview">
+<link rel="next" href="introduction.html" title="Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../pool.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="introduction.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.pool.conventions"></a><a class="link" href="conventions.html" title="Documentation Naming and Formatting Conventions">Documentation Naming and
+ Formatting Conventions</a>
+</h3></div></div></div>
+<p>
+ This documentation makes use of the following naming and formatting conventions.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Code is in <code class="computeroutput"><span class="identifier">fixed</span> <span class="identifier">width</span>
+ <span class="identifier">font</span></code> and is syntax-highlighted
+ in color.
+ </li>
+<li class="listitem">
+ Replaceable text that you will need to supply is in <em class="replaceable"><code>italics</code></em>.
+ </li>
+<li class="listitem">
+ Free functions are rendered in the <code class="computeroutput"><span class="identifier">code</span>
+ <span class="identifier">font</span></code> followed by <code class="computeroutput"><span class="special">()</span></code>, as in <code class="computeroutput"><span class="identifier">free_function</span><span class="special">()</span></code>.
+ </li>
+<li class="listitem">
+ If a name refers to a class template, it is specified like this: <code class="computeroutput"><span class="identifier">class_template</span><span class="special">&lt;&gt;</span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">&lt;&gt;</span></code> to indicate that it is a class
+ template.
+ </li>
+<li class="listitem">
+ If a name refers to a function-like macro, it is specified like this:
+ <code class="computeroutput"><span class="identifier">MACRO</span><span class="special">()</span></code>;
+ that is, it is uppercase in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code> to indicate that it is a function-like
+ macro. Object-like macros appear without the trailing <code class="computeroutput"><span class="special">()</span></code>.
+ </li>
+<li class="listitem">
+ Names that refer to <span class="emphasis"><em>concepts</em></span> in the generic programming
+ sense are specified in CamelCase.
+ </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ In addition, notes such as this one specify non-essential information that
+ provides additional background or rationale.
+ </p></td></tr>
+</table></div>
+<p>
+ Finally, you can mentally add the following to any code fragments in this
+ document:
+ </p>
+<pre class="programlisting"><span class="comment">// Include all of Pool files</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pool</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../pool.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="introduction.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/pool/installation.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/pool/installation.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Installation</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../pool.html" title="Introduction and Overview">
+<link rel="prev" href="usage.html" title="How do I use Pool?">
+<link rel="next" href="testing.html" title="Building the Test Programs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="usage.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="testing.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.pool.installation"></a><a class="link" href="installation.html" title="Installation">Installation</a>
+</h3></div></div></div>
+<p>
+ The Boost Pool library is a header-only library. That means there is no .lib,
+ .dll, or .so to build; just add the Boost directory to your compiler's include
+ file path, and you should be good to go!
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="usage.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="testing.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/pool/interfaces.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/pool/interfaces.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,576 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Boost Pool Interfaces - What interfaces are provided and when to use each one.</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../pool.html" title="Introduction and Overview">
+<link rel="prev" href="testing.html" title="Building the Test Programs">
+<link rel="next" href="pooling.html" title="Pool in More Depth">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="testing.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pooling.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.pool.interfaces"></a><a class="link" href="interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one.">Boost Pool Interfaces - What
+ interfaces are provided and when to use each one.</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Pool Interfaces</span></dt>
+<dd><dl>
+<dt><span class="section">pool</span></dt>
+<dt><span class="section">Object_pool</span></dt>
+<dt><span class="section">Singleton_pool</span></dt>
+<dt><span class="section">pool_allocator</span></dt>
+</dl></dd>
+</dl></div>
+<h5>
+<a name="boost_pool.pool.interfaces.h0"></a>
+ <span><a name="boost_pool.pool.interfaces.introduction"></a></span><a class="link" href="interfaces.html#boost_pool.pool.interfaces.introduction">Introduction</a>
+ </h5>
+<p>
+ There are several interfaces provided which allow users great flexibility
+ in how they want to use Pools. Review the <a class="link" href="pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling">concepts</a>
+ document to get the basic understanding of how the various pools work.
+ </p>
+<h4>
+<a name="boost_pool.pool.interfaces.h1"></a>
+ <span><a name="boost_pool.pool.interfaces.terminology_and_tradeoffs"></a></span><a class="link" href="interfaces.html#boost_pool.pool.interfaces.terminology_and_tradeoffs">Terminology
+ and Tradeoffs</a>
+ </h4>
+<h6>
+<a name="boost_pool.pool.interfaces.h2"></a>
+ <span><a name="boost_pool.pool.interfaces.object_usage_vs__singleton_usage"></a></span><a class="link" href="interfaces.html#boost_pool.pool.interfaces.object_usage_vs__singleton_usage">Object
+ Usage vs. Singleton Usage</a>
+ </h6>
+<p>
+ Object Usage is the method where each Pool is an object that may be created
+ and destroyed. Destroying a Pool implicitly frees all chunks that have been
+ allocated from it.
+ </p>
+<p>
+ Singleton Usage is the method where each Pool is an object with static duration;
+ that is, it will not be destroyed until program exit. Pool objects with Singleton
+ Usage may be shared; thus, Singleton Usage implies thread-safety as well.
+ System memory allocated by Pool objects with Singleton Usage may be freed
+ through release_memory or purge_memory.
+ </p>
+<h6>
+<a name="boost_pool.pool.interfaces.h3"></a>
+ <span><a name="boost_pool.pool.interfaces.out_of_memory_conditions__exceptions_vs__null_return"></a></span><a class="link" href="interfaces.html#boost_pool.pool.interfaces.out_of_memory_conditions__exceptions_vs__null_return">Out-of-Memory
+ Conditions: Exceptions vs. Null Return</a>
+ </h6>
+<p>
+ Some Pool interfaces throw exceptions when out-of-memory; others will <code class="computeroutput"><span class="keyword">return</span> <span class="number">0</span></code>. In
+ general, unless mandated by the Standard, Pool interfaces will always prefer
+ to <code class="computeroutput"><span class="keyword">return</span> <span class="number">0</span></code>
+ instead of throwing an exception.
+ </p>
+<h6>
+<a name="boost_pool.pool.interfaces.h4"></a>
+ <span><a name="boost_pool.pool.interfaces.ordered_versus_unordered"></a></span><a class="link" href="interfaces.html#boost_pool.pool.interfaces.ordered_versus_unordered">Ordered
+ versus unordered</a>
+ </h6>
+<p>
+ An ordered pool maintains it's free list in order of the address of each
+ free block - this is the most efficient way if you're likely to allocate
+ arrays of objects. However, freeing an object can be O(N) in the number of
+ currently free blocks which can be prohibitively expensive in some situations.
+ </p>
+<p>
+ An unordered pool does not maintain it's free list in any particular order,
+ as a result allocation and freeing single objects is very fast, but allocating
+ arrays may be slow (and in particular the pool may not be aware that it contains
+ enough free memory for the allocation request, and unnecessarily allocate
+ more memory).
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_pool.pool.interfaces.interfaces"></a><a class="link" href="interfaces.html#boost_pool.pool.interfaces.interfaces" title="Pool Interfaces">Pool Interfaces</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">pool</span></dt>
+<dt><span class="section">Object_pool</span></dt>
+<dt><span class="section">Singleton_pool</span></dt>
+<dt><span class="section">pool_allocator</span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_pool.pool.interfaces.interfaces.pool"></a><a class="link" href="interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool">pool</a>
+</h5></div></div></div>
+<p>
+ The <code class="computeroutput"><a class="link" href="../../boost/pool.html" title="Class template pool">pool</a></code> interface is a simple
+ Object Usage interface with Null Return.
+ </p>
+<p>
+ <code class="computeroutput"><a class="link" href="../../boost/pool.html" title="Class template pool">pool</a></code> is a fast memory allocator,
+ and guarantees proper alignment of all allocated chunks.
+ </p>
+<p>
+ <code class="computeroutput"><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;">pool.hpp</a></code> provides
+ two <a class="link" href="pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept">UserAllocator</a>
+ classes and a <code class="computeroutput"><a class="link" href="../../boost/pool.html" title="Class template pool">template class pool</a></code>,
+ which extends and generalizes the framework provided by the <a class="link" href="pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage">Simple
+ Segregated Storage</a> solution. For information on other pool-based
+ interfaces, see the other <a class="link" href="interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one.">Pool
+ Interfaces</a>.
+ </p>
+<p>
+ <span class="bold"><strong>Synopsis</strong></span>
+ </p>
+<p>
+ There are two <a class="link" href="pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept">UserAllocator</a>
+ classes provided. Both of them are in <code class="computeroutput"><a class="link" href="../../header/boost/pool/pool_hpp.html" title="Header &lt;boost/pool/pool.hpp&gt;">pool.hpp</a></code>.
+ </p>
+<p>
+ The default value for the template parameter <a class="link" href="pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept">UserAllocator</a>
+ is always <code class="computeroutput"><span class="identifier">default_user_allocator_new_delete</span></code>.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">default_user_allocator_new_delete</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span> <span class="identifier">difference_type</span><span class="special">;</span>
+
+ <span class="keyword">static</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">malloc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> <span class="identifier">bytes</span><span class="special">)</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="keyword">new</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">nothrow</span><span class="special">)</span> <span class="keyword">char</span><span class="special">[</span><span class="identifier">bytes</span><span class="special">];</span> <span class="special">}</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">free</span><span class="special">(</span><span class="keyword">char</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">block</span><span class="special">)</span>
+ <span class="special">{</span> <span class="keyword">delete</span> <span class="special">[]</span> <span class="identifier">block</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">struct</span> <span class="identifier">default_user_allocator_malloc_free</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span> <span class="identifier">difference_type</span><span class="special">;</span>
+
+ <span class="keyword">static</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">malloc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">size_type</span> <span class="identifier">bytes</span><span class="special">)</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="keyword">reinterpret_cast</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="special">*&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">malloc</span><span class="special">(</span><span class="identifier">bytes</span><span class="special">));</span> <span class="special">}</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">free</span><span class="special">(</span><span class="keyword">char</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">block</span><span class="special">)</span>
+ <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">free</span><span class="special">(</span><span class="identifier">block</span><span class="special">);</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">UserAllocator</span> <span class="special">=</span> <span class="identifier">default_user_allocator_new_delete</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">pool</span>
+<span class="special">{</span>
+ <span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">pool</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pool</span> <span class="special">&amp;);</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</span> <span class="identifier">pool</span> <span class="special">&amp;);</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span> <span class="identifier">user_allocator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">UserAllocator</span><span class="special">::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">UserAllocator</span><span class="special">::</span><span class="identifier">difference_type</span> <span class="identifier">difference_type</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">pool</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">requested_size</span><span class="special">);</span>
+ <span class="special">~</span><span class="identifier">pool</span><span class="special">();</span>
+
+ <span class="keyword">bool</span> <span class="identifier">release_memory</span><span class="special">();</span>
+ <span class="keyword">bool</span> <span class="identifier">purge_memory</span><span class="special">();</span>
+
+ <span class="keyword">bool</span> <span class="identifier">is_from</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">chunk</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">size_type</span> <span class="identifier">get_requested_size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">malloc</span><span class="special">();</span>
+ <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">ordered_malloc</span><span class="special">();</span>
+ <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">ordered_malloc</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">);</span>
+
+ <span class="keyword">void</span> <span class="identifier">free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">chunk</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">ordered_free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">chunk</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">chunks</span><span class="special">,</span> <span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">ordered_free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">chunks</span><span class="special">,</span> <span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Example:</strong></span>
+</p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">func</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pool</span><span class="special">&lt;&gt;</span> <span class="identifier">p</span><span class="special">(</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">int</span><span class="special">));</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">int</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">malloc</span><span class="special">();</span>
+ <span class="special">...</span> <span class="comment">// Do something with t; don't take the time to free() it.</span>
+ <span class="special">}</span>
+<span class="special">}</span> <span class="comment">// on function exit, p is destroyed, and all malloc()'ed ints are implicitly freed.</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_pool.pool.interfaces.interfaces.object_pool"></a><a class="link" href="interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool">Object_pool</a>
+</h5></div></div></div>
+<p>
+ The <code class="computeroutput"><a class="link" href="../../boost/object_pool.html" title="Class template object_pool">template class object_pool</a></code>
+ interface is an Object Usage interface with Null Return, but is aware
+ of the type of the object for which it is allocating chunks. On destruction,
+ any chunks that have been allocated from that <code class="computeroutput"><span class="identifier">object_pool</span></code>
+ will have their destructors called.
+ </p>
+<p>
+ <code class="computeroutput"><a class="link" href="../../header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;">object_pool.hpp</a></code>
+ provides a template type that can be used for fast and efficient memory
+ allocation. It also provides automatic destruction of non-deallocated
+ objects.
+ </p>
+<p>
+ For information on other pool-based interfaces, see the other <a class="link" href="interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one.">Pool
+ Interfaces</a>.
+ </p>
+<p>
+ <span class="bold"><strong>Synopsis</strong></span>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">ElementType</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UserAllocator</span> <span class="special">=</span> <span class="identifier">default_user_allocator_new_delete</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">object_pool</span>
+<span class="special">{</span>
+ <span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">object_pool</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">object_pool</span> <span class="special">&amp;);</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</span> <span class="identifier">object_pool</span> <span class="special">&amp;);</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">ElementType</span> <span class="identifier">element_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span> <span class="identifier">user_allocator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">pool</span><span class="special">&lt;</span><span class="identifier">UserAllocator</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">pool</span><span class="special">&lt;</span><span class="identifier">UserAllocator</span><span class="special">&gt;::</span><span class="identifier">difference_type</span> <span class="identifier">difference_type</span><span class="special">;</span>
+
+ <span class="identifier">object_pool</span><span class="special">();</span>
+ <span class="special">~</span><span class="identifier">object_pool</span><span class="special">();</span>
+
+ <span class="identifier">element_type</span> <span class="special">*</span> <span class="identifier">malloc</span><span class="special">();</span>
+ <span class="keyword">void</span> <span class="identifier">free</span><span class="special">(</span><span class="identifier">element_type</span> <span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+ <span class="keyword">bool</span> <span class="identifier">is_from</span><span class="special">(</span><span class="identifier">element_type</span> <span class="special">*</span> <span class="identifier">p</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">element_type</span> <span class="special">*</span> <span class="identifier">construct</span><span class="special">();</span>
+ <span class="comment">// other construct() functions</span>
+ <span class="keyword">void</span> <span class="identifier">destroy</span><span class="special">(</span><span class="identifier">element_type</span> <span class="special">*</span> <span class="identifier">p</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Template Parameters</strong></span>
+ </p>
+<p>
+ <span class="emphasis"><em>ElementType</em></span>
+ </p>
+<p>
+ The template parameter is the type of object to allocate/deallocate.
+ It must have a non-throwing destructor.
+ </p>
+<p>
+ <span class="emphasis"><em>UserAllocator</em></span>
+ </p>
+<p>
+ Defines the method that the underlying Pool will use to allocate memory
+ from the system. Default is default_user_allocator_new_delete. See __<a class="link" href="pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept">UserAllocator</a>
+ for details.
+ </p>
+<p>
+ <span class="bold"><strong>Example:</strong></span> struct X { ... }; // has destructor
+ with side-effects.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">func</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">object_pool</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="identifier">p</span><span class="special">;</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">X</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">malloc</span><span class="special">();</span>
+ <span class="special">...</span> <span class="comment">// Do something with t; don't take the time to free() it.</span>
+ <span class="special">}</span>
+<span class="special">}</span> <span class="comment">// on function exit, p is destroyed, and all destructors for the X objects are called.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_pool.pool.interfaces.interfaces.singleton_pool"></a><a class="link" href="interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool">Singleton_pool</a>
+</h5></div></div></div>
+<p>
+ The <code class="computeroutput"><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool">singleton_pool interface</a></code>
+ at <code class="computeroutput"><a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header &lt;boost/pool/singleton_pool.hpp&gt;">singleton_pool.hpp</a></code>
+ is a Singleton Usage interface with Null Return. It's just the same as
+ the pool interface but with Singleton Usage instead.
+ </p>
+<p>
+ <span class="bold"><strong>Synopsis</strong></span>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Tag</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">RequestedSize</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">UserAllocator</span> <span class="special">=</span> <span class="identifier">default_user_allocator_new_delete</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">singleton_pool</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">Tag</span> <span class="identifier">tag</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span> <span class="identifier">user_allocator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">pool</span><span class="special">&lt;</span><span class="identifier">UserAllocator</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">pool</span><span class="special">&lt;</span><span class="identifier">UserAllocator</span><span class="special">&gt;::</span><span class="identifier">difference_type</span> <span class="identifier">difference_type</span><span class="special">;</span>
+
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="identifier">requested_size</span> <span class="special">=</span> <span class="identifier">RequestedSize</span><span class="special">;</span>
+
+ <span class="keyword">private</span><span class="special">:</span>
+ <span class="keyword">static</span> <span class="identifier">pool</span><span class="special">&lt;</span><span class="identifier">size_type</span><span class="special">&gt;</span> <span class="identifier">p</span><span class="special">;</span> <span class="comment">// exposition only!</span>
+
+ <span class="identifier">singleton_pool</span><span class="special">();</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">is_from</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">malloc</span><span class="special">();</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">ordered_malloc</span><span class="special">();</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">ordered_malloc</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">);</span>
+
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">ordered_free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">ordered_free</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">);</span>
+
+ <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">release_memory</span><span class="special">();</span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">purge_memory</span><span class="special">();</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Notes</strong></span>
+ </p>
+<p>
+ The underlying pool <code class="computeroutput"><span class="identifier">p</span></code>
+ referenced by the static functions in <code class="computeroutput"><span class="identifier">singleton_pool</span></code>
+ is actually declared in a way so that it is:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Thread-safe if there is only one thread running before <code class="computeroutput"><span class="identifier">main</span><span class="special">()</span></code>
+ begins and after <code class="computeroutput"><span class="identifier">main</span><span class="special">()</span></code> ends. All of the static functions
+ of singleton_pool synchronize their access to <code class="computeroutput"><span class="identifier">p</span></code>.
+ </li>
+<li class="listitem">
+ Guaranteed to be constructed before it is used, so that the simple
+ static object in the synopsis above would actually be an incorrect
+ implementation. The actual implementation to guarantee this is considerably
+ more complicated.
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Note</strong></span> that a different underlying pool
+ <code class="computeroutput"><span class="identifier">p</span></code> exists for each different
+ set of template parameters, including implementation-specific ones.
+ </p>
+<p>
+ <span class="bold"><strong>Template Parameters</strong></span>
+ </p>
+<p>
+ <span class="emphasis"><em>Tag</em></span>
+ </p>
+<p>
+ The <span class="emphasis"><em>Tag</em></span> template parameter allows different unbounded
+ sets of singleton pools to exist. For example, the pool allocators use
+ two tag classes to ensure that the two different allocator types never
+ share the same underlying singleton pool.
+ </p>
+<p>
+ <span class="emphasis"><em>Tag</em></span> is never actually used by <code class="computeroutput"><span class="identifier">singleton_pool</span></code>.
+ </p>
+<p>
+ <span class="emphasis"><em>RequestedSize</em></span> The requested size of memory chunks
+ to allocate. This is passed as a constructor parameter to the underlying
+ pool. Must be greater than 0.
+ </p>
+<p>
+ <span class="emphasis"><em>UserAllocator</em></span>
+ </p>
+<p>
+ Defines the method that the underlying pool will use to allocate memory
+ from the system. See User Allocators for details.
+ </p>
+<p>
+ <span class="bold"><strong>Example:</strong></span> struct MyPoolTag { };
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">singleton_pool</span><span class="special">&lt;</span><span class="identifier">MyPoolTag</span><span class="special">,</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">int</span><span class="special">)&gt;</span> <span class="identifier">my_pool</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="identifier">func</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">int</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">my_pool</span><span class="special">::</span><span class="identifier">malloc</span><span class="special">();</span>
+ <span class="special">...</span> <span class="comment">// Do something with t; don't take the time to free() it.</span>
+ <span class="special">}</span>
+ <span class="comment">// Explicitly free all malloc()'ed ints.</span>
+ <span class="identifier">my_pool</span><span class="special">::</span><span class="identifier">purge_memory</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_pool.pool.interfaces.interfaces.pool_allocator"></a><a class="link" href="interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator">pool_allocator</a>
+</h5></div></div></div>
+<p>
+ The <code class="computeroutput"><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator">pool_allocator interface</a></code>
+ is a Singleton Usage interface with Exceptions. It is built on the singleton_pool
+ interface, and provides a Standard Allocator-compliant class (for use
+ in containers, etc.).
+ </p>
+<p>
+ <span class="bold"><strong>Introduction</strong></span>
+ </p>
+<p>
+ <code class="computeroutput"><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;">pool_alloc.hpp</a></code>
+ </p>
+<p>
+ Provides two template types that can be used for fast and efficient memory
+ allocation. These types both satisfy the Standard Allocator requirements
+ [20.1.5] and the additional requirements in [20.1.5/4], so they can be
+ used with Standard or user-supplied containers.
+ </p>
+<p>
+ For information on other pool-based interfaces, see the other <a class="link" href="interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one.">Pool
+ Interfaces</a>.
+ </p>
+<p>
+ <span class="bold"><strong>Synopsis</strong></span>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">pool_allocator_tag</span> <span class="special">{</span> <span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">UserAllocator</span> <span class="special">=</span> <span class="identifier">default_user_allocator_new_delete</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">pool_allocator</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span> <span class="identifier">user_allocator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="special">*</span> <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">*</span> <span class="identifier">const_pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">const_reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">pool</span><span class="special">&lt;</span><span class="identifier">UserAllocator</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">pool</span><span class="special">&lt;</span><span class="identifier">UserAllcoator</span><span class="special">&gt;::</span><span class="identifier">difference_type</span> <span class="identifier">difference_type</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">rebind</span>
+ <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">pool_allocator</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">&gt;</span> <span class="identifier">other</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">pool_allocator</span><span class="special">();</span>
+ <span class="identifier">pool_allocator</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pool_allocator</span> <span class="special">&amp;);</span>
+ <span class="comment">// The following is not explicit, mimicking std::allocator [20.4.1]</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">&gt;</span>
+ <span class="identifier">pool_allocator</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">pool_allocator</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">&gt;</span> <span class="special">&amp;);</span>
+ <span class="identifier">pool_allocator</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</span> <span class="identifier">pool_allocator</span> <span class="special">&amp;);</span>
+ <span class="special">~</span><span class="identifier">pool_allocator</span><span class="special">();</span>
+
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <span class="identifier">address</span><span class="special">(</span><span class="identifier">reference</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="identifier">const_pointer</span> <span class="identifier">address</span><span class="special">(</span><span class="identifier">const_reference</span> <span class="identifier">s</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="identifier">size_type</span> <span class="identifier">max_size</span><span class="special">();</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">construct</span><span class="special">(</span><span class="identifier">pointer</span> <span class="identifier">ptr</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">t</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">destroy</span><span class="special">(</span><span class="identifier">pointer</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">pool_allocator</span> <span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">pool_allocator</span> <span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <span class="identifier">allocate</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <span class="identifier">allocate</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">pointer</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">deallocate</span><span class="special">(</span><span class="identifier">pointer</span> <span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="keyword">struct</span> <span class="identifier">fast_pool_allocator_tag</span> <span class="special">{</span> <span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span>
+ <span class="keyword">typename</span> <span class="identifier">UserAllocator</span> <span class="special">=</span> <span class="identifier">default_user_allocator_new_delete</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">fast_pool_allocator</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">UserAllocator</span> <span class="identifier">user_allocator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="special">*</span> <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">*</span> <span class="identifier">const_pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">const_reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">pool</span><span class="special">&lt;</span><span class="identifier">UserAllocator</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">pool</span><span class="special">&lt;</span><span class="identifier">UserAllocator</span><span class="special">&gt;::</span><span class="identifier">difference_type</span> <span class="identifier">difference_type</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">rebind</span>
+ <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">fast_pool_allocator</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">&gt;</span> <span class="identifier">other</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">fast_pool_allocator</span><span class="special">();</span>
+ <span class="identifier">fast_pool_allocator</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">fast_pool_allocator</span> <span class="special">&amp;);</span>
+ <span class="comment">// The following is not explicit, mimicking std::allocator [20.4.1]</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">&gt;</span>
+ <span class="identifier">fast_pool_allocator</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">fast_pool_allocator</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">&gt;</span> <span class="special">&amp;);</span>
+ <span class="identifier">fast_pool_allocator</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</span> <span class="identifier">fast_pool_allocator</span> <span class="special">&amp;);</span>
+ <span class="special">~</span><span class="identifier">fast_pool_allocator</span><span class="special">();</span>
+
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <span class="identifier">address</span><span class="special">(</span><span class="identifier">reference</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="identifier">const_pointer</span> <span class="identifier">address</span><span class="special">(</span><span class="identifier">const_reference</span> <span class="identifier">s</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="identifier">size_type</span> <span class="identifier">max_size</span><span class="special">();</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">construct</span><span class="special">(</span><span class="identifier">pointer</span> <span class="identifier">ptr</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">t</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">destroy</span><span class="special">(</span><span class="identifier">pointer</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">fast_pool_allocator</span> <span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">fast_pool_allocator</span> <span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <span class="identifier">allocate</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <span class="identifier">allocate</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">pointer</span><span class="special">);</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">deallocate</span><span class="special">(</span><span class="identifier">pointer</span> <span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">);</span>
+
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <span class="identifier">allocate</span><span class="special">();</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">deallocate</span><span class="special">(</span><span class="identifier">pointer</span> <span class="identifier">ptr</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Template Parameters</strong></span>
+ </p>
+<p>
+ <span class="emphasis"><em>T</em></span> The first template parameter is the type of object
+ to allocate/deallocate.
+ </p>
+<p>
+ <span class="emphasis"><em>UserAllocator</em></span> Defines the method that the underlying
+ Pool will use to allocate memory from the system. See User Allocators
+ for details.
+ </p>
+<p>
+ <span class="bold"><strong>Example:</strong></span>
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">func</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pool_allocator</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">v</span><span class="special">;</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">13</span><span class="special">);</span>
+<span class="special">}</span> <span class="comment">// Exiting the function does NOT free the system memory allocated by the pool allocator.</span>
+ <span class="comment">// You must call</span>
+ <span class="comment">// boost::singleton_pool&lt;boost::pool_allocator_tag, sizeof(int)&gt;::release_memory();</span>
+ <span class="comment">// in order to force freeing the system memory.</span>
+</pre>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="testing.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pooling.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/pool/introduction.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/pool/introduction.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,104 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Introduction</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../pool.html" title="Introduction and Overview">
+<link rel="prev" href="conventions.html" title="Documentation Naming and Formatting Conventions">
+<link rel="next" href="usage.html" title="How do I use Pool?">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="conventions.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="usage.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.pool.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a>
+</h3></div></div></div>
+<h6>
+<a name="boost_pool.pool.introduction.h0"></a>
+ <span><a name="boost_pool.pool.introduction.what_is_pool_"></a></span><a class="link" href="introduction.html#boost_pool.pool.introduction.what_is_pool_">What
+ is Pool?</a>
+ </h6>
+<p>
+ Pool allocation is a memory allocation scheme that is very fast, but limited
+ in its usage. For more information on pool allocation (also called <span class="emphasis"><em>simple
+ segregated storage</em></span>, see <a class="link" href="pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling">concepts</a>
+ concepts and <a class="link" href="pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage">Simple Segregated
+ Storage</a>).
+ </p>
+<h6>
+<a name="boost_pool.pool.introduction.h1"></a>
+ <span><a name="boost_pool.pool.introduction.why_should_i_use_pool_"></a></span><a class="link" href="introduction.html#boost_pool.pool.introduction.why_should_i_use_pool_">Why
+ should I use Pool?</a>
+ </h6>
+<p>
+ Using Pools gives you more control over how memory is used in your program.
+ For example, you could have a situation where you want to allocate a bunch
+ of small objects at one point, and then reach a point in your program where
+ none of them are needed any more. Using pool interfaces, you can choose to
+ run their destructors or just drop them off into oblivion; the pool interface
+ will guarantee that there are no system memory leaks.
+ </p>
+<h6>
+<a name="boost_pool.pool.introduction.h2"></a>
+ <span><a name="boost_pool.pool.introduction.when_should_i_use_pool_"></a></span><a class="link" href="introduction.html#boost_pool.pool.introduction.when_should_i_use_pool_">When should
+ I use Pool?</a>
+ </h6>
+<p>
+ Pools are generally used when there is a lot of allocation and deallocation
+ of small objects. Another common usage is the situation above, where many
+ objects may be dropped out of memory.
+ </p>
+<p>
+ In general, use Pools when you need a more efficient way to do unusual memory
+ control.
+ </p>
+<h6>
+<a name="boost_pool.pool.introduction.h3"></a>
+ <span><a name="boost_pool.pool.introduction.which_pool_allocator_should_i_use_"></a></span><a class="link" href="introduction.html#boost_pool.pool.introduction.which_pool_allocator_should_i_use_">Which
+ pool allocator should I use?</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="identifier">pool_allocator</span></code> is a more
+ general-purpose solution, geared towards efficiently servicing requests for
+ any number of contiguous chunks.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">fast_pool_allocator</span></code> is also
+ a general-purpose solution but is geared towards efficiently servicing requests
+ for one chunk at a time; it will work for contiguous chunks, but not as well
+ as pool_allocator.
+ </p>
+<p>
+ If you are seriously concerned about performance, use <code class="computeroutput"><span class="identifier">fast_pool_allocator</span></code>
+ when dealing with containers such as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span></code>,
+ and use <code class="computeroutput"><span class="identifier">pool_allocator</span></code> when
+ dealing with containers such as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></code>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="conventions.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="usage.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/pool/pooling.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/pool/pooling.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,1350 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Pool in More Depth</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../pool.html" title="Introduction and Overview">
+<link rel="prev" href="interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one.">
+<link rel="next" href="../../boost_pool_c___reference.html" title="Boost.Pool C++ Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="interfaces.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../boost_pool_c___reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.pool.pooling"></a><a class="link" href="pooling.html" title="Pool in More Depth">Pool in More Depth</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="pooling.html#boost_pool.pool.pooling.concepts">Basic ideas behind
+ pooling</a></span></dt>
+<dt><span class="section">Simple Segregated Storage</span></dt>
+<dt><span class="section"><a href="pooling.html#boost_pool.pool.pooling.alignment">Guaranteeing Alignment
+ - How we guarantee alignment portably.</a></span></dt>
+<dd><dl><dt><span class="section"><a href="pooling.html#boost_pool.pool.pooling.alignment.chunks">How Contiguous
+ Chunks are Handled</a></span></dt></dl></dd>
+<dt><span class="section"><a href="pooling.html#boost_pool.pool.pooling.simple_segregated">Simple Segregated
+ Storage (Not for the faint of heart - Embedded programmers only!)</a></span></dt>
+<dt><span class="section"><a href="pooling.html#boost_pool.pool.pooling.user_allocator">The UserAllocator
+ Concept</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_pool.pool.pooling.concepts"></a><a class="link" href="pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling">Basic ideas behind
+ pooling</a>
+</h4></div></div></div>
+<p>
+ <span class="emphasis"><em>Dynamic memory allocation has been a fundamental part of most
+ computer systems since roughly 1960...</em></span> <a class="link" href="../appendices/references.html#ref1">1</a>
+ </p>
+<p>
+ Everyone uses dynamic memory allocation. If you have ever called malloc
+ or new, then you have used dynamic memory allocation. Most programmers
+ have a tendency to treat the heap as a <span class="quote">&#8220;<span class="quote">magic bag"</span>&#8221;</span>:
+ we ask it for memory, and it magically creates some for us. Sometimes we
+ run into problems because the heap is not magic.
+ </p>
+<p>
+ The heap is limited. Even on large systems (i.e., not embedded) with huge
+ amounts of virtual memory available, there is a limit. Everyone is aware
+ of the physical limit, but there is a more subtle, 'virtual' limit, that
+ limit at which your program (or the entire system) slows down due to the
+ use of virtual memory. This virtual limit is much closer to your program
+ than the physical limit, especially if you are running on a multitasking
+ system. Therefore, when running on a large system, it is considered <span class="emphasis"><em>nice</em></span>
+ to make your program use as few resources as necessary, and release them
+ as soon as possible. When using an embedded system, programmers usually
+ have no memory to waste.
+ </p>
+<p>
+ The heap is complicated. It has to satisfy any type of memory request,
+ for any size, and do it fast. The common approaches to memory management
+ have to do with splitting the memory up into portions, and keeping them
+ ordered by size in some sort of a tree or list structure. Add in other
+ factors, such as locality and estimating lifetime, and heaps quickly become
+ very complicated. So complicated, in fact, that there is no known <span class="emphasis"><em>perfect</em></span>
+ answer to the problem of how to do dynamic memory allocation. The diagrams
+ below illustrate how most common memory managers work: for each chunk of
+ memory, it uses part of that memory to maintain its internal tree or list
+ structure. Even when a chunk is malloc'ed out to a program, the memory
+ manager must <span class="emphasis"><em>save</em></span> some information in it - usually
+ just its size. Then, when the block is free'd, the memory manager can easily
+ tell how large it is.
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../images/../../../images/pc1.png" align="middle"></span>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../images/../../../images/pc2.png" align="middle"></span>
+ </p>
+<h6>
+<a name="boost_pool.pool.pooling.concepts.h0"></a>
+ <span><a name="boost_pool.pool.pooling.concepts.dynamic_memory_allocation_is_often_inefficient"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.concepts.dynamic_memory_allocation_is_often_inefficient">Dynamic
+ memory allocation is often inefficient</a>
+ </h6>
+<p>
+ Because of the complication of dynamic memory allocation, it is often inefficient
+ in terms of time and/or space. Most memory allocation algorithms store
+ some form of information with each memory block, either the block size
+ or some relational information, such as its position in the internal tree
+ or list structure. It is common for such <span class="emphasis"><em>header fields</em></span>
+ to take up one machine word in a block that is being used by the program.
+ The obvious disadvantage, then, is when small objects are dynamically allocated.
+ For example, if ints were dynamically allocated, then automatically the
+ algorithm will reserve space for the header fields as well, and we end
+ up with a 50% waste of memory. Of course, this is a worst-case scenario.
+ However, more modern programs are making use of small objects on the heap;
+ and that is making this problem more and more apparent. Wilson et. al.
+ state that an average-case memory overhead is about ten to twenty percent2. This memory overhead will grow higher as more programs
+ use more smaller objects. It is this memory overhead that brings programs
+ closer to the virtual limit.
+ </p>
+<p>
+ In larger systems, the memory overhead is not as big of a problem (compared
+ to the amount of time it would take to work around it), and thus is often
+ ignored. However, there are situations where many allocations and/or deallocations
+ of smaller objects are taking place as part of a time-critical algorithm,
+ and in these situations, the system-supplied memory allocator is often
+ too slow.
+ </p>
+<p>
+ Simple segregated storage addresses both of these issues. Almost all memory
+ overhead is done away with, and all allocations can take place in a small
+ amount of (amortized) constant time. However, this is done at the loss
+ of generality; simple segregated storage only can allocate memory chunks
+ of a single size.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_pool.pool.pooling.simple"></a><a class="link" href="pooling.html#boost_pool.pool.pooling.simple" title="Simple Segregated Storage">Simple Segregated Storage</a>
+</h4></div></div></div>
+<p>
+ Simple Segregated Storage is the basic idea behind the Boost Pool library.
+ Simple Segregated Storage is the simplest, and probably the fastest, memory
+ allocation/deallocation algorithm. It begins by partitioning a memory block
+ into fixed-size chunks. Where the block comes from is not important until
+ implementation time. A Pool is some object that uses Simple Segregated
+ Storage in this fashion. To illustrate:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../images/../../../images/pc3.png" align="middle"></span>
+ </p>
+<p>
+ Each of the chunks in any given block are always the same size. This is
+ the fundamental restriction of Simple Segregated Storage: you cannot ask
+ for chunks of different sizes. For example, you cannot ask a Pool of integers
+ for a character, or a Pool of characters for an integer (assuming that
+ characters and integers are different sizes).
+ </p>
+<p>
+ Simple Segregated Storage works by interleaving a free list within the
+ unused chunks. For example:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../images/../../../images/pc4.png" align="middle"></span>
+ </p>
+<p>
+ By interleaving the free list inside the chunks, each Simple Segregated
+ Storage only has the overhead of a single pointer (the pointer to the first
+ element in the list). It has no memory overhead for chunks that are in
+ use by the process.
+ </p>
+<p>
+ Simple Segregated Storage is also extremely fast. In the simplest case,
+ memory allocation is merely removing the first chunk from the free list,
+ a O(1) operation. In the case where the free list is empty, another block
+ may have to be acquired and partitioned, which would result in an amortized
+ O(1) time. Memory deallocation may be as simple as adding that chunk to
+ the front of the free list, a O(1) operation. However, more complicated
+ uses of Simple Segregated Storage may require a sorted free list, which
+ makes deallocation O(N).
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../images/../../../images/pc5.png" align="middle"></span>
+ </p>
+<p>
+ Simple Segregated Storage gives faster execution and less memory overhead
+ than a system-supplied allocator, but at the loss of generality. A good
+ place to use a Pool is in situations where many (noncontiguous) small objects
+ may be allocated on the heap, or if allocation and deallocation of the
+ same-sized objects happens repeatedly.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_pool.pool.pooling.alignment"></a><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably.">Guaranteeing Alignment
+ - How we guarantee alignment portably.</a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="pooling.html#boost_pool.pool.pooling.alignment.chunks">How Contiguous
+ Chunks are Handled</a></span></dt></dl></div>
+<h5>
+<a name="boost_pool.pool.pooling.alignment.h0"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.terminology"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.terminology">Terminology</a>
+ </h5>
+<p>
+ Review the <a class="link" href="pooling.html#boost_pool.pool.pooling.concepts" title="Basic ideas behind pooling">concepts</a>
+ section if you are not already familiar with it. Remember that block is
+ a contiguous section of memory, which is partitioned or segregated into
+ fixed-size chunks. These chunks are what are allocated and deallocated
+ by the user.
+ </p>
+<h5>
+<a name="boost_pool.pool.pooling.alignment.h1"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.overview"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.overview">Overview</a>
+ </h5>
+<p>
+ Each Pool has a single free list that can extend over a number of memory
+ blocks. Thus, Pool also has a linked list of allocated memory blocks. Each
+ memory block, by default, is allocated using <code class="computeroutput"><span class="keyword">new</span><span class="special">[]</span></code>, and all memory blocks are freed on destruction.
+ It is the use of <code class="computeroutput"><span class="keyword">new</span><span class="special">[]</span></code>
+ that allows us to guarantee alignment.
+ </p>
+<h5>
+<a name="boost_pool.pool.pooling.alignment.h2"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.proof_of_concept__guaranteeing_alignment"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.proof_of_concept__guaranteeing_alignment">Proof
+ of Concept: Guaranteeing Alignment</a>
+ </h5>
+<p>
+ Each block of memory is allocated as a POD type (specifically, an array
+ of characters) through <code class="computeroutput"><span class="keyword">operator</span>
+ <span class="keyword">new</span><span class="special">[]</span></code>.
+ Let <code class="computeroutput"><span class="identifier">POD_size</span></code> be the number
+ of characters allocated.
+ </p>
+<h6>
+<a name="boost_pool.pool.pooling.alignment.h3"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.predicate_1__arrays_may_not_have_padding"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.predicate_1__arrays_may_not_have_padding">Predicate
+ 1: Arrays may not have padding</a>
+ </h6>
+<p>
+ This follows from the following quote:
+ </p>
+<p>
+ [5.3.3/2] (Expressions::Unary expressions::Sizeof) <span class="emphasis"><em>... When applied
+ to an array, the result is the total number of bytes in the array. This
+ implies that the size of an array of n elements is n times the size of
+ an element.</em></span>
+ </p>
+<p>
+ Therefore, arrays cannot contain padding, though the elements within the
+ arrays may contain padding.
+ </p>
+<h6>
+<a name="boost_pool.pool.pooling.alignment.h4"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.predicate_2__any_block_of_memory_allocated_as_an_array_of_characters_through__code__phrase_role__keyword__operator__phrase___phrase_role__keyword__new__phrase__phrase_role__special______phrase___code___hereafter_referred_to_as_the_block__is_properly_aligned_for_any_object_of_that_size_or_smaller"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.predicate_2__any_block_of_memory_allocated_as_an_array_of_characters_through__code__phrase_role__keyword__operator__phrase___phrase_role__keyword__new__phrase__phrase_role__special______phrase___code___hereafter_referred_to_as_the_block__is_properly_aligned_for_any_object_of_that_size_or_smaller">Predicate
+ 2: Any block of memory allocated as an array of characters through <code class="computeroutput"><span class="keyword">operator</span> <span class="keyword">new</span><span class="special">[]</span></code> (hereafter referred to as the block)
+ is properly aligned for any object of that size or smaller</a>
+ </h6>
+<p>
+ This follows from:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ [3.7.3.1/2] (Basic concepts::Storage duration::Dynamic storage duration::Allocation
+ functions) <span class="emphasis"><em>"... The pointer returned shall be suitably
+ aligned so that it can be converted to a pointer of any complete object
+ type and then used to access the object or array in the storage allocated
+ ..."</em></span>
+ </li>
+<li class="listitem">
+ [5.3.4/10] (Expressions::Unary expressions::New) <span class="emphasis"><em>"...
+ For arrays of char and unsigned char, the difference between the result
+ of the new-expression and the address returned by the allocation function
+ shall be an integral multiple of the most stringent alignment requirement
+ (3.9) of any object type whose size is no greater than the size of
+ the array being created. [Note: Because allocation functions are assumed
+ to return pointers to storage that is appropriately aligned for objects
+ of any type, this constraint on array allocation overhead permits the
+ common idiom of allocating character arrays into which objects of other
+ types will later be placed."</em></span>
+ </li>
+</ul></div>
+<h6>
+<a name="boost_pool.pool.pooling.alignment.h5"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.consider__imaginary_object_type_element_of_a_size_which_is_a_multiple_of_some_actual_object_size__assume__code__phrase_role__keyword__sizeof__phrase__phrase_role__special_____phrase__phrase_role__identifier__element__phrase__phrase_role__special_____phrase___phrase_role__special___gt___phrase___phrase_role__identifier__pod_size__phrase___code_"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.consider__imaginary_object_type_element_of_a_size_which_is_a_multiple_of_some_actual_object_size__assume__code__phrase_role__keyword__sizeof__phrase__phrase_role__special_____phrase__phrase_role__identifier__element__phrase__phrase_role__special_____phrase___phrase_role__special___gt___phrase___phrase_role__identifier__pod_size__phrase___code_">Consider:
+ imaginary object type Element of a size which is a multiple of some actual
+ object size; assume <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">Element</span><span class="special">)</span> <span class="special">&gt;</span> <span class="identifier">POD_size</span></code></a>
+ </h6>
+<p>
+ Note that an object of that size can exist. One object of that size is
+ an array of the "actual" objects.
+ </p>
+<p>
+ Note that the block is properly aligned for an Element. This directly follows
+ from Predicate 2.
+ </p>
+<h6>
+<a name="boost_pool.pool.pooling.alignment.h6"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.corollary_1__the_block_is_properly_aligned_for_an_array_of_elements"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.corollary_1__the_block_is_properly_aligned_for_an_array_of_elements">Corollary
+ 1: The block is properly aligned for an array of Elements</a>
+ </h6>
+<p>
+ This follows from Predicates 1 and 2, and the following quote:
+ </p>
+<p>
+ [3.9/9] (Basic concepts::Types) <span class="emphasis"><em>"An object type is a (possibly
+ cv-qualified) type that is not a function type, not a reference type, and
+ not a void type."</em></span>
+ </p>
+<p>
+ (Specifically, array types are object types.)
+ </p>
+<h6>
+<a name="boost_pool.pool.pooling.alignment.h7"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.corollary_2__for_any_pointer__code__phrase_role__identifier__p__phrase___code__and_integer__code__phrase_role__identifier__i__phrase___code___if__code__phrase_role__identifier__p__phrase___code__is_properly_aligned_for_the_type_it_points_to__then__code__phrase_role__identifier__p__phrase___phrase_role__special_____phrase___phrase_role__identifier__i__phrase___code___when_well_defined__is_properly_aligned_for_that_type__in_other_words__if_an_array_is_properly_aligned__then_each_element_in_that_array_is_properly_aligned"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.corollary_2__for_any_pointer__code__phrase_role__identifier__p__phrase___code__and_integer__code__phrase_role__identifier__i__phrase___code___if__code__phrase_role__identifier__p__phrase___code__is_properly_aligned_for_the_type_it_points_to__then__code__phrase_role__identifier__p__phrase___phrase_role__special_____phrase___phrase_role__identifier__i__phras
e___code___when_well_defined__is_properly_aligned_for_that_type__in_other_words__if_an_array_is_properly_aligned__then_each_element_in_that_array_is_properly_aligned">Corollary
+ 2: For any pointer <code class="computeroutput"><span class="identifier">p</span></code> and
+ integer <code class="computeroutput"><span class="identifier">i</span></code>, if <code class="computeroutput"><span class="identifier">p</span></code> is properly aligned for the type it
+ points to, then <code class="computeroutput"><span class="identifier">p</span> <span class="special">+</span>
+ <span class="identifier">i</span></code> (when well-defined) is properly
+ aligned for that type; in other words, if an array is properly aligned,
+ then each element in that array is properly aligned</a>
+ </h6>
+<p>
+ There are no quotes from the Standard to directly support this argument,
+ but it fits the common conception of the meaning of "alignment".
+ </p>
+<p>
+ Note that the conditions for <code class="computeroutput"><span class="identifier">p</span>
+ <span class="special">+</span> <span class="identifier">i</span></code>
+ being well-defined are outlined in [5.7/5]. We do not quote that here,
+ but only make note that it is well-defined if <code class="computeroutput"><span class="identifier">p</span></code>
+ and <code class="computeroutput"><span class="identifier">p</span> <span class="special">+</span>
+ <span class="identifier">i</span></code> both point into or one past
+ the same array.
+ </p>
+<h6>
+<a name="boost_pool.pool.pooling.alignment.h8"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.let___code__phrase_role__keyword__sizeof__phrase__phrase_role__special_____phrase__phrase_role__identifier__element__phrase__phrase_role__special_____phrase___code__be_the_least_common_multiple_of_sizes_of_several_actual_objects__t1__t2__t3______"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.let___code__phrase_role__keyword__sizeof__phrase__phrase_role__special_____phrase__phrase_role__identifier__element__phrase__phrase_role__special_____phrase___code__be_the_least_common_multiple_of_sizes_of_several_actual_objects__t1__t2__t3______">Let:
+ <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">Element</span><span class="special">)</span></code>
+ be the least common multiple of sizes of several actual objects (T1, T2,
+ T3, ...)</a>
+ </h6>
+<h6>
+<a name="boost_pool.pool.pooling.alignment.h9"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.let__block_be_a_pointer_to_the_memory_block__pe_be__element____block__and_pn_be__tn____block"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.let__block_be_a_pointer_to_the_memory_block__pe_be__element____block__and_pn_be__tn____block">Let:
+ block be a pointer to the memory block, pe be (Element *) block, and pn
+ be (Tn *) block</a>
+ </h6>
+<h6>
+<a name="boost_pool.pool.pooling.alignment.h10"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.corollary_3__for_each_integer__code__phrase_role__identifier__i__phrase___code___such_that__code__phrase_role__identifier__pe__phrase___phrase_role__special_____phrase___phrase_role__identifier__i__phrase___code__is_well_defined__then_for_each_n__there_exists_some_integer__code__phrase_role__identifier__jn__phrase___code__such_that__code__phrase_role__identifier__pn__phrase___phrase_role__special_____phrase___phrase_role__identifier__jn__phrase___code__is_well_defined_and_refers_to_the_same_memory_address_as__code__phrase_role__identifier__pe__phrase___phrase_role__special_____phrase___phrase_role__identifier__i__phrase___code_"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.corollary_3__for_each_integer__code__phrase_role__identifier__i__phrase___code___such_that__code__phrase_role__identifier__pe__phrase___phrase_role__special_____phrase___phrase_role__identifier__i__phrase___code__is_well_defined__then_for_each_n_
_there_exists_some_integer__code__phrase_role__identifier__jn__phrase___code__such_that__code__phrase_role__identifier__pn__phrase___phrase_role__special_____phrase___phrase_role__identifier__jn__phrase___code__is_well_defined_and_refers_to_the_same_memory_address_as__code__phrase_role__identifier__pe__phrase___phrase_role__special_____phrase___phrase_role__identifier__i__phrase___code_">Corollary
+ 3: For each integer <code class="computeroutput"><span class="identifier">i</span></code>,
+ such that <code class="computeroutput"><span class="identifier">pe</span> <span class="special">+</span>
+ <span class="identifier">i</span></code> is well-defined, then for each
+ n, there exists some integer <code class="computeroutput"><span class="identifier">jn</span></code>
+ such that <code class="computeroutput"><span class="identifier">pn</span> <span class="special">+</span>
+ <span class="identifier">jn</span></code> is well-defined and refers
+ to the same memory address as <code class="computeroutput"><span class="identifier">pe</span>
+ <span class="special">+</span> <span class="identifier">i</span></code></a>
+ </h6>
+<p>
+ This follows naturally, since the memory block is an array of Elements,
+ and for each n, <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">Element</span><span class="special">)</span> <span class="special">%</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">Tn</span><span class="special">)</span>
+ <span class="special">==</span> <span class="number">0</span><span class="special">;</span></code> thus, the boundary of each element in
+ the array of Elements is also a boundary of each element in each array
+ of Tn.
+ </p>
+<h6>
+<a name="boost_pool.pool.pooling.alignment.h11"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.theorem__for_each_integer__code__phrase_role__identifier__i__phrase___code___such_that__code__phrase_role__identifier__pe__phrase___phrase_role__special_____phrase___phrase_role__identifier__i__phrase___code__is_well_defined__that_address__pe___i__is_properly_aligned_for_each_type_tn"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.theorem__for_each_integer__code__phrase_role__identifier__i__phrase___code___such_that__code__phrase_role__identifier__pe__phrase___phrase_role__special_____phrase___phrase_role__identifier__i__phrase___code__is_well_defined__that_address__pe___i__is_properly_aligned_for_each_type_tn">Theorem:
+ For each integer <code class="computeroutput"><span class="identifier">i</span></code>, such
+ that <code class="computeroutput"><span class="identifier">pe</span> <span class="special">+</span>
+ <span class="identifier">i</span></code> is well-defined, that address
+ (pe + i) is properly aligned for each type Tn</a>
+ </h6>
+<p>
+ Since <code class="computeroutput"><span class="identifier">pe</span> <span class="special">+</span>
+ <span class="identifier">i</span></code> is well-defined, then by Corollary
+ 3, <code class="computeroutput"><span class="identifier">pn</span> <span class="special">+</span>
+ <span class="identifier">jn</span></code> is well-defined. It is properly
+ aligned from Predicate 2 and Corollaries 1 and 2.
+ </p>
+<h5>
+<a name="boost_pool.pool.pooling.alignment.h12"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.use_of_the_theorem"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.use_of_the_theorem">Use of the
+ Theorem</a>
+ </h5>
+<p>
+ The proof above covers alignment requirements for cutting chunks out of
+ a block. The implementation uses actual object sizes of:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ The requested object size (<code class="computeroutput"><span class="identifier">requested_size</span></code>);
+ this is the size of chunks requested by the user
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="keyword">void</span><span class="special">*</span></code>
+ (pointer to void); this is because we interleave our free list through
+ the chunks
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">size_type</span></code>; this is
+ because we store the size of the next block within each memory block
+ </li>
+</ul></div>
+<p>
+ Each block also contains a pointer to the next block; but that is stored
+ as a pointer to void and cast when necessary, to simplify alignment requirements
+ to the three types above.
+ </p>
+<p>
+ Therefore, <code class="computeroutput"><span class="identifier">alloc_size</span></code> is
+ defined to be the largest of the sizes above, rounded up to be a multiple
+ of all three sizes. This guarantees alignment provided all alignments are
+ powers of two: something that appears to be true on all known platforms.
+ </p>
+<h5>
+<a name="boost_pool.pool.pooling.alignment.h13"></a>
+ <span><a name="boost_pool.pool.pooling.alignment.a_look_at_the_memory_block"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.a_look_at_the_memory_block">A
+ Look at the Memory Block</a>
+ </h5>
+<p>
+ Each memory block consists of three main sections. The first section is
+ the part that chunks are cut out of, and contains the interleaved free
+ list. The second section is the pointer to the next block, and the third
+ section is the size of the next block.
+ </p>
+<p>
+ Each of these sections may contain padding as necessary to guarantee alignment
+ for each of the next sections. The size of the first section is <code class="computeroutput"><span class="identifier">number_of_chunks</span> <span class="special">*</span>
+ <span class="identifier">lcm</span><span class="special">(</span><span class="identifier">requested_size</span><span class="special">,</span>
+ <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*),</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">size_type</span><span class="special">));</span></code>
+ the size of the second section is <code class="computeroutput"><span class="identifier">lcm</span><span class="special">(</span><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*),</span>
+ <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">size_type</span><span class="special">);</span></code>
+ and the size of the third section is <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span></code>.
+ </p>
+<p>
+ Here's an example memory block, where <code class="computeroutput"><span class="identifier">requested_size</span>
+ <span class="special">==</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*)</span>
+ <span class="special">==</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="special">==</span> <span class="number">4</span></code>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../images/../../../images/mb1.png" align="middle"></span>
+ </p>
+<p>
+ To show a visual example of possible padding, here's an example memory
+ block where <code class="computeroutput"><span class="identifier">requested_size</span> <span class="special">==</span> <span class="number">8</span> <span class="keyword">and</span>
+ <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*)</span> <span class="special">==</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="special">==</span> <span class="number">4</span></code>
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../images/../../../images/mb2.png" align="middle"></span>
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_pool.pool.pooling.alignment.chunks"></a><a class="link" href="pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled">How Contiguous
+ Chunks are Handled</a>
+</h5></div></div></div>
+<p>
+ The theorem above guarantees all alignment requirements for allocating
+ chunks and also implementation details such as the interleaved free list.
+ However, it does so by adding padding when necessary; therefore, we have
+ to treat allocations of contiguous chunks in a different way.
+ </p>
+<p>
+ Using array arguments similar to the above, we can translate any request
+ for contiguous memory for <code class="computeroutput"><span class="identifier">n</span></code>
+ objects of <code class="computeroutput"><span class="identifier">requested_size</span></code>
+ into a request for m contiguous chunks. <code class="computeroutput"><span class="identifier">m</span></code>
+ is simply <code class="computeroutput"><span class="identifier">ceil</span><span class="special">(</span><span class="identifier">n</span> <span class="special">*</span> <span class="identifier">requested_size</span> <span class="special">/</span>
+ <span class="identifier">alloc_size</span><span class="special">)</span></code>,
+ where <code class="computeroutput"><span class="identifier">alloc_size</span></code> is the
+ actual size of the chunks.
+ </p>
+<p>
+ To illustrate:
+ </p>
+<p>
+ Here's an example memory block, where <code class="computeroutput"><span class="identifier">requested_size</span>
+ <span class="special">==</span> <span class="number">1</span></code>
+ and <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*)</span> <span class="special">==</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="special">==</span> <span class="number">4</span></code>:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../images/../../../images/mb4.png" align="middle"></span>
+ </p>
+<p>
+ Then, when the user deallocates the contiguous memory, we can split it
+ up into chunks again.
+ </p>
+<p>
+ Note that the implementation provided for allocating contiguous chunks
+ uses a linear instead of quadratic algorithm. This means that it may
+ not find contiguous free chunks if the free list is not ordered. Thus,
+ it is recommended to always use an ordered free list when dealing with
+ contiguous allocation of chunks. (In the example above, if Chunk 1 pointed
+ to Chunk 3 pointed to Chunk 2 pointed to Chunk 4, instead of being in
+ order, the contiguous allocation algorithm would have failed to find
+ any of the contiguous chunks).
+ </p>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_pool.pool.pooling.simple_segregated"></a><a class="link" href="pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)">Simple Segregated
+ Storage (Not for the faint of heart - Embedded programmers only!)</a>
+</h4></div></div></div>
+<h5>
+<a name="boost_pool.pool.pooling.simple_segregated.h0"></a>
+ <span><a name="boost_pool.pool.pooling.simple_segregated.introduction"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.simple_segregated.introduction">Introduction</a>
+ </h5>
+<p>
+ <code class="computeroutput"><a class="link" href="../../header/boost/pool/simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;">simple_segregated_storage.hpp</a></code>
+ provides a template class simple_segregated_storage that controls access
+ to a free list of memory chunks.
+ </p>
+<p>
+ Note that this is a very simple class, with unchecked preconditions on
+ almost all its functions. It is intended to be the fastest and smallest
+ possible quick memory allocator for example, something to use in embedded
+ systems. This class delegates many difficult preconditions to the user
+ (especially alignment issues). For more general usage, see the other <a class="link" href="interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one.">Pool Interfaces</a>.
+ </p>
+<h5>
+<a name="boost_pool.pool.pooling.simple_segregated.h1"></a>
+ <span><a name="boost_pool.pool.pooling.simple_segregated.synopsis"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.simple_segregated.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting">template &lt;typename SizeType = std::size_t&gt;
+class simple_segregated_storage
+{
+ private:
+ simple_segregated_storage(const simple_segregated_storage &amp;);
+ void operator=(const simple_segregated_storage &amp;);
+
+ public:
+ typedef SizeType size_type;
+
+ simple_segregated_storage();
+ ~simple_segregated_storage();
+
+ static void * segregate(void * block,
+ size_type nsz, size_type npartition_sz,
+ void * end = 0);
+ void add_block(void * block,
+ size_type nsz, size_type npartition_sz);
+ void add_ordered_block(void * block,
+ size_type nsz, size_type npartition_sz);
+
+ bool empty() const;
+
+ void * malloc();
+ void free(void * chunk);
+ void ordered_free(void * chunk);
+ void * malloc_n(size_type n, size_type partition_sz);
+ void free_n(void * chunks, size_type n,
+ size_type partition_sz);
+ void ordered_free_n(void * chunks, size_type n,
+ size_type partition_sz);
+};
+</pre>
+<h5>
+<a name="boost_pool.pool.pooling.simple_segregated.h2"></a>
+ <span><a name="boost_pool.pool.pooling.simple_segregated.semantics"></a></span><a class="link" href="pooling.html#boost_pool.pool.pooling.simple_segregated.semantics">Semantics</a>
+ </h5>
+<p>
+ An object of type <code class="computeroutput"><span class="identifier">simple_segregated_storage</span><span class="special">&lt;</span><span class="identifier">SizeType</span><span class="special">&gt;</span></code> is empty if its free list is empty.
+ If it is not empty, then it is ordered if its free list is ordered. A free
+ list is ordered if repeated calls to<code class="computeroutput"> <span class="identifier">malloc</span><span class="special">()</span></code> will result in a constantly-increasing
+ sequence of values, as determined by <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">&lt;</span><span class="keyword">void</span> <span class="special">*&gt;</span></code>. A member function is order-preserving
+ if the free-list maintains its order orientation (that is, an ordered free
+ list is still ordered after the member function call).
+ </p>
+<div class="table">
+<a name="boost_pool.pool.pooling.simple_segregated.ss_symbols"></a><p class="title"><b>Table&#160;1.&#160;Symbol Table</b></p>
+<div class="table-contents"><table class="table" summary="Symbol Table" cellspacing="3" cellpadding="5">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Symbol
+ </p>
+ </th>
+<th>
+ <p>
+ Meaning
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Store
+ </p>
+ </td>
+<td>
+ <p>
+ simple_segregated_storage&lt;SizeType&gt;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ t
+ </p>
+ </td>
+<td>
+ <p>
+ value of type Store
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ u
+ </p>
+ </td>
+<td>
+ <p>
+ value of type const Store
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ block, chunk, end
+ </p>
+ </td>
+<td>
+ <p>
+ values of type void *
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ partition_sz, sz, n
+ </p>
+ </td>
+<td>
+ <p>
+ values of type Store::size_type
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="boost_pool.pool.pooling.simple_segregated.templates"></a><p class="title"><b>Table&#160;2.&#160;Template Parameters</b></p>
+<div class="table-contents"><table class="table" summary="Template Parameters" cellspacing="3" cellpadding="5">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ SizeType
+ </p>
+ </td>
+<td>
+ <p>
+ std::size_t
+ </p>
+ </td>
+<td>
+ <p>
+ An unsigned integral type
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="boost_pool.pool.pooling.simple_segregated.Typedefs"></a><p class="title"><b>Table&#160;3.&#160;Typedefs</b></p>
+<div class="table-contents"><table class="table" summary="Typedefs" cellspacing="3" cellpadding="5">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Symbol
+ </p>
+ </th>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ size_type
+ </p>
+ </td>
+<td>
+ <p>
+ SizeType
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="boost_pool.pool.pooling.simple_segregated.Constructors"></a><p class="title"><b>Table&#160;4.&#160;Constructors, Destructors, and State</b></p>
+<div class="table-contents"><table class="table" summary="Constructors, Destructors, and State" cellspacing="3" cellpadding="5">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Post-Condition
+ </p>
+ </th>
+<th>
+ <p>
+ Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Store()
+ </p>
+ </td>
+<td>
+ <p>
+ not used
+ </p>
+ </td>
+<td>
+ <p>
+ empty()
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a new Store
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ (&amp;t)-&gt;~Store()
+ </p>
+ </td>
+<td>
+ <p>
+ not used
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Destructs the Store
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ u.empty()
+ </p>
+ </td>
+<td>
+ <p>
+ bool
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Returns true if u is empty. Order-preserving.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="boost_pool.pool.pooling.simple_segregated.Segregation"></a><p class="title"><b>Table&#160;5.&#160;Segregation</b></p>
+<div class="table-contents"><table class="table" summary="Segregation" cellspacing="3" cellpadding="5">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Pre-Condition
+ </p>
+ </th>
+<th>
+ <p>
+ Post-Condition
+ </p>
+ </th>
+<th>
+ <p>
+ Semantic Equivalence
+ </p>
+ </th>
+<th>
+ <p>
+ Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Store::segregate(block, sz, partition_sz, end)
+ </p>
+ </td>
+<td>
+ <p>
+ void *
+ </p>
+ </td>
+<td>
+ <p>
+ partition_sz &gt;= sizeof(void *) partition_sz = sizeof(void
+ *) * i, for some integer i sz &gt;= partition_sz block is properly
+ aligned for an array of objects of size partition_sz block is
+ properly aligned for an array of void *
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Interleaves a free list through the memory block specified by
+ block of size sz bytes, partitioning it into as many partition_sz-sized
+ chunks as possible. The last chunk is set to point to end, and
+ a pointer to the first chunck is returned (this is always equal
+ to block). This interleaved free list is ordered. O(sz).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Store::segregate(block, sz, partition_sz)
+ </p>
+ </td>
+<td>
+ <p>
+ void *
+ </p>
+ </td>
+<td>
+ <p>
+ Same as above
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Store::segregate(block, sz, partition_sz, 0)
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ t.add_block(block, sz, partition_sz)
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ Same as above
+ </p>
+ </td>
+<td>
+ <p>
+ !t.empty()
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Segregates the memory block specified by block of size sz bytes
+ into partition_sz-sized chunks, and adds that free list to its
+ own. If t was empty before this call, then it is ordered after
+ this call. O(sz).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ t.add_ordered_block(block, sz, partition_sz)
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ Same as above
+ </p>
+ </td>
+<td>
+ <p>
+ !t.empty()
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Segregates the memory block specified by block of size sz bytes
+ into partition_sz-sized chunks, and merges that free list into
+ its own. Order-preserving. O(sz).
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="boost_pool.pool.pooling.simple_segregated.alloc"></a><p class="title"><b>Table&#160;6.&#160;Allocation and Deallocation</b></p>
+<div class="table-contents"><table class="table" summary="Allocation and Deallocation" cellspacing="3" cellpadding="5">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Pre-Condition
+ </p>
+ </th>
+<th>
+ <p>
+ Post-Condition
+ </p>
+ </th>
+<th>
+ <p>
+ Semantic Equivalence
+ </p>
+ </th>
+<th>
+ <p>
+ Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ t.malloc()
+ </p>
+ </td>
+<td>
+ <p>
+ void *
+ </p>
+ </td>
+<td>
+ <p>
+ !t.empty()
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Takes the first available chunk from the free list and returns
+ it. Order-preserving. O(1).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ t.free(chunk)
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ chunk was previously returned from a call to t.malloc()
+ </p>
+ </td>
+<td>
+ <p>
+ !t.empty()
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Places chunk back on the free list. Note that chunk may not be
+ 0. O(1).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ t.ordered_free(chunk)
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ Same as above
+ </p>
+ </td>
+<td>
+ <p>
+ !t.empty()
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Places chunk back on the free list. Note that chunk may not be
+ 0. Order-preserving. O(N) with respect to the size of the free
+ list.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ t.malloc_n(n, partition_sz)
+ </p>
+ </td>
+<td>
+ <p>
+ void *
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Attempts to find a contiguous sequence of n partition_sz-sized
+ chunks. If found, removes them all from the free list and returns
+ a pointer to the first. If not found, returns 0. It is strongly
+ recommended (but not required) that the free list be ordered,
+ as this algorithm will fail to find a contiguous sequence unless
+ it is contiguous in the free list as well. Order-preserving.
+ O(N) with respect to the size of the free list.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ t.free_n(chunk, n, partition_sz)
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ chunk was previously returned from a call to t.malloc_n(n, partition_sz)
+ </p>
+ </td>
+<td>
+ <p>
+ !t.empty()
+ </p>
+ </td>
+<td>
+ <p>
+ t.add_block(chunk, n * partition_sz, partition_sz)
+ </p>
+ </td>
+<td>
+ <p>
+ Assumes that chunk actually refers to a block of chunks spanning
+ n * partition_sz bytes; segregates and adds in that block. Note
+ that chunk may not be 0. O(n).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ t.ordered_free_n(chunk, n, partition_sz)
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ same as above
+ </p>
+ </td>
+<td>
+ <p>
+ same as above
+ </p>
+ </td>
+<td>
+ <p>
+ t.add_ordered_block(chunk, n * partition_sz, partition_sz)
+ </p>
+ </td>
+<td>
+ <p>
+ Same as above, except it merges in the free list. Order-preserving.
+ O(N + n) where N is the size of the free list.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_pool.pool.pooling.user_allocator"></a><a class="link" href="pooling.html#boost_pool.pool.pooling.user_allocator" title="The UserAllocator Concept">The UserAllocator
+ Concept</a>
+</h4></div></div></div>
+<p>
+ Pool objects need to request memory blocks from the system, which the Pool
+ then splits into chunks to allocate to the user. By specifying a UserAllocator
+ template parameter to various Pool interfaces, users can control how those
+ system memory blocks are allocated.
+ </p>
+<p>
+ In the following table, <span class="emphasis"><em>UserAllocator</em></span> is a User Allocator
+ type, <span class="emphasis"><em>block</em></span> is a value of type char *, and <span class="emphasis"><em>n</em></span>
+ is a value of type UserAllocator::size_type
+ </p>
+<div class="table">
+<a name="boost_pool.pool.pooling.user_allocator.userallocator_requirements"></a><p class="title"><b>Table&#160;7.&#160;UserAllocator Requirements</b></p>
+<div class="table-contents"><table class="table" summary="UserAllocator Requirements" cellspacing="3" cellpadding="5">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ UserAllocator::size_type
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ An unsigned integral type that can represent the size of the
+ largest object to be allocated.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ UserAllocator::difference_type
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ A signed integral type that can represent the difference of any
+ two pointers.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ UserAllocator::malloc(n)
+ </p>
+ </td>
+<td>
+ <p>
+ char *
+ </p>
+ </td>
+<td>
+ <p>
+ Attempts to allocate n bytes from the system. Returns 0 if out-of-memory.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ UserAllocator::free(block)
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ block must have been previously returned from a call to UserAllocator::malloc.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ There are two UserAllocator classes provided in this library: <code class="computeroutput"><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete">default_user_allocator_new_delete</a></code>
+ and <code class="computeroutput"><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free">default_user_allocator_malloc_free</a></code>,
+ both in pool.hpp. The default value for the template parameter UserAllocator
+ is always <code class="computeroutput"><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete">default_user_allocator_new_delete</a></code>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="interfaces.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../boost_pool_c___reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/pool/testing.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/pool/testing.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Building the Test Programs</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../pool.html" title="Introduction and Overview">
+<link rel="prev" href="installation.html" title="Installation">
+<link rel="next" href="interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one.">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="installation.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="interfaces.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.pool.testing"></a><a class="link" href="testing.html" title="Building the Test Programs">Building the Test Programs</a>
+</h3></div></div></div>
+<p>
+ A jamfile.v2 is provided which can be run is the usual way, for example:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">\</span><span class="identifier">libs</span><span class="special">\</span><span class="identifier">pool</span><span class="special">\</span><span class="identifier">test</span><span class="special">&gt;</span> <span class="identifier">bjam</span> <span class="special">-</span><span class="identifier">a</span> <span class="special">&gt;</span><span class="identifier">pool_test</span><span class="special">.</span><span class="identifier">log</span></pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="installation.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="interfaces.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool/pool/usage.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool/pool/usage.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,73 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>How do I use Pool?</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Boost.Pool">
+<link rel="up" href="../pool.html" title="Introduction and Overview">
+<link rel="prev" href="introduction.html" title="Introduction">
+<link rel="next" href="installation.html" title="Installation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="installation.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_pool.pool.usage"></a><a class="link" href="usage.html" title="How do I use Pool?">How do I use Pool?</a>
+</h3></div></div></div>
+<p>
+ See the <a class="link" href="interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one.">Pool Interfaces</a>
+ section that covers the different Pool interfaces supplied by this library.
+ </p>
+<h6>
+<a name="boost_pool.pool.usage.h0"></a>
+ <span><a name="boost_pool.pool.usage.library_structure_and_dependencies"></a></span><a class="link" href="usage.html#boost_pool.pool.usage.library_structure_and_dependencies">Library
+ Structure and Dependencies</a>
+ </h6>
+<p>
+ Forward declarations of all the exposed symbols for this library are in the
+ header made inscope by <code class="computeroutput"><span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pool</span><span class="special">/</span><span class="identifier">poolfwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
+ </p>
+<p>
+ The library may use macros, which will be prefixed with <code class="computeroutput"><span class="identifier">BOOST_POOL_</span></code>.
+ The exception to this rule are the include file guards, which (for file
+ <code class="computeroutput"><span class="identifier">xxx</span><span class="special">.</span><span class="identifier">hpp</span></code>) is <code class="computeroutput"><span class="identifier">BOOST_xxx_HPP</span></code>.
+ </p>
+<p>
+ All exposed symbols defined by the library will be in namespace boost::.
+ All symbols used only by the implementation will be in namespace boost::details::pool.
+ </p>
+<p>
+ Every header used only by the implementation is in the subdirectory <code class="computeroutput"><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span></code>.
+ </p>
+<p>
+ Any header in the library may include any other header in the library or
+ any system-supplied header at its discretion.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="installation.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/boost_pool_c___reference.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/boost_pool_c___reference.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Boost.Pool C++ Reference</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Boost.Pool">
+<link rel="up" href="index.html" title="Boost.Pool">
+<link rel="prev" href="boost_pool/pool/pooling.html" title="Pool in More Depth">
+<link rel="next" href="header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_pool/pool/pooling.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="header/boost/pool/object_pool_hpp.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_pool_c___reference"></a>Boost.Pool C++ Reference</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Header <boost/pool/object_pool.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/pool/pool.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/pool/pool_alloc.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/pool/poolfwd.hpp></span></dt>
+<dt><span class="section">Header <boost/pool/simple_segregated_storage.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/pool/singleton_pool.hpp></span></dt>
+<dd><dl></dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_pool/pool/pooling.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="header/boost/pool/object_pool_hpp.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/header/boost/pool/object_pool_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/header/boost/pool/object_pool_hpp.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/pool/object_pool.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Boost.Pool">
+<link rel="up" href="../../../boost_pool_c___reference.html" title="Boost.Pool C++ Reference">
+<link rel="prev" href="../../../boost_pool_c___reference.html" title="Boost.Pool C++ Reference">
+<link rel="next" href="../../../boost/object_pool.html" title="Class template object_pool">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/object_pool.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.pool.object_pool_hpp"></a>Header &lt;boost/pool/object_pool.hpp&gt;</h3></div></div></div>
+<p>Provides a template type boost::object_pool&lt;T, UserAllocator&gt; that can be used for fast and efficient memory allocation of objects of type T. It also provides automatic destruction of non-deallocated objects. </p>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> UserAllocator<span class="special">&gt;</span> <span class="keyword">class</span> <a class="link" href="../../../boost/object_pool.html" title="Class template object_pool">object_pool</a><span class="special">;</span>
+<span class="special">}</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/object_pool.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/header/boost/pool/pool_alloc_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/header/boost/pool/pool_alloc_hpp.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,107 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/pool/pool_alloc.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Boost.Pool">
+<link rel="up" href="../../../boost_pool_c___reference.html" title="Boost.Pool C++ Reference">
+<link rel="prev" href="../../../boost/pool.html" title="Class template pool">
+<link rel="next" href="../../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/pool.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/pool_allocator_tag.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.pool.pool_alloc_hpp"></a>Header &lt;boost/pool/pool_alloc.hpp&gt;</h3></div></div></div>
+<p>C++ Standard Library compatible pool-based allocators. </p>
+<p>This header provides two template types - pool_allocator and fast_pool_allocator - that can be used for fast and efficient memory allocation in conjunction with the C++ Standard Library containers.</p>
+<p>These types both satisfy the Standard Allocator requirements [20.1.5] and the additional requirements in [20.1.5/4], so they can be used with either Standard or user-supplied containers.</p>
+<p>In addition, the fast_pool_allocator also provides an additional allocation and an additional deallocation function:</p>
+<div class="informaltable"><table class="table" cellspacing="3" cellpadding="5">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><span class="bold"><strong>Expression</strong></span></td>
+<td><span class="bold"><strong>Return Type</strong></span></td>
+<td><span class="bold"><strong>Semantic Equivalence</strong></span></td>
+<td><span class="bold"><strong></strong></span></td>
+</tr>
+<tr>
+<td><code class="computeroutput">PoolAlloc::allocate()</code></td>
+<td><code class="computeroutput">T *</code></td>
+<td>
+<code class="computeroutput">PoolAlloc::allocate(1)</code> </td>
+<td class="auto-generated">&#160;</td>
+</tr>
+<tr>
+<td><code class="computeroutput">PoolAlloc::deallocate(p)</code></td>
+<td>void</td>
+<td>
+<code class="computeroutput">PoolAlloc::deallocate(p, 1)</code> </td>
+<td class="auto-generated">&#160;</td>
+</tr>
+</tbody>
+</table></div>
+<p>
+</p>
+<p>The typedef user_allocator publishes the value of the UserAllocator template parameter.</p>
+<p><span class="bold"><strong>Notes</strong></span></p>
+<p>If the allocation functions run out of memory, they will throw <code class="computeroutput">std::bad_alloc</code>.</p>
+<p>The underlying Pool type used by the allocators is accessible through the Singleton Pool Interface. The identifying tag used for pool_allocator is pool_allocator_tag, and the tag used for fast_pool_allocator is fast_pool_allocator_tag. All template parameters of the allocators (including implementation-specific ones) determine the type of the underlying Pool, with the exception of the first parameter T, whose size is used instead.</p>
+<p>Since the size of T is used to determine the type of the underlying Pool, each allocator for different types of the same size will share the same underlying pool. The tag class prevents pools from being shared between pool_allocator and fast_pool_allocator. For example, on a system where <code class="computeroutput">sizeof(int) == sizeof(void *)</code>, <code class="computeroutput">pool_allocator&lt;int&gt;</code> and <code class="computeroutput">pool_allocator&lt;void *&gt;</code> will both allocate/deallocate from/to the same pool.</p>
+<p>If there is only one thread running before main() starts and after main() ends, then both allocators are completely thread-safe.</p>
+<p><span class="bold"><strong>Compiler and STL Notes</strong></span></p>
+<p>A number of common STL libraries contain bugs in their using of allocators. Specifically, they pass null pointers to the deallocate 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: Borland C++ (Builder and command-line compiler) with default (RogueWave) library, ver. 5 and earlier, STLport (with any compiler), ver. 4.0 and earlier. </p>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <a class="link" href="../../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag">pool_allocator_tag</a><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> UserAllocator<span class="special">,</span> <span class="keyword">typename</span> Mutex<span class="special">,</span>
+ <span class="keyword">unsigned</span> NextSize<span class="special">,</span> <span class="keyword">unsigned</span> MaxSize<span class="special">&gt;</span>
+ <span class="keyword">class</span> <a class="link" href="../../../boost/pool_allocator.html" title="Class template pool_allocator">pool_allocator</a><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> UserAllocator<span class="special">,</span> <span class="keyword">typename</span> Mutex<span class="special">,</span> <span class="keyword">unsigned</span> NextSize<span class="special">,</span>
+ <span class="keyword">unsigned</span> MaxSize<span class="special">&gt;</span>
+ <span class="keyword">class</span> <a class="link" href="../../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;">pool_allocator</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span><span class="special">&gt;</span><span class="special">;</span>
+
+ <span class="keyword">struct</span> <a class="link" href="../../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag">fast_pool_allocator_tag</a><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> UserAllocator<span class="special">,</span> <span class="keyword">typename</span> Mutex<span class="special">,</span>
+ <span class="keyword">unsigned</span> NextSize<span class="special">,</span> <span class="keyword">unsigned</span> MaxSize<span class="special">&gt;</span>
+ <span class="keyword">class</span> <a class="link" href="../../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator">fast_pool_allocator</a><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> UserAllocator<span class="special">,</span> <span class="keyword">typename</span> Mutex<span class="special">,</span> <span class="keyword">unsigned</span> NextSize<span class="special">,</span>
+ <span class="keyword">unsigned</span> MaxSize<span class="special">&gt;</span>
+ <span class="keyword">class</span> <a class="link" href="../../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;">fast_pool_allocator</a><span class="special">&lt;</span><span class="keyword">void</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">,</span> <span class="identifier">Mutex</span><span class="special">,</span> <span class="identifier">NextSize</span><span class="special">,</span> <span class="identifier">MaxSize</span><span class="special">&gt;</span><span class="special">;</span>
+<span class="special">}</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/pool.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/pool_allocator_tag.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/header/boost/pool/pool_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/header/boost/pool/pool_hpp.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/pool/pool.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Boost.Pool">
+<link rel="up" href="../../../boost_pool_c___reference.html" title="Boost.Pool C++ Reference">
+<link rel="prev" href="../../../boost/object_pool.html" title="Class template object_pool">
+<link rel="next" href="../../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/object_pool.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/default_user_allocator_new_delete.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.pool.pool_hpp"></a>Header &lt;boost/pool/pool.hpp&gt;</h3></div></div></div>
+<p>Provides class pool: a fast memory allocator that guarantees proper alignment of all allocated chunks, and which extends and generalizes the framework provided by the simple segregated storage solution. Also provides two UserAllocator classes which can be used in conjuction with pool. </p>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">struct</span> <a class="link" href="../../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete">default_user_allocator_new_delete</a><span class="special">;</span>
+ <span class="keyword">struct</span> <a class="link" href="../../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free">default_user_allocator_malloc_free</a><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> UserAllocator<span class="special">&gt;</span> <span class="keyword">class</span> <a class="link" href="../../../boost/pool.html" title="Class template pool">pool</a><span class="special">;</span>
+<span class="special">}</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/object_pool.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/default_user_allocator_new_delete.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/header/boost/pool/poolfwd_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/header/boost/pool/poolfwd_hpp.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/pool/poolfwd.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Boost.Pool">
+<link rel="up" href="../../../boost_pool_c___reference.html" title="Boost.Pool C++ Reference">
+<link rel="prev" href="../../../boost/fast_pool_allocator_void__UserAllocat_id378528/rebind.html" title="Struct template rebind">
+<link rel="next" href="simple_segregated_storage_hpp.html" title="Header &lt;boost/pool/simple_segregated_storage.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/fast_pool_allocator_void__UserAllocat_id378528/rebind.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="simple_segregated_storage_hpp.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.pool.poolfwd_hpp"></a>Header &lt;boost/pool/poolfwd.hpp&gt;</h3></div></div></div>
+<p>Forward declarations of all public (non-implemention) classes. </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/fast_pool_allocator_void__UserAllocat_id378528/rebind.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="simple_segregated_storage_hpp.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/header/boost/pool/simple_segregated_storage_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/header/boost/pool/simple_segregated_storage_hpp.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/pool/simple_segregated_storage.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Boost.Pool">
+<link rel="up" href="../../../boost_pool_c___reference.html" title="Boost.Pool C++ Reference">
+<link rel="prev" href="poolfwd_hpp.html" title="Header &lt;boost/pool/poolfwd.hpp&gt;">
+<link rel="next" href="../../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="poolfwd_hpp.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/simple_segregated_storage.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.pool.simple_segregated_storage_hpp"></a>Header &lt;boost/pool/simple_segregated_storage.hpp&gt;</h3></div></div></div>
+<p>Simple Segregated Storage. </p>
+<p>A simple segregated storage implementation: simple segregated storage is the basic idea behind the Boost Pool library. Simple segregated storage is the simplest, and probably the fastest, memory allocation/deallocation algorithm. It begins by partitioning a memory block into fixed-size chunks. Where the block comes from is not important until implementation time. A Pool is some object that uses Simple Segregated Storage in this fashion. </p>
+<pre class="synopsis">
+
+<a class="link" href="../../../BOOST_POOL_VALIDATE_INTERNALS.html" title="Macro BOOST_POOL_VALIDATE_INTERNALS">BOOST_POOL_VALIDATE_INTERNALS</a></pre>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> SizeType<span class="special">&gt;</span> <span class="keyword">class</span> <a class="link" href="../../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage">simple_segregated_storage</a><span class="special">;</span>
+<span class="special">}</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="poolfwd_hpp.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/simple_segregated_storage.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/header/boost/pool/singleton_pool_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/header/boost/pool/singleton_pool_hpp.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/pool/singleton_pool.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Boost.Pool">
+<link rel="up" href="../../../boost_pool_c___reference.html" title="Boost.Pool C++ Reference">
+<link rel="prev" href="../../../BOOST_POOL_VALIDATE_INTERNALS.html" title="Macro BOOST_POOL_VALIDATE_INTERNALS">
+<link rel="next" href="../../../boost/singleton_pool.html" title="Class template singleton_pool">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../BOOST_POOL_VALIDATE_INTERNALS.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/singleton_pool.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.pool.singleton_pool_hpp"></a>Header &lt;boost/pool/singleton_pool.hpp&gt;</h3></div></div></div>
+<p>The <code class="computeroutput">singleton_pool</code> class allows other pool interfaces for types of the same size to share the same underlying pool. </p>
+<p>Header singleton_pool.hpp provides a template class <code class="computeroutput">singleton_pool</code>, which provides access to a pool as a singleton object. </p>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Tag<span class="special">,</span> <span class="keyword">unsigned</span> RequestedSize<span class="special">,</span> <span class="keyword">typename</span> UserAllocator<span class="special">,</span>
+ <span class="keyword">typename</span> Mutex<span class="special">,</span> <span class="keyword">unsigned</span> NextSize<span class="special">,</span> <span class="keyword">unsigned</span> MaxSize<span class="special">&gt;</span>
+ <span class="keyword">class</span> <a class="link" href="../../../boost/singleton_pool.html" title="Class template singleton_pool">singleton_pool</a><span class="special">;</span>
+<span class="special">}</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../BOOST_POOL_VALIDATE_INTERNALS.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../boost_pool_c___reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/singleton_pool.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/html/index.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,93 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Boost.Pool</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Boost.Pool">
+<link rel="next" href="boost_pool/pool.html" title="Introduction and Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_pool/pool.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+<div class="article">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="boost_pool"></a>Boost.Pool</h2></div>
+<div><div class="authorgroup"><div class="author"><h3 class="author">
+<span class="firstname">Stephen</span> <span class="surname">Cleary</span>
+</h3></div></div></div>
+<div><p class="copyright">Copyright &#169; 2000-2006 Stephen Cleary</p></div>
+<div><p class="copyright">Copyright &#169; 2011 Paul A. Bristow</p></div>
+<div><div class="legalnotice">
+<a name="boost_pool.legal"></a><p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction and Overview</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_pool/pool/conventions.html">Documentation Naming and
+ Formatting Conventions</a></span></dt>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">How do I use Pool?</span></dt>
+<dt><span class="section">Installation</span></dt>
+<dt><span class="section">Building the Test Programs</span></dt>
+<dt><span class="section"><a href="boost_pool/pool/interfaces.html">Boost Pool Interfaces - What
+ interfaces are provided and when to use each one.</a></span></dt>
+<dt><span class="section">Pool in More Depth</span></dt>
+</dl></dd>
+<dt><span class="section">Boost.Pool C++ Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/pool/object_pool.hpp></span></dt>
+<dt><span class="section">Header <boost/pool/pool.hpp></span></dt>
+<dt><span class="section">Header <boost/pool/pool_alloc.hpp></span></dt>
+<dt><span class="section">Header <boost/pool/poolfwd.hpp></span></dt>
+<dt><span class="section">Header <boost/pool/simple_segregated_storage.hpp></span></dt>
+<dt><span class="section">Header <boost/pool/singleton_pool.hpp></span></dt>
+</dl></dd>
+<dt><span class="section">Appendices</span></dt>
+<dd><dl>
+<dt><span class="section">Appendix A: History</span></dt>
+<dt><span class="section">Appendix B: FAQ</span></dt>
+<dt><span class="section">Appendix C: Acknowledgements</span></dt>
+<dt><span class="section">Appendix D: Tests</span></dt>
+<dt><span class="section">Appendix E: Tickets</span></dt>
+<dt><span class="section"><a href="boost_pool/appendices/implementations.html">Appendix F: Other
+ Implementations</a></span></dt>
+<dt><span class="section">Appendix G: References</span></dt>
+<dt><span class="section">Appendix H: Future plans</span></dt>
+</dl></dd>
+<dt><span class="section">Indexes</span></dt>
+<dd><dl>
+<dt><span class="section">Function Index</span></dt>
+<dt><span class="section">Class Index</span></dt>
+<dt><span class="section">Typedef Index</span></dt>
+<dt><span class="section">Index</span></dt>
+</dl></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: December 15, 2011 at 11:24:47 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_pool/pool.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/images/MB4.PNG
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/PC2.PNG
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/PC3.PNG
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/PC4.PNG
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/PC5.PNG
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/mb1.PNG
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/mb1.svg
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/mb2.PNG
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/mb2.svg
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/mb3.PNG
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/mb3.svg
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/mb4.svg
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/pc1.PNG
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/pc1.svg
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/pc2.svg
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/pc3.svg
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/pc4.svg
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/images/pc5.svg
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/index.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/index.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,13 @@
+<html>
+<head>
+<meta http-equiv="refresh" content="0; URL=html/index.html">
+</head>
+<body>
+Automatic redirection failed, please go to
+html/index.html.&nbsp;<hr>
+<p>© Copyright Beman Dawes, 2001</p>
+<p>Distributed under the Boost Software License, Version 1.0. (See accompanying
+file LICENSE_1_0.txt or copy
+at www.boost.org/LICENSE_1_0.txt)</p>
+</body>
+</html>

Added: sandbox/pool/libs/pool/doc/index.idx
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/index.idx 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,63 @@
+# index.idx for Boost.Pool Quickbook docs auto-indexing for Boost.Pool
+# Copyright (c) 2011 Paul A. Bristow
+#
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+# Assume all header files are in boost/pool and sub-folders.
+# Perhaps exclude sub-folder /details by setting to false?
+!scan-path boost/pool .*\.hpp true
+
+# Assume all example files are in /example (none in sub-folders).
+!scan-path "libs/pool/example" ".*\.cpp"
+
+align
+alignment
+alloc
+allocation
+automatic destruction
+block \<block\w*\>
+build
+chunk \<chunk\w*\>
+concepts \<concept\w*\>
+conventions
+deallocation
+dynamic memory allocation
+elements
+fast pool allocation \<fast\w*\>
+formatting conventions \<convention\w*\>
+guaranteeing alignment \<guarantee\w*\>
+include \<include\w*\>
+installation
+headers \<header\w*\>
+interface \<interface\w*\>
+jamfile \<jamfile\.*\>
+malloc
+memory
+memory block
+naming
+new
+objects \<object\w*\>
+object_pool
+ordered \<\w*(order|unorder)\w*\>
+overview
+padding \<pad\w*\>
+portable \<portab\w*\>
+segregated storage
+Simple Segregated Storage
+singleton \<singleton\w*\>
+singleton_pool
+size \<size\w*\>
+template \<template\w*\>
+
+# \<\w*\>
+
+!exclude junk
+
+!rewrite-name "(?i)(?:A|The)\s+(.*)" "\1"
+
+
+
+
+

Added: sandbox/pool/libs/pool/doc/jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/jamfile.v2 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,139 @@
+# Boost.Pool library documentation Jamfile.v2
+#
+# Copyright Paul A. Bristow 2011. Use, modification and
+# distribution is subject to the Boost Software License, Version
+# 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+#
+# See http://www.boost.org for updates, documentation, and revision history.
+
+path-constant boost-root : [ modules.peek : BOOST ] ;
+path-constant images_location : images ; # location of SVG and PNG images referenced by Quickbook.
+
+import modules ;
+
+using doxygen ; # Required if you want to use Doxygen.
+using quickbook ;
+
+doxygen autodoc
+ :
+ [ glob ../../../boost/pool/*.hpp ]
+ #[ glob ../../../boost/pool/detail/*.hpp ]
+ #[ glob ../../../boost/pool/detail/*.ipp ]
+ # Renamed as .inc are not recognised correctly by doxywizard leaving error message.
+ # Warning: include file boost/pool/detail/pool_construct.inc not found, perhaps you forgot to add its directory to INCLUDE_PATH?
+ # and problem with 'no type' in jamfile.
+ # error: target { ../../../boost/pool/detail/pool_construct.inc. } has no type
+
+ #[ glob ../../../boost/pool/examples/*.*pp ] # Example source files.
+ :
+ <doxygen:param>WARNINGS=YES # Default NO, but useful to see warnings, especially in a logfile.
+ # It is also wise to to set a warnings logfile like this:
+ <doxygen:param>WARN_LOGFILE=AutoDoxywarnings.log # This may not be empty (usually not a good sign!), depending on options chosen.
+ # Much better to send message to a logfile than the default stderr.
+ # and make sure that there are no Doxygen errors or significant warnings in the log file.
+ <doxygen:param>RECURSIVE=NO # Search recursively down subdirectories.
+ <doxygen:param>EXTRACT_ALL=NO
+ <doxygen:param>HIDE_UNDOC_MEMBERS=YES
+ <doxygen:param>EXTRACT_PRIVATE=NO
+ <doxygen:param>MACRO_EXPANSION=YES
+ <doxygen:param>EXPAND_ONLY_PREDEF=YES
+ <doxygen:param>PREDEFINED="\"BOOST_PREVENT_MACRO_SUBSTITUTION=\" \"BOOST_STATIC_CONSTANT(t,v)=static const t v\" \"BOOST_DOXYGEN=1\""
+ <xsl:param>"boost.doxygen.reftitle=Boost.Pool C++ Reference"
+ ;
+
+xml pool : pool.qbk : <include>$(boost-root)/tools/auto_index/include ;
+
+boostbook standalone
+ :
+ pool
+ :
+
+ # General settings
+ # =================
+ # Options for html and pdf
+ # ========================
+ # No indent on body text:
+ <xsl:param>body.start.indent=0pt
+ # Margin size:
+ <xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <xsl:param>page.margin.outer=0.5in
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+ # Path for links to Boost:
+ <xsl:param>boost.root=../../../..
+
+ # HTML options:
+ # =============
+ # Use graphics icons not text for navigation:
+ <xsl:param>navig.graphics=1
+ # How far down we chunk nested sections, basically all of them:
+ <xsl:param>chunk.section.depth=2
+ # Don't put the first section on the same page as the TOC itself:
+ <xsl:param>chunk.first.sections=1
+ # How far down sections get TOC's
+ <xsl:param>toc.section.depth=4
+ # Max depth in each TOC:
+ <xsl:param>toc.max.depth=2
+ # How far down we go with TOC's
+ <xsl:param>generate.section.toc.level=10
+ # Horizontal ? spacing in table cells.
+ <format>html:<xsl:param>html.cellspacing=3 # pixels
+ # Vertical spacing in table cells.
+ <format>html:<xsl:param>html.cellpadding=5 # pixels
+ <format>html:<xsl:param>boost.max.id.part.length=40
+ <format>html:<xsl:param>img.src.path=../images/
+
+ # PDF Options:
+ # ============
+ # TOC Generation: this is needed for FOP-0.9 and later:
+ <format>pdf:<xsl:param>fop1.extensions=0
+ # Or enable this if you're using XEP:
+ <format>pdf:<xsl:param>xep.extensions=1
+ # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+ <format>pdf:<xsl:param>fop.extensions=0
+ # No indent on body text:
+ <xsl:param>body.start.indent=0pt
+ # Margin size:
+ <xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <xsl:param>page.margin.outer=0.5in
+
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+
+ # Set these one for PDF generation *only*:
+ # default png graphics are awful in PDF form,
+ # better use SVG instead:
+ <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+ #<format>pdf:<xsl:param>admon.graphics.extension=".png" # Only png images are available.
+ <format>pdf:<xsl:param>use.role.for.mediaobject=1
+ <format>pdf:<xsl:param>preferred.mediaobject.role=print
+ <format>pdf:<xsl:param>img.src.path=$(images_location)/ # graphics (diagrams) for pdf.
+ <format>pdf:<xsl:param>draft.mode="no"
+ <format>pdf:<xsl:param>boost.url.prefix=I:/boost-sandbox/guild/pool/libs/pool/doc/html
+
+ # <auto-index>on turns on index (or off).
+ <auto-index>on
+ <auto-index-verbose>on
+
+ # Choose indexing method (separately for html and pdf):
+ <format>html:<auto-index-internal>on # on (or off) to use internally generated indexes.
+ # <format>html:<xsl:param>generate.index=0 # Don't let the XSL stylesheets generate indexes.
+
+ <format>pdf:<auto-index-internal>off # on (or off) to use internally generated indexes.
+ # <auto-index-type>index # Use <index>...</index> as the XML wrapper.
+
+ <format>pdf:<xsl:param>index.on.type=1 # For the native stylesheets to generate the different indexes.
+ # PDF native index support is probably better for PDFs as then you actually get page numbers.
+
+ <auto-index-script>index.idx # Specifies the name of the script to load.
+ # <auto-index-prefix>../../../ # Path to /pool so index.idx !scan-path can use boost/ and libs/doc.
+ <auto-index-prefix>../../..
+
+ <dependency>autodoc #
+ ;
+
+install pdf-install : standalone : <location>. <install-type>PDF <name>pool.pdf ;
+

Added: sandbox/pool/libs/pool/doc/pool.pdf
==============================================================================
Binary file. No diff available.

Added: sandbox/pool/libs/pool/doc/pool.qbk
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/doc/pool.qbk 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,1205 @@
+[/
+ / Copyright (c) 2000 - 2006 Stephen Cleary
+ / Copyright (c) 2011 Paul A. Bristow (conversion to Quickbook format)
+ / Distributed under the Boost Software License, Version 1.0.
+ / (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ /]
+
+[article Boost.Pool
+ [quickbook 1.5]
+ [authors [Cleary, Stephen]]
+ [copyright 2000 - 2006 Stephen Cleary, 2011 Paul A. Bristow]
+ [license
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ [@http://www.boost.org/LICENSE_1_0.txt])
+ ]
+]
+
+[def __BoostPool__ [*Boost.Pool]]
+
+[def __inherit [*Inherits:]]
+[def __std_ref [*C++ Standard Reference:]]
+[def __header [*Header:]]
+[def __compat [*Compiler Compatibility:]]
+[def __examples [*Examples:]]
+[def __example [*Example:]]
+[def __type [*type:]]
+[def __returns [*Returns:]]
+[def __throws [*Throws:]]
+[def __remarks [*Remarks:]]
+[def __effects [*Effects:]]
+[def __post_conditions [*PostConditions:]]
+[def __pre_conditions [*PreConditions:]]
+[def __requires [*Requires:]]
+
+[def __pool_interfaces [link boost_pool.pool.interfaces Pool Interfaces]]
+[def __pool_interface [link boost_pool.pool.interfaces.pool Pool Interface]]
+[def __object_pool_interface [link boost_pool.pool.interfaces.object_pool Object Pool Interface]]
+[def __singleton_pool_interface [link boost_pool.pool.interfaces.singleton_pool Singleton Pool Interface]]
+[def __singleton_pool_exceptions_interface [link boost_pool.pool.interfaces.pool_alloc Singleton Pool with exceptions Interface]]
+
+[def __pool_references [link boost_pool.pool.appendices.references References]]
+[def __pool_concepts [link boost_pool.pool.pooling.concepts concepts]]
+[def __pool_simple_segregated_storage [link boost_pool.pool.pooling.simple Simple Segregated Storage]]
+
+[def __todo [link boost_pool.appendices.todo TODO]]
+[def __UserAllocator [link boost_pool.pool.pooling.user_allocator UserAllocator]]
+
+[template mu[]'''&#x3BC;'''] [/ µ Greek small letter mu]
+[template plusminus[]'''&#x00B1;'''] [/ plus or minus sign]
+
+[template graphic[name]
+'''
+<inlinemediaobject>
+<imageobject role="html">
+<imagedata align="center" fileref="../images/'''[name]'''.png"></imagedata>
+</imageobject>
+<imageobject role="print">
+<imagedata align="center" fileref="../images/'''[name]'''.svg"></imagedata>
+</imageobject>
+</inlinemediaobject>
+''']
+
+[section:pool Introduction and Overview]
+
+[section:conventions Documentation Naming and Formatting Conventions]
+
+This documentation makes use of the following naming and formatting conventions.
+
+* Code is in `fixed width font` and is syntax-highlighted in color.
+* Replaceable text that you will need to supply is in [~italics].
+* Free functions are rendered in the `code font` followed by `()`, as in `free_function()`.
+* If a name refers to a class template, it is specified like this: `class_template<>`; that is, it is in code font and its name is followed by `<>` to indicate that it is a class template.
+* If a name refers to a function-like macro, it is specified like this: `MACRO()`;
+ that is, it is uppercase in code font and its name is followed by `()` to indicate that it is a function-like macro. Object-like macros appear without the trailing `()`.
+* Names that refer to /concepts/ in the generic programming sense are specified in CamelCase.
+
+[note In addition, notes such as this one specify non-essential information that provides additional background or rationale.]
+
+Finally, you can mentally add the following to any code fragments in this document:
+
+ // Include all of Pool files
+ #include <boost/pool.hpp>
+
+[endsect] [/section:conventions Documentation Naming and Formatting Conventions]
+
+[section:introduction Introduction]
+[h5 What is Pool?]
+
+Pool allocation is a memory allocation scheme that is very fast, but limited in its usage.
+For more information on pool allocation (also called ['simple segregated storage],
+see __pool_concepts concepts and __pool_simple_segregated_storage).
+
+[h5 Why should I use Pool?]
+
+Using Pools gives you more control over how memory is used in your program.
+For example, you could have a situation where you want to allocate a
+bunch of small objects at one point, and then reach a point in your program
+where none of them are needed any more. Using pool interfaces,
+you can choose to run their destructors or just drop them off into oblivion;
+the pool interface will guarantee that there are no system memory leaks.
+
+[h5 When should I use Pool?]
+
+Pools are generally used when there is a lot of allocation and deallocation of small objects.
+Another common usage is the situation above, where many objects may be dropped out of memory.
+
+In general, use Pools when you need a more efficient way to do unusual memory control.
+
+[h5 Which pool allocator should I use?]
+
+`pool_allocator` is a more general-purpose solution, geared towards
+efficiently servicing requests for any number of contiguous chunks.
+
+`fast_pool_allocator` is also a general-purpose solution
+but is geared towards efficiently servicing requests for one chunk at a time;
+it will work for contiguous chunks, but not as well as pool_allocator.
+
+If you are seriously concerned about performance,
+use `fast_pool_allocator` when dealing with containers such as `std::list`,
+and use `pool_allocator` when dealing with containers such as `std::vector`.
+
+[endsect] [/section:introduction Introduction]
+
+[section:usage How do I use Pool?]
+
+See the __pool_interfaces section that covers the different Pool interfaces supplied by this library.
+
+[h5 Library Structure and Dependencies]
+
+Forward declarations of all the exposed symbols for this library
+are in the header made inscope by `#include <boost/pool/poolfwd.hpp>`.
+
+The library may use macros, which will be prefixed with `BOOST_POOL_`.
+The exception to this rule are the include file guards,
+which (for file `xxx.hpp`) is `BOOST_xxx_HPP`.
+
+All exposed symbols defined by the library will be in namespace boost::.
+All symbols used only by the implementation will be in namespace boost::details::pool.
+
+Every header used only by the implementation is in the subdirectory `/detail/`.
+
+Any header in the library may include any other header in the library
+or any system-supplied header at its discretion.
+
+[endsect] [/section:usage How do I use Pool?]
+
+[section:installation Installation]
+
+The Boost Pool library is a header-only library.
+That means there is no .lib, .dll, or .so to build;
+just add the Boost directory to your compiler's include file path,
+and you should be good to go!
+
+[endsect] [/section:installation Installation]
+
+[section:testing Building the Test Programs]
+
+A jamfile.v2 is provided which can be run is the usual way, for example:
+
+``boost\libs\pool\test> bjam -a >pool_test.log``
+
+[endsect] [/section:testing Building the Test Programs]
+
+[section:interfaces Boost Pool Interfaces - What interfaces are provided and when to use each one.]
+
+[h4 Introduction]
+
+There are several interfaces provided which allow users great flexibility
+in how they want to use Pools.
+Review the __pool_concepts document to get the basic understanding of how the various pools work.
+
+[h3 Terminology and Tradeoffs]
+
+[h5 Object Usage vs. Singleton Usage]
+
+Object Usage is the method where each Pool is an object that may be created and destroyed.
+Destroying a Pool implicitly frees all chunks that have been allocated from it.
+
+Singleton Usage is the method where each Pool is an object with static duration;
+that is, it will not be destroyed until program exit.
+Pool objects with Singleton Usage may be shared;
+thus, Singleton Usage implies thread-safety as well.
+System memory allocated by Pool objects with Singleton Usage
+may be freed through release_memory or purge_memory.
+
+[h5 Out-of-Memory Conditions: Exceptions vs. Null Return]
+
+Some Pool interfaces throw exceptions when out-of-memory;
+others will `return 0`. In general, unless mandated by the Standard,
+Pool interfaces will always prefer to `return 0` instead of throwing an exception.
+
+[h5 Ordered versus unordered]
+
+An ordered pool maintains it's free list in order of the address of each free block -
+this is the most efficient way if you're likely to allocate arrays of objects.
+However, freeing an object can be O(N) in the number of currently free blocks which
+can be prohibitively expensive in some situations.
+
+An unordered pool does not maintain it's free list in any particular order, as a result
+allocation and freeing single objects is very fast, but allocating arrays may be slow
+(and in particular the pool may not be aware that it contains enough free memory for the
+allocation request, and unnecessarily allocate more memory).
+
+[section:interfaces Pool Interfaces]
+
+[section:pool pool]
+
+The [classref boost::pool pool]
+interface is a simple Object Usage interface with Null Return.
+
+[classref boost::pool pool] is a fast memory allocator,
+and guarantees proper alignment of all allocated chunks.
+
+[headerref boost/pool/pool.hpp pool.hpp] provides two __UserAllocator classes
+and a [classref boost::pool template class pool],
+which extends and generalizes the framework provided by the
+__pool_simple_segregated_storage solution.
+For information on other pool-based interfaces, see the other __pool_interfaces.
+
+[*Synopsis]
+
+There are two __UserAllocator classes provided.
+Both of them are in [headerref boost/pool/pool.hpp pool.hpp].
+
+The default value for the template parameter __UserAllocator is always
+`default_user_allocator_new_delete`.
+
+``
+ struct default_user_allocator_new_delete
+ {
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ static char * malloc(const size_type bytes)
+ { return new (std::nothrow) char[bytes]; }
+ static void free(char * const block)
+ { delete [] block; }
+ };
+
+ struct default_user_allocator_malloc_free
+ {
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ static char * malloc(const size_type bytes)
+ { return reinterpret_cast<char *>(std::malloc(bytes)); }
+ static void free(char * const block)
+ { std::free(block); }
+ };
+
+ template <typename UserAllocator = default_user_allocator_new_delete>
+ class pool
+ {
+ private:
+ pool(const pool &);
+ void operator=(const pool &);
+
+ public:
+ typedef UserAllocator user_allocator;
+ typedef typename UserAllocator::size_type size_type;
+ typedef typename UserAllocator::difference_type difference_type;
+
+ explicit pool(size_type requested_size);
+ ~pool();
+
+ bool release_memory();
+ bool purge_memory();
+
+ bool is_from(void * chunk) const;
+ size_type get_requested_size() const;
+
+ void * malloc();
+ void * ordered_malloc();
+ void * ordered_malloc(size_type n);
+
+ void free(void * chunk);
+ void ordered_free(void * chunk);
+ void free(void * chunks, size_type n);
+ void ordered_free(void * chunks, size_type n);
+ };
+``
+
+[*Example:]
+``
+void func()
+{
+ boost::pool<> p(sizeof(int));
+ for (int i = 0; i < 10000; ++i)
+ {
+ int * const t = p.malloc();
+ ... // Do something with t; don't take the time to free() it.
+ }
+} // on function exit, p is destroyed, and all malloc()'ed ints are implicitly freed.
+``
+
+[endsect] [/section pool]
+
+
+[section:object_pool Object_pool]
+
+The [classref boost::object_pool template class object_pool]
+interface is an Object Usage interface with Null Return,
+but is aware of the type of the object for which it is allocating chunks.
+On destruction, any chunks that have been allocated
+from that `object_pool` will have their destructors called.
+
+[headerref boost/pool/object_pool.hpp object_pool.hpp]
+provides a template type that can be used for fast and efficient memory allocation.
+It also provides automatic destruction of non-deallocated objects.
+
+For information on other pool-based interfaces, see the other __pool_interfaces.
+
+[*Synopsis]
+
+``template <typename ElementType, typename UserAllocator = default_user_allocator_new_delete>
+class object_pool
+{
+ private:
+ object_pool(const object_pool &);
+ void operator=(const object_pool &);
+
+ public:
+ typedef ElementType element_type;
+ typedef UserAllocator user_allocator;
+ typedef typename pool<UserAllocator>::size_type size_type;
+ typedef typename pool<UserAllocator>::difference_type difference_type;
+
+ object_pool();
+ ~object_pool();
+
+ element_type * malloc();
+ void free(element_type * p);
+ bool is_from(element_type * p) const;
+
+ element_type * construct();
+ // other construct() functions
+ void destroy(element_type * p);
+};
+``
+[*Template Parameters]
+
+['ElementType]
+
+The template parameter is the type of object to allocate/deallocate.
+It must have a non-throwing destructor.
+
+['UserAllocator]
+
+Defines the method that the underlying Pool will use to allocate memory from the system.
+Default is default_user_allocator_new_delete. See ____UserAllocator for details.
+
+[*Example:]
+ struct X { ... }; // has destructor with side-effects.
+
+ void func()
+ {
+ boost::object_pool<X> p;
+ for (int i = 0; i < 10000; ++i)
+ {
+ X * const t = p.malloc();
+ ... // Do something with t; don't take the time to free() it.
+ }
+ } // on function exit, p is destroyed, and all destructors for the X objects are called.
+
+[endsect] [/section object_pool]
+
+[section:singleton_pool Singleton_pool]
+
+The [classref boost::singleton_pool singleton_pool interface]
+at [headerref boost/pool/singleton_pool.hpp singleton_pool.hpp]
+is a Singleton Usage interface with Null Return.
+It's just the same as the pool interface but with Singleton Usage instead.
+
+[*Synopsis]
+
+``template <typename Tag, unsigned RequestedSize,
+ typename UserAllocator = default_user_allocator_new_delete>
+struct singleton_pool
+{
+ public:
+ typedef Tag tag;
+ typedef UserAllocator user_allocator;
+ typedef typename pool<UserAllocator>::size_type size_type;
+ typedef typename pool<UserAllocator>::difference_type difference_type;
+
+ static const unsigned requested_size = RequestedSize;
+
+ private:
+ static pool<size_type> p; // exposition only!
+
+ singleton_pool();
+
+ public:
+ static bool is_from(void * ptr);
+
+ static void * malloc();
+ static void * ordered_malloc();
+ static void * ordered_malloc(size_type n);
+
+ static void free(void * ptr);
+ static void ordered_free(void * ptr);
+ static void free(void * ptr, std::size_t n);
+ static void ordered_free(void * ptr, size_type n);
+
+ static bool release_memory();
+ static bool purge_memory();
+};
+``
+[*Notes]
+
+The underlying pool `p` referenced by the static functions in `singleton_pool`
+is actually declared in a way so that it is:
+
+* Thread-safe if there is only one thread running before `main()` begins and after `main()` ends. All of the static functions of singleton_pool synchronize their access to `p`.
+* Guaranteed to be constructed before it is used, so that the simple static object in the synopsis above would actually be an incorrect implementation. The actual implementation to guarantee this is considerably more complicated.
+
+[*Note] that a different underlying pool `p` exists for each different set of template parameters, including implementation-specific ones.
+
+[*Template Parameters]
+
+['Tag]
+
+The ['Tag] template parameter allows different unbounded sets of singleton pools to exist.
+For example, the pool allocators use two tag classes to ensure that the two different
+ allocator types never share the same underlying singleton pool.
+
+['Tag] is never actually used by `singleton_pool`.
+
+['RequestedSize]
+The requested size of memory chunks to allocate.
+This is passed as a constructor parameter to the underlying pool.
+Must be greater than 0.
+
+['UserAllocator]
+
+Defines the method that the underlying pool will use to allocate memory from the system. See User Allocators for details.
+
+[*Example:]
+ struct MyPoolTag { };
+
+ typedef boost::singleton_pool<MyPoolTag, sizeof(int)> my_pool;
+ void func()
+ {
+ for (int i = 0; i < 10000; ++i)
+ {
+ int * const t = my_pool::malloc();
+ ... // Do something with t; don't take the time to free() it.
+ }
+ // Explicitly free all malloc()'ed ints.
+ my_pool::purge_memory();
+ }
+[endsect] [/section singleton_pool]
+
+[section:pool_allocator pool_allocator]
+
+The [classref boost::pool_allocator pool_allocator interface]
+is a Singleton Usage interface with Exceptions.
+It is built on the singleton_pool interface,
+and provides a Standard Allocator-compliant class (for use in containers, etc.).
+
+[*Introduction]
+
+[headerref boost/pool/pool_alloc.hpp pool_alloc.hpp]
+
+Provides two template types that can be used for fast and efficient memory allocation.
+These types both satisfy the Standard Allocator requirements [20.1.5]
+and the additional requirements in [20.1.5/4],
+so they can be used with Standard or user-supplied containers.
+
+For information on other pool-based interfaces, see the other __pool_interfaces.
+
+[*Synopsis]
+
+``
+struct pool_allocator_tag { };
+
+template <typename T,
+ typename UserAllocator = default_user_allocator_new_delete>
+class pool_allocator
+{
+ public:
+ typedef UserAllocator user_allocator;
+ typedef T value_type;
+ typedef value_type * pointer;
+ typedef const value_type * const_pointer;
+ typedef value_type & reference;
+ typedef const value_type & const_reference;
+ typedef typename pool<UserAllocator>::size_type size_type;
+ typedef typename pool<UserAllcoator>::difference_type difference_type;
+
+ template <typename U>
+ struct rebind
+ { typedef pool_allocator<U, UserAllocator> other; };
+
+ public:
+ pool_allocator();
+ pool_allocator(const pool_allocator &);
+ // The following is not explicit, mimicking std::allocator [20.4.1]
+ template <typename U>
+ pool_allocator(const pool_allocator<U, UserAllocator> &);
+ pool_allocator & operator=(const pool_allocator &);
+ ~pool_allocator();
+
+ static pointer address(reference r);
+ static const_pointer address(const_reference s);
+ static size_type max_size();
+ static void construct(pointer ptr, const value_type & t);
+ static void destroy(pointer ptr);
+
+ bool operator==(const pool_allocator &) const;
+ bool operator!=(const pool_allocator &) const;
+
+ static pointer allocate(size_type n);
+ static pointer allocate(size_type n, pointer);
+ static void deallocate(pointer ptr, size_type n);
+};
+
+struct fast_pool_allocator_tag { };
+
+template <typename T
+ typename UserAllocator = default_user_allocator_new_delete>
+class fast_pool_allocator
+{
+ public:
+ typedef UserAllocator user_allocator;
+ typedef T value_type;
+ typedef value_type * pointer;
+ typedef const value_type * const_pointer;
+ typedef value_type & reference;
+ typedef const value_type & const_reference;
+ typedef typename pool<UserAllocator>::size_type size_type;
+ typedef typename pool<UserAllocator>::difference_type difference_type;
+
+ template <typename U>
+ struct rebind
+ { typedef fast_pool_allocator<U, UserAllocator> other; };
+
+ public:
+ fast_pool_allocator();
+ fast_pool_allocator(const fast_pool_allocator &);
+ // The following is not explicit, mimicking std::allocator [20.4.1]
+ template <typename U>
+ fast_pool_allocator(const fast_pool_allocator<U, UserAllocator> &);
+ fast_pool_allocator & operator=(const fast_pool_allocator &);
+ ~fast_pool_allocator();
+
+ static pointer address(reference r);
+ static const_pointer address(const_reference s);
+ static size_type max_size();
+ static void construct(pointer ptr, const value_type & t);
+ static void destroy(pointer ptr);
+
+ bool operator==(const fast_pool_allocator &) const;
+ bool operator!=(const fast_pool_allocator &) const;
+
+ static pointer allocate(size_type n);
+ static pointer allocate(size_type n, pointer);
+ static void deallocate(pointer ptr, size_type n);
+
+ static pointer allocate();
+ static void deallocate(pointer ptr);
+};
+``
+[*Template Parameters]
+
+['T] The first template parameter is the type of object to allocate/deallocate.
+
+['UserAllocator] Defines the method that the underlying Pool will use to allocate memory from the system.
+See User Allocators for details.
+
+[*Example:]
+
+ void func()
+ {
+ std::vector<int, boost::pool_allocator<int> > v;
+ for (int i = 0; i < 10000; ++i)
+ v.push_back(13);
+ } // Exiting the function does NOT free the system memory allocated by the pool allocator.
+ // You must call
+ // boost::singleton_pool<boost::pool_allocator_tag, sizeof(int)>::release_memory();
+ // in order to force freeing the system memory.
+
+[endsect] [/section pool_alloc]
+
+[endsect] [/section:interfaces The Interfaces - pool, object_pool and singleton_pool]
+
+[endsect] [/section:interfaces- What interfaces are provided and when to use each one.]
+
+[section:pooling Pool in More Depth]
+
+[section:concepts Basic ideas behind pooling]
+
+['Dynamic memory allocation has been a fundamental part
+of most computer systems since roughly 1960...] [link ref1 1]
+
+Everyone uses dynamic memory allocation.
+If you have ever called malloc or new, then you have used dynamic memory allocation.
+Most programmers have a tendency to treat the heap as a ["magic bag"]:
+we ask it for memory, and it magically creates some for us.
+Sometimes we run into problems because the heap is not magic.
+
+The heap is limited.
+Even on large systems (i.e., not embedded) with huge amounts of virtual memory available,
+there is a limit. Everyone is aware of the physical limit,
+but there is a more subtle, 'virtual' limit, that limit at which your program
+(or the entire system) slows down due to the use of virtual memory.
+This virtual limit is much closer to your program than the physical limit,
+especially if you are running on a multitasking system.
+Therefore, when running on a large system, it is considered ['nice]
+to make your program use as few resources as necessary, and release them as soon as possible.
+When using an embedded system, programmers usually have no memory to waste.
+
+The heap is complicated.
+It has to satisfy any type of memory request, for any size, and do it fast.
+The common approaches to memory management have to do with splitting the memory up into portions,
+and keeping them ordered by size in some sort of a tree or list structure. Add in other factors,
+such as locality and estimating lifetime, and heaps quickly become very complicated.
+So complicated, in fact, that there is no known ['perfect] answer to the
+problem of how to do dynamic memory allocation.
+The diagrams below illustrate how most common memory managers work: for each chunk of memory,
+it uses part of that memory to maintain its internal tree or list structure.
+Even when a chunk is malloc'ed out to a program, the memory manager
+must ['save] some information in it - usually just its size.
+Then, when the block is free'd, the memory manager can easily tell how large it is.
+
+[graphic pc1]
+
+[graphic pc2]
+
+[h5 Dynamic memory allocation is often inefficient]
+
+Because of the complication of dynamic memory allocation,
+it is often inefficient in terms of time and/or space.
+Most memory allocation algorithms store some form of information with each memory block,
+either the block size or some relational information,
+such as its position in the internal tree or list structure.
+It is common for such ['header fields] to take up one machine word in a block
+that is being used by the program. The obvious disadvantage, then,
+is when small objects are dynamically allocated.
+For example, if ints were dynamically allocated,
+then automatically the algorithm will reserve space for the header fields as well,
+and we end up with a 50% waste of memory. Of course, this is a worst-case scenario.
+However, more modern programs are making use of small objects on the heap;
+and that is making this problem more and more apparent. Wilson et. al. state that
+an average-case memory overhead is about ten to twenty percent[@#ref2 2].
+This memory overhead will grow higher as more programs use more smaller objects.
+It is this memory overhead that brings programs closer to the virtual limit.
+
+In larger systems, the memory overhead is not as big of a problem
+(compared to the amount of time it would take to work around it),
+and thus is often ignored. However, there are situations
+where many allocations and/or deallocations of smaller objects
+are taking place as part of a time-critical algorithm, and in these situations,
+the system-supplied memory allocator is often too slow.
+
+Simple segregated storage addresses both of these issues.
+Almost all memory overhead is done away with, and all allocations can take place
+in a small amount of (amortized) constant time.
+However, this is done at the loss of generality;
+simple segregated storage only can allocate memory chunks of a single size.
+
+[endsect] [/section:concepts Basic ideas behind pooling]
+
+[section:simple Simple Segregated Storage]
+
+Simple Segregated Storage is the basic idea behind the Boost Pool library.
+Simple Segregated Storage is the simplest, and probably the fastest,
+memory allocation/deallocation algorithm.
+It begins by partitioning a memory block into fixed-size chunks.
+Where the block comes from is not important until implementation time.
+A Pool is some object that uses Simple Segregated Storage in this fashion.
+To illustrate:
+
+[graphic pc3]
+
+Each of the chunks in any given block are always the same size.
+This is the fundamental restriction of Simple Segregated Storage:
+you cannot ask for chunks of different sizes.
+For example, you cannot ask a Pool of integers for a character,
+or a Pool of characters for an integer
+(assuming that characters and integers are different sizes).
+
+Simple Segregated Storage works by interleaving a free list within the unused chunks.
+For example:
+
+[graphic pc4]
+
+By interleaving the free list inside the chunks,
+each Simple Segregated Storage only has the overhead of a single pointer
+(the pointer to the first element in the list).
+It has no memory overhead for chunks that are in use by the process.
+
+Simple Segregated Storage is also extremely fast.
+In the simplest case, memory allocation is merely
+removing the first chunk from the free list,
+a O(1) operation. In the case where the free list is empty,
+another block may have to be acquired and partitioned,
+which would result in an amortized O(1) time.
+Memory deallocation may be as simple as adding that chunk
+to the front of the free list, a O(1) operation.
+However, more complicated uses of Simple Segregated Storage may require a sorted free list,
+which makes deallocation O(N).
+
+[graphic pc5]
+
+Simple Segregated Storage gives faster execution and less memory overhead
+than a system-supplied allocator, but at the loss of generality.
+A good place to use a Pool is in situations
+where many (noncontiguous) small objects may be allocated on the heap,
+or if allocation and deallocation of the same-sized objects happens repeatedly.
+
+[endsect] [/section:simple Simple Segregated Storage]
+
+[section:alignment Guaranteeing Alignment - How we guarantee alignment portably.]
+
+[h4 Terminology]
+
+Review the __pool_concepts section if you are not already familiar with it.
+Remember that block is a contiguous section of memory,
+which is partitioned or segregated into fixed-size chunks.
+These chunks are what are allocated and deallocated by the user.
+
+[h4 Overview]
+
+Each Pool has a single free list that can extend over a number of memory blocks.
+Thus, Pool also has a linked list of allocated memory blocks.
+Each memory block, by default, is allocated using `new[]`,
+and all memory blocks are freed on destruction.
+It is the use of `new[]` that allows us to guarantee alignment.
+
+[h4 Proof of Concept: Guaranteeing Alignment]
+
+Each block of memory is allocated as a POD type
+(specifically, an array of characters) through `operator new[]`.
+Let `POD_size` be the number of characters allocated.
+
+[h5 Predicate 1: Arrays may not have padding]
+
+This follows from the following quote:
+
+[5.3.3/2] (Expressions::Unary expressions::Sizeof)
+['... When applied to an array, the result is the total number of bytes in the array.
+This implies that the size of an array of n elements is n times the size of an element.]
+
+Therefore, arrays cannot contain padding,
+though the elements within the arrays may contain padding.
+
+[h5 Predicate 2: Any block of memory allocated as an array of characters through `operator new[]`
+(hereafter referred to as the block) is properly aligned for any object of that size or smaller]
+
+This follows from:
+
+* [3.7.3.1/2] (Basic concepts::Storage duration::Dynamic storage duration::Allocation functions)
+['"... The pointer returned shall be suitably aligned
+so that it can be converted to a pointer of any complete object type
+and then used to access the object or array in the storage allocated ..."]
+* [5.3.4/10] (Expressions::Unary expressions::New)
+['"... For arrays of char and unsigned char,
+the difference between the result of the new-expression and
+the address returned by the allocation function shall be an integral multiple
+of the most stringent alignment requirement (3.9) of any object type whose size
+is no greater than the size of the array being created.
+[Note: Because allocation functions are assumed to return pointers to storage
+that is appropriately aligned for objects of any type,
+this constraint on array allocation overhead permits
+the common idiom of allocating character arrays
+into which objects of other types will later be placed."]
+
+[h5 Consider: imaginary object type Element of a size which is a
+multiple of some actual object size; assume `sizeof(Element) > POD_size`]
+
+Note that an object of that size can exist.
+One object of that size is an array of the "actual" objects.
+
+Note that the block is properly aligned for an Element.
+This directly follows from Predicate 2.
+
+[h5 Corollary 1: The block is properly aligned for an array of Elements]
+
+This follows from Predicates 1 and 2, and the following quote:
+
+[3.9/9] (Basic concepts::Types)
+['"An object type is a (possibly cv-qualified) type that is not a function type,
+not a reference type, and not a void type."]
+
+(Specifically, array types are object types.)
+
+[h5 Corollary 2: For any pointer `p` and integer `i`,
+if `p` is properly aligned for the type it points to, then `p + i` (when well-defined)
+is properly aligned for that type; in other words, if an array is properly aligned,
+then each element in that array is properly aligned]
+
+There are no quotes from the Standard to directly support this argument,
+but it fits the common conception of the meaning of "alignment".
+
+Note that the conditions for `p + i` being well-defined are outlined in [5.7/5].
+We do not quote that here, but only make note that it is well-defined
+if `p` and `p + i` both point into or one past the same array.
+
+[h5 Let: `sizeof(Element)` be the least common multiple of sizes
+of several actual objects (T1, T2, T3, ...)]
+
+[h5 Let: block be a pointer to the memory block,
+pe be (Element *) block, and pn be (Tn *) block]
+
+[h5 Corollary 3: For each integer `i`, such that `pe + i` is well-defined,
+then for each n, there exists some integer `jn` such that `pn + jn` is well-defined
+and refers to the same memory address as `pe + i`]
+
+This follows naturally, since the memory block is an array of Elements,
+and for each n, `sizeof(Element) % sizeof(Tn) == 0;`
+thus, the boundary of each element in the array of Elements
+is also a boundary of each element in each array of Tn.
+
+[h5 Theorem: For each integer `i`, such that `pe + i` is well-defined,
+that address (pe + i) is properly aligned for each type Tn]
+
+Since `pe + i` is well-defined, then by Corollary 3, `pn + jn` is well-defined.
+It is properly aligned from Predicate 2 and Corollaries 1 and 2.
+
+[h4 Use of the Theorem]
+
+The proof above covers alignment requirements for cutting chunks out of a block.
+The implementation uses actual object sizes of:
+
+* The requested object size (`requested_size`); this is the size of chunks requested by the user
+* `void*` (pointer to void); this is because we interleave our free list through the chunks
+* `size_type`; this is because we store the size of the next block within each memory block
+
+Each block also contains a pointer to the next block;
+but that is stored as a pointer to void and cast when necessary,
+to simplify alignment requirements to the three types above.
+
+Therefore, `alloc_size` is defined to be the largest of the sizes above, rounded up to be a multiple
+of all three sizes. This guarantees alignment provided all alignments are powers of two: something that
+appears to be true on all known platforms.
+
+[h4 A Look at the Memory Block]
+
+Each memory block consists of three main sections.
+The first section is the part that chunks are cut out of,
+and contains the interleaved free list.
+The second section is the pointer to the next block,
+and the third section is the size of the next block.
+
+Each of these sections may contain padding as necessary
+to guarantee alignment for each of the next sections.
+The size of the first section is `number_of_chunks * lcm(requested_size, sizeof(void *), sizeof(size_type));`
+the size of the second section is `lcm(sizeof(void *), sizeof(size_type);`
+and the size of the third section is `sizeof(size_type)`.
+
+Here's an example memory block, where `requested_size == sizeof(void *) == sizeof(size_type) == 4`:
+
+[graphic mb1]
+
+To show a visual example of possible padding,
+here's an example memory block where
+`requested_size == 8 and sizeof(void *) == sizeof(size_type) == 4`
+
+[graphic mb2]
+
+[section:chunks How Contiguous Chunks are Handled]
+
+The theorem above guarantees all alignment requirements for allocating chunks
+and also implementation details such as the interleaved free list.
+However, it does so by adding padding when necessary;
+therefore, we have to treat allocations of contiguous chunks in a different way.
+
+Using array arguments similar to the above,
+we can translate any request for contiguous memory for `n` objects of `requested_size`
+into a request for m contiguous chunks.
+`m` is simply `ceil(n * requested_size / alloc_size)`,
+where `alloc_size` is the actual size of the chunks.
+
+To illustrate:
+
+Here's an example memory block,
+where `requested_size == 1` and `sizeof(void *) == sizeof(size_type) == 4`:
+
+[graphic mb4]
+
+Then, when the user deallocates the contiguous memory,
+we can split it up into chunks again.
+
+Note that the implementation provided for allocating contiguous chunks
+uses a linear instead of quadratic algorithm.
+This means that it may not find contiguous free chunks if the free list is not ordered.
+Thus, it is recommended to always use an ordered free list
+when dealing with contiguous allocation of chunks.
+(In the example above, if Chunk 1 pointed to Chunk 3 pointed to Chunk 2 pointed to Chunk 4,
+instead of being in order,
+the contiguous allocation algorithm would have failed to find any of the contiguous chunks).
+
+[endsect] [/section:chunks How Contiguous Chunks are Handled]
+
+[endsect] [/section:alignment Guaranteeing Alignment - How we guarantee alignment portably.]
+
+[section:simple_segregated Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)]
+
+[h4 Introduction]
+
+[headerref boost/pool/simple_segregated_storage.hpp simple_segregated_storage.hpp]
+provides a template class simple_segregated_storage
+that controls access to a free list of memory chunks.
+
+Note that this is a very simple class, with unchecked preconditions on almost all its functions.
+It is intended to be the fastest and smallest possible quick memory allocator
+for example, something to use in embedded systems.
+This class delegates many difficult preconditions to the user (especially alignment issues).
+For more general usage, see the other __pool_interfaces.
+
+[h4 Synopsis]
+[pre
+template <typename SizeType = std::size_t>
+class simple_segregated_storage
+{
+ private:
+ simple_segregated_storage(const simple_segregated_storage &);
+ void operator=(const simple_segregated_storage &);
+
+ public:
+ typedef SizeType size_type;
+
+ simple_segregated_storage();
+ ~simple_segregated_storage();
+
+ static void * segregate(void * block,
+ size_type nsz, size_type npartition_sz,
+ void * end = 0);
+ void add_block(void * block,
+ size_type nsz, size_type npartition_sz);
+ void add_ordered_block(void * block,
+ size_type nsz, size_type npartition_sz);
+
+ bool empty() const;
+
+ void * malloc();
+ void free(void * chunk);
+ void ordered_free(void * chunk);
+ void * malloc_n(size_type n, size_type partition_sz);
+ void free_n(void * chunks, size_type n,
+ size_type partition_sz);
+ void ordered_free_n(void * chunks, size_type n,
+ size_type partition_sz);
+};
+]
+
+[h4 Semantics]
+
+An object of type `simple_segregated_storage<SizeType>`
+is empty if its free list is empty.
+If it is not empty, then it is ordered if its free list is ordered.
+A free list is ordered if repeated calls to` malloc()` will result in
+a constantly-increasing sequence of values, as determined by `std::less<void *>`.
+A member function is order-preserving if the free-list maintains its order orientation
+(that is, an ordered free list is still ordered after the member function call).
+
+[table:ss_symbols Symbol Table
+[[Symbol] [Meaning] ]
+[[Store] [simple_segregated_storage<SizeType>]]
+[[t] [value of type Store]]
+[[u] [value of type const Store]]
+[[block, chunk, end] [values of type void *]]
+[[partition_sz, sz, n] [values of type Store::size_type]]
+]
+
+[table:templates Template Parameters
+[[Parameter] [Default] [Requirements]]
+[[SizeType] [std::size_t] [An unsigned integral type]]
+]
+
+[table:Typedefs Typedefs
+[[Symbol] [Type]]
+[[size_type] [SizeType]]
+]
+
+[table:Constructors Constructors, Destructors, and State
+[[Expression] [Return Type] [Post-Condition] [Notes]]
+[[Store()] [not used] [empty()] [Constructs a new Store]]
+[[(&t)->~Store()] [not used] [] [Destructs the Store]]
+[[u.empty()] [bool] [] [Returns true if u is empty. Order-preserving.]]
+]
+
+[table:Segregation Segregation
+[ [Expression] [Return Type] [Pre-Condition] [Post-Condition] [Semantic Equivalence] [Notes] ]
+[ [Store::segregate(block, sz, partition_sz, end)] [void *] [partition_sz >= sizeof(void *)
+partition_sz = sizeof(void *) * i, for some integer i
+sz >= partition_sz
+block is properly aligned for an array of objects of size partition_sz
+block is properly aligned for an array of void *] [] [] [Interleaves a free list through the memory block specified by block of size sz bytes, partitioning it into as many partition_sz-sized chunks as possible. The last chunk is set to point to end, and a pointer to the first chunck is returned (this is always equal to block). This interleaved free list is ordered. O(sz).] ]
+[ [Store::segregate(block, sz, partition_sz)] [void *] [Same as above] [] [Store::segregate(block, sz, partition_sz, 0)] [] ]
+[ [t.add_block(block, sz, partition_sz)] [void] [Same as above] [!t.empty()] [] [Segregates the memory block specified by block of size sz bytes into partition_sz-sized chunks, and adds that free list to its own. If t was empty before this call, then it is ordered after this call. O(sz).] ]
+[ [t.add_ordered_block(block, sz, partition_sz)] [void] [Same as above] [!t.empty()] [] [Segregates the memory block specified by block of size sz bytes into partition_sz-sized chunks, and merges that free list into its own. Order-preserving. O(sz).] ]
+]
+
+[table:alloc Allocation and Deallocation
+[ [Expression] [Return Type] [Pre-Condition] [Post-Condition] [Semantic Equivalence] [Notes] ]
+[ [t.malloc()] [void *] [!t.empty()] [] [] [Takes the first available chunk from the free list and returns it. Order-preserving. O(1).] ]
+[ [t.free(chunk)] [void] [chunk was previously returned from a call to t.malloc()] [!t.empty()] [] [Places chunk back on the free list. Note that chunk may not be 0. O(1).] ]
+[ [t.ordered_free(chunk)] [void] [Same as above] [!t.empty()] [] [Places chunk back on the free list. Note that chunk may not be 0. Order-preserving. O(N) with respect to the size of the free list.] ]
+[ [t.malloc_n(n, partition_sz)] [void *] [] [] [] [Attempts to find a contiguous sequence of n partition_sz-sized chunks. If found, removes them all from the free list and returns a pointer to the first. If not found, returns 0. It is strongly recommended (but not required) that the free list be ordered, as this algorithm will fail to find a contiguous sequence unless it is contiguous in the free list as well. Order-preserving. O(N) with respect to the size of the free list.] ]
+[ [t.free_n(chunk, n, partition_sz)] [void] [chunk was previously returned from a call to t.malloc_n(n, partition_sz)] [!t.empty()] [t.add_block(chunk, n * partition_sz, partition_sz)] [Assumes that chunk actually refers to a block of chunks spanning n * partition_sz bytes; segregates and adds in that block. Note that chunk may not be 0. O(n).] ]
+[ [t.ordered_free_n(chunk, n, partition_sz)] [void] [same as above] [same as above] [t.add_ordered_block(chunk, n * partition_sz, partition_sz)] [Same as above, except it merges in the free list. Order-preserving. O(N + n) where N is the size of the free list.] ]
+]
+
+[endsect] [/section:simple_segregated_storage]
+
+[section:user_allocator The UserAllocator Concept]
+
+Pool objects need to request memory blocks from the system, which the Pool then splits into chunks to allocate
+to the user. By specifying a UserAllocator template parameter to various Pool interfaces, users can control how
+those system memory blocks are allocated.
+
+In the following table, /UserAllocator/ is a User Allocator type,
+/block/ is a value of type char *, and
+/n/ is a value of type UserAllocator::size_type
+
+[table UserAllocator Requirements
+[[Expression][Result][Description]]
+[[UserAllocator::size_type][][An unsigned integral type that can represent the size of the largest object to be allocated.]]
+[[UserAllocator::difference_type][][A signed integral type that can represent the difference of any two pointers.]]
+[[UserAllocator::malloc(n)][char *][Attempts to allocate n bytes from the system. Returns 0 if out-of-memory.]]
+[[UserAllocator::free(block)][void][block must have been previously returned from a call to UserAllocator::malloc.]]
+]
+
+There are two UserAllocator classes provided in this library:
+[classref boost::default_user_allocator_new_delete `default_user_allocator_new_delete`] and
+[classref boost::default_user_allocator_malloc_free `default_user_allocator_malloc_free`],
+both in pool.hpp. The default value for the template parameter UserAllocator is always
+[classref boost::default_user_allocator_new_delete `default_user_allocator_new_delete`].
+
+[endsect][/section:user_allocator The UserAllocator Concept]
+[endsect] [/section:pooling Pool in more depth]
+
+[endsect]
+
+[/Note that there will be always some warnings about the .ipp files in Doxygen warnings and Autodoxywarnings.log files.
+"Warning: include file boost/pool/detail/pool_construct.ipp not found, perhaps you forgot to add its directory to INCLUDE_PATH?"
+This is unavoidable because these must be included in the middle of the class declaration.
+All the automatically generated constructors are documented in the Doxygen standalone version:
+only the access to source files is missing.
+The current Quickbook version does not deal with the /details directory so the problem does not arise
+- unless the details files are included in future.]
+
+[/Note also that there is something funny about implementation class PODptr.
+It is always necessary to qualify it thus "details::PODptr"
+
+and this confuses Doxygen complaining thus:
+
+Cannot find class named 'details::PODptr'
+Cannot find class named 'details::PODptr'
+Cannot find class named 'details::PODptr'
+Cannot find class named 'details::PODptr'
+
+Attempts to avoid this with "using boost::details::PODptr;" have so far failed.
+
+]
+
+[xinclude autodoc.xml] [/ Boost.Pool Reference section, using Doxygen reference documentation.]
+
+
+[/section:pool Introduction/Overview]
+
+[section:appendices Appendices]
+
+[section:history Appendix A: History]
+
+[h4 Version 2.0.0, January 11, 2011]
+
+['Documentation and testing revision]
+
+[*Features:]
+
+* Fix issues
+[@https://svn.boost.org/trac/boost/ticket/1252 1252],
+[@https://svn.boost.org/trac/boost/ticket/4960 4960],
+[@https://svn.boost.org/trac/boost/ticket/5526 5526],
+[@https://svn.boost.org/trac/boost/ticket/5700 5700],
+[@https://svn.boost.org/trac/boost/ticket/2696 2696].
+
+* Documentation converted and rewritten and revised
+by Paul A. Bristow using Quickbook, Doxygen, for html and pdf,
+based on Stephen Cleary's html version, Revised 05 December, 2006.
+
+This used Opera 11.0, and `html_to_quickbook.css` as a special display format.
+On the Opera full taskbar (chose ['enable full taskbar]) View, Style, Manage modes, Display.
+
+Choose ['add `\boost-sandbox\boost_docs\trunk\doc\style\html\conversion\html_to_quickbook.css`]
+to My Style Sheet. Html pages are now displayed as Quickbook and can be copied and pasted
+into quickbook files using your favored text editor for Quickbook.
+
+[h4 Version 1.0.0, January 1, 2000]
+
+['First release]
+
+[endsect] [/section:history Appendix A: History]
+
+[section:faq Appendix B: FAQ]
+
+[h5 Why should I use Pool?]
+
+Using Pools gives you more control over how memory is used in your program.
+For example, you could have a situation where you want to allocate a
+bunch of small objects at one point, and then reach a point in your program
+where none of them are needed any more. Using pool interfaces,
+you can choose to run their destructors or just drop them off into oblivion;
+the pool interface will guarantee that there are no system memory leaks.
+
+[h5 When should I use Pool?]
+
+Pools are generally used when there is a lot of allocation and deallocation of small objects.
+Another common usage is the situation above, where many objects may be dropped out of memory.
+
+In general, use Pools when you need a more efficient way to do unusual memory control.
+
+[endsect] [/section:faq Appendix B: FAQ]
+
+[section:acknowledgements Appendix C: Acknowledgements]
+
+Many, many thanks to the Boost peers, notably Jeff Garland, Beman Dawes, Ed Brey,
+Gary Powell, Peter Dimov, and Jens Maurer for providing helpful suggestions!
+
+[endsect] [/section:acknowledgements Appendix C: Acknowledgements]
+
+[section:tests Appendix D: Tests]
+
+See folder `boost/libs/pool/test/`.
+
+[endsect] [/section:tests Appendix D: Tests]
+
+[section:tickets Appendix E: Tickets]
+
+Report and view bugs and features by adding a ticket at [@https://svn.boost.org/trac/boost Boost.Trac].
+
+Existing open tickets for this library alone can be viewed
+[@https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=pool&col=id&col=summary&col=status&col=owner&col=type&col=milestone&order=priority here].
+Existing tickets for this library - including closed ones - can be viewed
+[@https://svn.boost.org/trac/boost/query?status=assigned&status=closed&status=new&status=reopened&component=pool&col=id&col=summary&col=status&col=owner&col=type&col=milestone&order=priority here].
+
+[endsect] [/section:tickets Appendix E: Tickets]
+
+[section:implementations Appendix F: Other Implementations]
+
+Pool allocators are found in many programming languages, and in many variations.
+The beginnings of many implementations may be found in common programming literature;
+some of these are given below. Note that none of these are complete implementations of a Pool;
+most of these leave some aspects of a Pool as a user exercise. However, in each case,
+even though some aspects are missing, these examples use the same underlying concept
+of a Simple Segregated Storage described in this document.
+
+# ['The C++ Programming Language], 3rd ed., by Bjarne Stroustrup, Section 19.4.2. Missing aspects:
+ * Not portable.
+ * Cannot handle allocations of arbitrary numbers of objects (this was left as an exercise).
+ * Not thread-safe.
+ * Suffers from the static initialization problem.
+# ['MicroC/OS-II: The Real-Time Kernel], by Jean J. Labrosse, Chapter 7 and Appendix B.04.
+ * An example of the Simple Segregated Storage scheme at work in the internals of an actual OS.
+ * Missing aspects:
+ * Not portable (though this is OK, since it's part of its own OS).
+ * Cannot handle allocations of arbitrary numbers of blocks (which is also OK, since this feature is not needed).
+ * Requires non-intuitive user code to create and destroy the Pool.
+# ['Efficient C++: Performance Programming Techniques], by Dov Bulka and David Mayhew, Chapters 6 and 7.
+ * This is a good example of iteratively developing a Pool solutio.
+ * however, their premise (that the system-supplied allocation mechanism is hopelessly inefficient) is flawed on every system I've tested on.
+ * Run their timings on your system before you accept their conclusions.
+ * Missing aspect: Requires non-intuitive user code to create and destroy the Pool.
+# ['Advanced C++: Programming Styles and Idioms], by James O. Coplien, Section 3.6.
+ * Has examples of both static and dynamic pooling, but missing aspects:
+ * Not thread-safe.
+ * The static pooling example is not portable.
+
+[endsect] [/section:implementations Appendix F: Other Implementations]
+
+[section:references Appendix G: References]
+
+# [#ref1] Doug Lea, A Memory Allocator. See [@http://gee.cs.oswego.edu/dl/html/malloc.html http://gee.cs.oswego.edu/dl/html/malloc.html]
+# [#ref2]Paul R. Wilson, Mark S. Johnstone, Michael Neely, and David Boles,
+['Dynamic Storage Allocation: A Survey and Critical Review]
+in International Workshop on Memory Management, September 1995, pg. 28, 36.
+See [@ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps]
+
+[endsect] [/section:references Appendix G: references]
+
+[section:todo Appendix H: Future plans]
+
+Another pool interface will be written: a base class for per-class pool allocation.
+
+This "pool_base" interface will be Singleton Usage with Exceptions,
+and built on the singleton_pool interface.
+
+[endsect] [/section:todo Appendix G: Future plans]
+
+[endsect] [/section:appendices Appendices]
+
+[section:indexes Indexes]
+
+[include auto_index_helpers.qbk]
+
+[named_index function_name Function Index]
+[named_index class_name Class Index]
+[named_index typedef_name Typedef Index]
+[index]
+
+[endsect] [/section:indexes Indexes]

Added: sandbox/pool/libs/pool/example/sys_allocator.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/example/sys_allocator.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,109 @@
+// Copyright (C) 2000 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_SYS_ALLOCATOR_H
+#define BOOST_SYS_ALLOCATOR_H
+
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4100)
+#endif
+
+// Symbols: malloc_allocator, new_delete_allocator
+
+#include <cstddef>
+#include <cstdlib>
+#include <boost/limits.hpp>
+#include <new>
+
+template <typename T>
+struct malloc_allocator
+{
+ typedef T * pointer;
+ typedef const T * const_pointer;
+ typedef T & reference;
+ typedef const T & const_reference;
+ typedef T value_type;
+
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ template <typename U>
+ struct rebind
+ {
+ typedef malloc_allocator<U> other;
+ };
+
+ static pointer address(reference r) { return &r; }
+ static const_pointer address(const_reference r) { return &r; }
+ static pointer allocate(const size_type n, const void* = 0)
+ {
+ const pointer ret = (pointer) std::malloc(n * sizeof(T));
+ if (ret == 0)
+ throw std::bad_alloc();
+ return ret;
+ }
+ static void deallocate(const pointer p, const size_type)
+ { std::free(p); }
+ static size_type max_size() { return (std::numeric_limits<size_type>::max)(); }
+
+ bool operator==(const malloc_allocator &) const { return true; }
+ bool operator!=(const malloc_allocator &) const { return false; }
+
+ malloc_allocator() { }
+ template <typename U>
+ malloc_allocator(const malloc_allocator<U> &) { }
+
+ static void construct(const pointer p, const_reference t)
+ { new ((void *) p) T(t); }
+ static void destroy(const pointer p)
+ { p->~T(); }
+};
+
+template <typename T>
+struct new_delete_allocator
+{
+ typedef T * pointer;
+ typedef const T * const_pointer;
+ typedef T & reference;
+ typedef const T & const_reference;
+ typedef T value_type;
+
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ template <typename U>
+ struct rebind
+ {
+ typedef new_delete_allocator<U> other;
+ };
+
+ static pointer address(reference r) { return &r; }
+ static const_pointer address(const_reference r) { return &r; }
+ static pointer allocate(const size_type n, const void* = 0)
+ { return (pointer) new char[n * sizeof(T)]; }
+ static void deallocate(const pointer p, const size_type)
+ { delete [] p; }
+ static size_type max_size() { return (std::numeric_limits<size_type>::max)(); }
+
+ bool operator==(const new_delete_allocator &) const { return true; }
+ bool operator!=(const new_delete_allocator &) const { return false; }
+
+ new_delete_allocator() { }
+ template <typename U>
+ new_delete_allocator(const new_delete_allocator<U> &) { }
+
+ static void construct(const pointer p, const_reference t)
+ { new ((void *) p) T(t); }
+ static void destroy(const pointer p)
+ { p->~T(); }
+};
+
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
+#endif

Added: sandbox/pool/libs/pool/example/time_pool_alloc.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/example/time_pool_alloc.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,558 @@
+// Copyright (C) 2000, 2001 Stephen Cleary
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/pool/pool_alloc.hpp>
+#include <boost/pool/object_pool.hpp>
+
+#include <iostream>
+#include <vector>
+#include <list>
+#include <set>
+
+#include <ctime>
+#include <cerrno>
+
+#include "sys_allocator.hpp"
+
+unsigned long num_ints;
+unsigned long num_loops = 10;
+unsigned l;
+
+template <unsigned N>
+struct larger_structure
+{
+ char data[N];
+};
+
+unsigned test_number;
+
+template <unsigned N>
+static void timing_test_alloc_larger()
+{
+ typedef boost::fast_pool_allocator<larger_structure<N>,
+ boost::default_user_allocator_new_delete,
+ boost::details::pool::null_mutex> alloc;
+ typedef boost::fast_pool_allocator<larger_structure<N> > alloc_sync;
+
+ double end[1][6];
+ std::clock_t start;
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::allocator<larger_structure<N> > a;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ a.deallocate(a.allocate(1), 1);
+ }
+ end[0][0] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ std::free(std::malloc(sizeof(larger_structure<N>)));
+ }
+ end[0][1] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ delete new (std::nothrow) larger_structure<N>;
+ }
+ end[0][2] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ alloc::deallocate(alloc::allocate());
+ }
+ end[0][3] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ alloc_sync::deallocate(alloc_sync::allocate());
+ }
+ end[0][4] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ boost::pool<> p(sizeof(larger_structure<N>));
+ for (unsigned long i = 0; i < num_ints; ++i)
+ {
+ void * const t = p.malloc();
+ if (t != 0)
+ p.free(t);
+ }
+ }
+ end[0][5] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ std::cout << "Test " << test_number++ << ": Alloc & Dealloc " << num_ints << " structures of size " << sizeof(larger_structure<N>) << ":" << std::endl;
+ std::cout << " std::allocator: " << end[0][0] << " seconds" << std::endl;
+ std::cout << " malloc/free: " << end[0][1] << " seconds" << std::endl;
+ std::cout << " new/delete: " << end[0][2] << " seconds" << std::endl;
+ std::cout << " Pool Alloc: " << end[0][3] << " seconds" << std::endl;
+ std::cout << " Pool /w Sync: " << end[0][4] << " seconds" << std::endl;
+ std::cout << " Pool: " << end[0][5] << " seconds" << std::endl;
+}
+
+static void timing_test_alloc()
+{
+ typedef boost::fast_pool_allocator<int,
+ boost::default_user_allocator_new_delete,
+ boost::details::pool::null_mutex> alloc;
+ typedef boost::fast_pool_allocator<int> alloc_sync;
+
+ double end[2][6];
+ std::clock_t start;
+
+ int ** p = new int*[num_ints];
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::allocator<int> a;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ a.deallocate(a.allocate(1), 1);
+ }
+ end[0][0] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ std::free(std::malloc(sizeof(int)));
+ }
+ end[0][1] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ delete new (std::nothrow) int;
+ }
+ end[0][2] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ alloc::deallocate(alloc::allocate());
+ }
+ end[0][3] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ alloc_sync::deallocate(alloc_sync::allocate());
+ }
+ end[0][4] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ boost::pool<> p2(sizeof(int));
+ for (unsigned long i = 0; i < num_ints; ++i)
+ {
+ void * const t = p2.malloc();
+ if (t != 0)
+ p2.free(t);
+ }
+ }
+ end[0][5] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::allocator<int> a;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ p[i] = a.allocate(1);
+ for (unsigned long i = 0; i < num_ints; ++i)
+ a.deallocate(p[i], 1);
+ }
+ end[1][0] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ p[i] = (int *) std::malloc(sizeof(int));
+ for (unsigned long i = 0; i < num_ints; ++i)
+ std::free(p[i]);
+ }
+ end[1][1] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ p[i] = new (std::nothrow) int;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ delete p[i];
+ }
+ end[1][2] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ p[i] = alloc::allocate();
+ for (unsigned long i = 0; i < num_ints; ++i)
+ alloc::deallocate(p[i]);
+ }
+ end[1][3] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ for (unsigned long i = 0; i < num_ints; ++i)
+ p[i] = alloc_sync::allocate();
+ for (unsigned long i = 0; i < num_ints; ++i)
+ alloc_sync::deallocate(p[i]);
+ }
+ end[1][4] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ boost::pool<> pl(sizeof(int));
+ for (unsigned long i = 0; i < num_ints; ++i)
+ p[i] = reinterpret_cast<int *>(pl.malloc());
+ for (unsigned long i = 0; i < num_ints; ++i)
+ if (p[i] != 0)
+ pl.free(p[i]);
+ }
+ end[1][5] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ delete [] p;
+
+ std::cout << "Test 3: Alloc & Dealloc " << num_ints << " ints:" << std::endl;
+ std::cout << " std::allocator: " << end[0][0] << " seconds" << std::endl;
+ std::cout << " malloc/free: " << end[0][1] << " seconds" << std::endl;
+ std::cout << " new/delete: " << end[0][2] << " seconds" << std::endl;
+ std::cout << " Pool Alloc: " << end[0][3] << " seconds" << std::endl;
+ std::cout << " Pool /w Sync: " << end[0][4] << " seconds" << std::endl;
+ std::cout << " Pool: " << end[0][5] << " seconds" << std::endl;
+
+ std::cout << "Test 4: Alloc " << num_ints << " ints & Dealloc " << num_ints << " ints:" << std::endl;
+ std::cout << " std::allocator: " << end[1][0] << " seconds" << std::endl;
+ std::cout << " malloc/free: " << end[1][1] << " seconds" << std::endl;
+ std::cout << " new/delete: " << end[1][2] << " seconds" << std::endl;
+ std::cout << " Pool Alloc: " << end[1][3] << " seconds" << std::endl;
+ std::cout << " Pool /w Sync: " << end[1][4] << " seconds" << std::endl;
+ std::cout << " Pool: " << end[1][5] << " seconds" << std::endl;
+}
+
+static void timing_test_containers()
+{
+ typedef boost::pool_allocator<int,
+ boost::default_user_allocator_new_delete,
+ boost::details::pool::null_mutex> alloc;
+ typedef boost::pool_allocator<int> alloc_sync;
+ typedef boost::fast_pool_allocator<int,
+ boost::default_user_allocator_new_delete,
+ boost::details::pool::null_mutex> fast_alloc;
+ typedef boost::fast_pool_allocator<int> fast_alloc_sync;
+
+ double end[3][5];
+ std::clock_t start;
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::vector<int, std::allocator<int> > x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.push_back(0);
+ }
+ end[0][0] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::vector<int, malloc_allocator<int> > x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.push_back(0);
+ }
+ end[0][1] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::vector<int, new_delete_allocator<int> > x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.push_back(0);
+ }
+ end[0][2] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::vector<int, alloc> x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.push_back(0);
+ }
+ end[0][3] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::vector<int, alloc_sync> x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.push_back(0);
+ }
+ end[0][4] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::set<int, std::less<int>, std::allocator<int> > x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.insert(0);
+ }
+ end[1][0] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::set<int, std::less<int>, malloc_allocator<int> > x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.insert(0);
+ }
+ end[1][1] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::set<int, std::less<int>, new_delete_allocator<int> > x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.insert(0);
+ }
+ end[1][2] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::set<int, std::less<int>, fast_alloc> x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.insert(0);
+ }
+ end[1][3] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::set<int, std::less<int>, fast_alloc_sync> x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.insert(0);
+ }
+ end[1][4] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::list<int, std::allocator<int> > x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.push_back(0);
+ }
+ end[2][0] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::list<int, malloc_allocator<int> > x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.push_back(0);
+ }
+ end[2][1] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::list<int, new_delete_allocator<int> > x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.push_back(0);
+ }
+ end[2][2] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::list<int, fast_alloc> x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.push_back(0);
+ }
+ end[2][3] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ start = std::clock();
+ for(l = 0; l < num_loops; ++l)
+ {
+ std::list<int, fast_alloc_sync> x;
+ for (unsigned long i = 0; i < num_ints; ++i)
+ x.push_back(0);
+ }
+ end[2][4] = (std::clock() - start) / ((double) CLOCKS_PER_SEC);
+
+ std::cout << "Test 0: Insertion & deletion of " << num_ints << " ints in a vector:" << std::endl;
+ std::cout << " std::allocator: " << end[0][0] << " seconds" << std::endl;
+ std::cout << " malloc/free: " << end[0][1] << " seconds" << std::endl;
+ std::cout << " new/delete: " << end[0][2] << " seconds" << std::endl;
+ std::cout << " Pool Alloc: " << end[0][3] << " seconds" << std::endl;
+ std::cout << " Pool /w Sync: " << end[0][4] << " seconds" << std::endl;
+ std::cout << " Pool: not possible" << std::endl;
+ std::cout << "Test 1: Insertion & deletion of " << num_ints << " ints in a set:" << std::endl;
+ std::cout << " std::allocator: " << end[1][0] << " seconds" << std::endl;
+ std::cout << " malloc/free: " << end[1][1] << " seconds" << std::endl;
+ std::cout << " new/delete: " << end[1][2] << " seconds" << std::endl;
+ std::cout << " Pool Alloc: " << end[1][3] << " seconds" << std::endl;
+ std::cout << " Pool /w Sync: " << end[1][4] << " seconds" << std::endl;
+ std::cout << " Pool: not possible" << std::endl;
+ std::cout << "Test 2: Insertion & deletion of " << num_ints << " ints in a list:" << std::endl;
+ std::cout << " std::allocator: " << end[2][0] << " seconds" << std::endl;
+ std::cout << " malloc/free: " << end[2][1] << " seconds" << std::endl;
+ std::cout << " new/delete: " << end[2][2] << " seconds" << std::endl;
+ std::cout << " Pool Alloc: " << end[2][3] << " seconds" << std::endl;
+ std::cout << " Pool /w Sync: " << end[2][4] << " seconds" << std::endl;
+ std::cout << " Pool: not possible" << std::endl;
+}
+
+int main(int argc, char * argv[])
+{
+ if (argc != 1 && argc != 2)
+ {
+ std::cerr << "Usage: " << argv[0]
+ << " [number_of_ints_to_use_each_try]" << std::endl;
+ return 1;
+ }
+
+ errno = 0;
+
+ if (argc == 2)
+ {
+ num_ints = std::strtoul(argv[1], 0, 10);
+ if (errno != 0)
+ {
+ std::cerr << "Cannot convert number \"" << argv[1] << '"' << std::endl;
+ return 2;
+ }
+ }
+ else
+ num_ints = 700000;
+
+#ifndef _NDEBUG
+ num_ints /= 100;
+#endif
+
+ try
+ {
+ timing_test_containers();
+ timing_test_alloc();
+ test_number = 5;
+ timing_test_alloc_larger<64>();
+ test_number = 6;
+ timing_test_alloc_larger<256>();
+ test_number = 7;
+ timing_test_alloc_larger<4096>();
+ }
+ catch (const std::bad_alloc &)
+ {
+ std::cerr << "Timing tests ran out of memory; try again with a lower value for number of ints"
+ << " (current value is " << num_ints << ")" << std::endl;
+ return 3;
+ }
+ catch (const std::exception & e)
+ {
+ std::cerr << "Error: " << e.what() << std::endl;
+ return 4;
+ }
+ catch (...)
+ {
+ std::cerr << "Unknown error" << std::endl;
+ return 5;
+ }
+
+ return 0;
+}
+
+/*
+
+Output:
+
+MSVC 10.0 using mutli-threaded DLL
+
+ time_pool_alloc.cpp
+ Creating library J:\Cpp\pool\pool\Release\alloc_example.lib and object J:\Cpp\pool\pool\Release\alloc_example.exp
+ Generating code
+ Finished generating code
+ alloc_example.vcxproj -> J:\Cpp\pool\pool\Release\alloc_example.exe
+ Test 0: Insertion & deletion of 700000 ints in a vector:
+ std::allocator: 0.062 seconds
+ malloc/free: 0.078 seconds
+ new/delete: 0.078 seconds
+ Pool Alloc: 0.328 seconds
+ Pool /w Sync: 0.343 seconds
+ Pool: not possible
+ Test 1: Insertion & deletion of 700000 ints in a set:
+ std::allocator: 0.561 seconds
+ malloc/free: 0.546 seconds
+ new/delete: 0.562 seconds
+ Pool Alloc: 0.109 seconds
+ Pool /w Sync: 0.094 seconds
+ Pool: not possible
+ Test 2: Insertion & deletion of 700000 ints in a list:
+ std::allocator: 0.671 seconds
+ malloc/free: 0.67 seconds
+ new/delete: 0.671 seconds
+ Pool Alloc: 0.094 seconds
+ Pool /w Sync: 0.093 seconds
+ Pool: not possible
+ Test 3: Alloc & Dealloc 700000 ints:
+ std::allocator: 0.5 seconds
+ malloc/free: 0.468 seconds
+ new/delete: 0.592 seconds
+ Pool Alloc: 0.032 seconds
+ Pool /w Sync: 0.015 seconds
+ Pool: 0.016 seconds
+ Test 4: Alloc 700000 ints & Dealloc 700000 ints:
+ std::allocator: 0.593 seconds
+ malloc/free: 0.577 seconds
+ new/delete: 0.717 seconds
+ Pool Alloc: 0.032 seconds
+ Pool /w Sync: 0.031 seconds
+ Pool: 0.047 seconds
+ Test 5: Alloc & Dealloc 700000 structures of size 64:
+ std::allocator: 0.499 seconds
+ malloc/free: 0.483 seconds
+ new/delete: 0.624 seconds
+ Pool Alloc: 0.016 seconds
+ Pool /w Sync: 0.031 seconds
+ Pool: 0.016 seconds
+ Test 6: Alloc & Dealloc 700000 structures of size 256:
+ std::allocator: 0.499 seconds
+ malloc/free: 0.484 seconds
+ new/delete: 0.639 seconds
+ Pool Alloc: 0.016 seconds
+ Pool /w Sync: 0.015 seconds
+ Pool: 0.016 seconds
+ Test 7: Alloc & Dealloc 700000 structures of size 4096:
+ std::allocator: 0.515 seconds
+ malloc/free: 0.515 seconds
+ new/delete: 0.639 seconds
+ Pool Alloc: 0.031 seconds
+ Pool /w Sync: 0.016 seconds
+ Pool: 0.016 seconds
+
+*/
+
+
+

Added: sandbox/pool/libs/pool/index.html
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/index.html 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,13 @@
+<html>
+<head>
+<meta http-equiv="refresh" content="0; URL=doc/html/index.html">
+</head>
+<body>
+Automatic redirection failed, please go to
+doc/html/index.html.&nbsp;<hr>
+<p>© Copyright Beman Dawes, 2001</p>
+<p>Distributed under the Boost Software License, Version 1.0. (See accompanying
+file LICENSE_1_0.txt or copy
+at www.boost.org/LICENSE_1_0.txt)</p>
+</body>
+</html>

Added: sandbox/pool/libs/pool/test/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/Jamfile.v2 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,72 @@
+#~ Copyright Rene Rivera 2008
+#~ Distributed under the Boost Software License, Version 1.0.
+#~ (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+project
+ : requirements
+ <library>/boost/test//boost_test_exec_monitor/<link>static
+ <include>../../..
+ <define>BOOST_ALL_NO_LIB=1
+ <warnings>all
+ <toolset>gcc:<cxxflags>-Wextra
+ <toolset>gcc:<cxxflags>-Wshadow
+ <toolset>gcc:<warnings-as-errors>on
+ <toolset>gcc:<cxxflags>-Wno-long-long
+ <toolset>pathscale:<cxxflags>-Wno-long-long
+ <toolset>gcc:<cxxflags>-Wcast-align
+ <toolset>msvc:<warnings-as-errors>on
+ ;
+
+import testing ;
+
+run valgrind_config_check.cpp : : : <testing.launcher>"valgrind --error-exitcode=1" ;
+explicit valgrind_config_check ;
+
+test-suite pool :
+ [ run test_simple_seg_storage.cpp ]
+ [ run test_pool_alloc.cpp ]
+ [ run pool_msvc_compiler_bug_test.cpp ]
+ [ run test_msvc_mem_leak_detect.cpp ]
+ [ run test_bug_3349.cpp ]
+ [ run test_bug_4960.cpp ]
+ [ run test_bug_1252.cpp ]
+ [ run test_bug_2696.cpp ]
+ [ run test_bug_5526.cpp ]
+ [ run test_threading.cpp : : : <threading>multi <library>/boost/thread//boost_thread <toolset>gcc:<cxxflags>-Wno-attributes <toolset>gcc:<cxxflags>-Wno-missing-field-initializers ]
+ [ run ../example/time_pool_alloc.cpp ]
+ [ compile test_poisoned_macros.cpp ]
+
+#
+# The following tests test Boost.Pool's code with valgrind only if it's available:
+#
+ [ run test_simple_seg_storage.cpp : : : [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_simple_seg_storage_valgrind ]
+ [ run test_pool_alloc.cpp : : : [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_pool_alloc_valgrind ]
+ [ run pool_msvc_compiler_bug_test.cpp : : : [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : pool_msvc_compiler_bug_test_valgrind ]
+ [ run test_msvc_mem_leak_detect.cpp : : : [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_msvc_mem_leak_detect_valgrind ]
+ [ run test_bug_3349.cpp : : : [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_bug_3349_valgrind ]
+ [ run test_bug_4960.cpp : : : [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_bug_4960_valgrind ]
+ [ run test_bug_1252.cpp : : : [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_bug_1252_valgrind ]
+ [ run test_bug_2696.cpp : : : [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_bug_2696_valgrind ]
+ [ run test_bug_5526.cpp : : : [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_bug_5526_valgrind ]
+ [ run test_threading.cpp : : : <threading>multi <library>/boost/thread//boost_thread <toolset>gcc:<cxxflags>-Wno-attributes <toolset>gcc:<cxxflags>-Wno-missing-field-initializers [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_threading_valgrind ]
+
+#
+# The following tests test Boost.Pool's code with valgrind if it's available, and in any case with BOOST_POOL_VALGRIND defined
+# which has the effect of disabling any actual memory pooling:
+#
+ [ run test_simple_seg_storage.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_simple_seg_storage_valgrind_2 ]
+ [ run test_pool_alloc.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_pool_alloc_valgrind_2 ]
+ [ run pool_msvc_compiler_bug_test.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : pool_msvc_compiler_bug_test_valgrind_2 ]
+ [ run test_msvc_mem_leak_detect.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_msvc_mem_leak_detect_valgrind_2 ]
+ [ run test_bug_3349.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_bug_3349_valgrind_2 ]
+ [ run test_bug_4960.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_bug_4960_valgrind_2 ]
+ [ run test_bug_1252.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_bug_1252_valgrind_2 ]
+ [ run test_bug_2696.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_bug_2696_valgrind_2 ]
+ [ run test_bug_5526.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_bug_5526_valgrind_2 ]
+ [ run test_threading.cpp : : : <threading>multi <library>/boost/thread//boost_thread <define>BOOST_POOL_VALGRIND=1 <toolset>gcc:<cxxflags>-Wno-attributes <toolset>gcc:<cxxflags>-Wno-missing-field-initializers [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] : test_threading_valgrind_2 ]
+ [ run-fail test_valgrind_fail_1.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] ]
+ [ run-fail test_valgrind_fail_2.cpp : : : <define>BOOST_POOL_VALGRIND=1 [ check-target-builds valgrind_config_check : <testing.launcher>"valgrind --error-exitcode=1" : <build>no ] ]
+ ;
+
+

Added: sandbox/pool/libs/pool/test/pool_msvc_compiler_bug_test.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/pool_msvc_compiler_bug_test.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,40 @@
+// Copyright (C) 2008 Jurko Gospodnetic
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+// This tests whether the Boost Pool library managed to get a regression and
+// hit the MSVC 'variables exported to global namespace' bug again. This bug
+// affects at least MSVC 7.1 & 8.0 releases and has been fixed in the MSVC 9.0
+// release.
+//
+// If the bug exists this test should fail to compile, complaining about an
+// ambiguous CRITICAL_SECTION symbol. The bug got fixed by making the boost/
+// /pool/detail/mutex.hpp header reference all Windows API constants using their
+// fully qualified names.
+//
+// To see the bug in action without using any Boost libraries run the
+// following program:
+//
+// namespace One { class Brick; }
+// namespace Two
+// {
+// using namespace One;
+// template <class TinyTemplateParam> class TinyClass {};
+// }
+// class Brick {};
+// Brick brick;
+// int main() {}
+// (17.04.2008.) (Jurko)
+
+
+#include "boost/archive/text_iarchive.hpp"
+#include "boost/pool/detail/mutex.hpp"
+// Including "boost/pool/pool_alloc.hpp" instead of mutex.hpp should work as
+// well.
+
+int main()
+{
+}

Added: sandbox/pool/libs/pool/test/test_bug_1252.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_bug_1252.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,66 @@
+/* Copyright (C) 2011 John Maddock
+*
+* Use, modification and distribution is subject to the
+* Boost Software License, Version 1.0. (See accompanying
+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+// Test of bug #1252 (https://svn.boost.org/trac/boost/ticket/1252)
+
+#include <boost/pool/pool.hpp>
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/type_traits/alignment_of.hpp>
+#include <cstring>
+
+struct limited_allocator_new_delete
+{
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ static char * malloc BOOST_PREVENT_MACRO_SUBSTITUTION(const size_type bytes)
+ {
+ if(bytes > 1510 * 32)
+ return 0;
+ return new (std::nothrow) char[bytes];
+ }
+ static void free BOOST_PREVENT_MACRO_SUBSTITUTION(char * const block)
+ {
+ delete [] block;
+ }
+};
+
+template <class T>
+void test_alignment(T)
+{
+ unsigned align = boost::alignment_of<T>::value;
+ boost::pool<> p(sizeof(T));
+ unsigned limit = 100000;
+ for(unsigned i = 0; i < limit; ++i)
+ {
+ void* ptr = (p.malloc)();
+ BOOST_TEST(reinterpret_cast<std::size_t>(ptr) % align == 0);
+ // Trample over the memory just to be sure the allocated block is big enough,
+ // if it's not, we'll trample over the next block as well (and our internal housekeeping).
+ std::memset(ptr, 0xff, sizeof(T));
+ }
+}
+
+
+int main()
+{
+ boost::pool<limited_allocator_new_delete> po(1501);
+ void* p = (po.malloc)();
+ BOOST_TEST(p != 0);
+
+ test_alignment(char(0));
+ test_alignment(short(0));
+ test_alignment(int(0));
+ test_alignment(long(0));
+ test_alignment(double(0));
+ test_alignment(float(0));
+ test_alignment((long double)(0));
+#ifndef BOOST_NO_LONG_LONG
+ test_alignment((long long)(0));
+#endif
+ return boost::report_errors();
+}

Added: sandbox/pool/libs/pool/test/test_bug_2696.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_bug_2696.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,66 @@
+/* Copyright (C) 2011 John Maddock
+*
+* Use, modification and distribution is subject to the
+* Boost Software License, Version 1.0. (See accompanying
+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+// Test of bug #2656 (https://svn.boost.org/trac/boost/ticket/2656)
+
+#include <boost/pool/pool.hpp>
+#include <boost/detail/lightweight_test.hpp>
+
+struct limited_allocator_new_delete
+{
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ static char * malloc BOOST_PREVENT_MACRO_SUBSTITUTION(const size_type bytes)
+ {
+#ifndef BOOST_POOL_VALGRIND
+ static const unsigned max_size = sizeof(void*) * 40 + boost::math::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type);
+#else
+ static const unsigned max_size = sizeof(void*) * 40;
+#endif
+ if(bytes > max_size)
+ return 0;
+ return new (std::nothrow) char[bytes];
+ }
+ static void free BOOST_PREVENT_MACRO_SUBSTITUTION(char * const block)
+ {
+ delete [] block;
+ }
+};
+
+int main()
+{
+ static const unsigned alloc_size = sizeof(void*);
+ boost::pool<limited_allocator_new_delete> p1(alloc_size, 10, 40);
+ for(int i = 1; i <= 40; ++i)
+ BOOST_TEST((p1.ordered_malloc)(i));
+ BOOST_TEST(p1.ordered_malloc(42) == 0);
+ //
+ // If the largest block is 40, and we start with 10, we get 10+20+40 elements before
+ // we actually run out of memory:
+ //
+ boost::pool<limited_allocator_new_delete> p2(alloc_size, 10, 40);
+ for(int i = 1; i <= 70; ++i)
+ BOOST_TEST((p2.malloc)());
+ boost::pool<limited_allocator_new_delete> p2b(alloc_size, 10, 40);
+ for(int i = 1; i <= 100; ++i)
+ BOOST_TEST((p2b.ordered_malloc)());
+ //
+ // Try again with no explicit upper limit:
+ //
+ boost::pool<limited_allocator_new_delete> p3(alloc_size);
+ for(int i = 1; i <= 40; ++i)
+ BOOST_TEST((p3.ordered_malloc)(i));
+ BOOST_TEST(p3.ordered_malloc(42) == 0);
+ boost::pool<limited_allocator_new_delete> p4(alloc_size, 10);
+ for(int i = 1; i <= 100; ++i)
+ BOOST_TEST((p4.ordered_malloc)());
+ boost::pool<limited_allocator_new_delete> p5(alloc_size, 10);
+ for(int i = 1; i <= 100; ++i)
+ BOOST_TEST((p5.malloc)());
+ return boost::report_errors();
+}

Added: sandbox/pool/libs/pool/test/test_bug_3349.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_bug_3349.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,26 @@
+/* Copyright (C) 2011 Kwan Ting Chan
+ * Based from bug report submitted by Xiaohan Wang
+ *
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+// Test of bug #3349 (https://svn.boost.org/trac/boost/ticket/3349)
+
+#include <boost/pool/pool.hpp>
+
+#include <boost/detail/lightweight_test.hpp>
+
+int main()
+{
+ boost::pool<> p(256, 4);
+
+ void* pBlock1 = p.ordered_malloc( 1 );
+ void* pBlock2 = p.ordered_malloc( 4 );
+ (void)pBlock2; // warning suppression
+
+ p.ordered_free( pBlock1 );
+
+ BOOST_TEST(p.release_memory());
+}

Added: sandbox/pool/libs/pool/test/test_bug_4960.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_bug_4960.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,45 @@
+/* Copyright (C) 2011 Kwan Ting Chan
+ * Based from bug report submitted by Xiaohan Wang
+ *
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+// Test of bug #4960 (https://svn.boost.org/trac/boost/ticket/4960)
+
+#include <boost/pool/pool_alloc.hpp>
+#include <vector>
+#include <iostream>
+
+typedef std::vector<int, boost::pool_allocator<int> > EventVector;
+typedef std::vector<EventVector, boost::pool_allocator<EventVector> > IndexVector;
+
+int main()
+{
+ IndexVector iv;
+ int limit = 100;
+ for (int i = 0; i < limit; ++i)
+ {
+ iv.push_back(EventVector());
+ for(int j = 0; j < limit; ++j)
+ iv.back().push_back(j);
+ }
+
+ boost::pool<boost::default_user_allocator_new_delete> po(4);
+ for(int i = 0; i < limit; ++i)
+ {
+ void* p = po.ordered_malloc(0);
+ po.ordered_free(p, 0);
+ }
+
+ boost::pool_allocator<int> al;
+ for(int i = 0; i < limit; ++i)
+ {
+ int* p = al.allocate(0);
+ al.deallocate(p, 0);
+ }
+
+ std::cout << "it works\n";
+ return 0;
+}

Added: sandbox/pool/libs/pool/test/test_bug_5526.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_bug_5526.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,35 @@
+/* Copyright (C) 2011 John Maddock
+*
+* Use, modification and distribution is subject to the
+* Boost Software License, Version 1.0. (See accompanying
+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+// Test of bug #2656 (https://svn.boost.org/trac/boost/ticket/2526)
+
+#include <boost/pool/pool.hpp>
+#include <boost/pool/singleton_pool.hpp>
+#include <boost/assert.hpp>
+
+struct bad
+{
+ bad()
+ {
+ buf = static_cast<int*>(boost::singleton_pool<int, sizeof(int)>::malloc());
+ *buf = 0x1234;
+ }
+ ~bad()
+ {
+ BOOST_ASSERT(*buf == 0x1234);
+ boost::singleton_pool<int, sizeof(int)>::free(buf);
+ }
+ int* buf;
+};
+
+std::auto_ptr<bad> aptr;
+
+int main()
+{
+ aptr.reset(new bad());
+ return 0;
+}

Added: sandbox/pool/libs/pool/test/test_msvc_mem_leak_detect.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_msvc_mem_leak_detect.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,50 @@
+/* Copyright (C) 2011 Kwan Ting Chan
+ *
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+// Test of bug #4346 (https://svn.boost.org/trac/boost/ticket/4346)
+
+#ifdef _MSC_VER
+#define _CRTDBG_MAP_ALLOC
+#include <stdlib.h>
+#include <crtdbg.h>
+#endif
+
+#include <boost/pool/poolfwd.hpp>
+#include <boost/pool/simple_segregated_storage.hpp>
+#include <boost/pool/pool.hpp>
+#include <boost/pool/pool_alloc.hpp>
+#include <boost/pool/singleton_pool.hpp>
+#include <boost/pool/object_pool.hpp>
+
+#include <vector>
+
+struct Foo {};
+
+int main()
+{
+ {
+ boost::pool<> p(sizeof(int));
+ (p.malloc)();
+ }
+
+ {
+ boost::object_pool<Foo> p;
+ (p.malloc)();
+ }
+
+ {
+ (boost::singleton_pool<Foo, sizeof(int)>::malloc)();
+ }
+ boost::singleton_pool<Foo, sizeof(int)>::purge_memory();
+
+ {
+ std::vector<int, boost::pool_allocator<int> > v;
+ v.push_back(8);
+ }
+ boost::singleton_pool<boost::pool_allocator_tag,
+ sizeof(int)>::release_memory();
+}

Added: sandbox/pool/libs/pool/test/test_poisoned_macros.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_poisoned_macros.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,43 @@
+/* Copyright (C) 2011 John Maddock
+*
+* Use, modification and distribution is subject to the
+* Boost Software License, Version 1.0. (See accompanying
+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+//
+// Verify that if malloc/free are macros that everything still works OK:
+//
+
+#include <functional>
+#include <new>
+#include <cstddef>
+#include <cstdlib>
+#include <exception>
+#include <algorithm>
+#include <boost/limits.hpp>
+#include <iostream>
+#include <locale>
+
+#define malloc(x) undefined_poisoned_symbol
+#define free(x) undefined_poisoned_symbol
+
+#include <boost/pool/pool.hpp>
+#include <boost/pool/object_pool.hpp>
+#include <boost/pool/pool_alloc.hpp>
+#include <boost/pool/singleton_pool.hpp>
+
+template class boost::object_pool<int, boost::default_user_allocator_new_delete>;
+template class boost::object_pool<int, boost::default_user_allocator_malloc_free>;
+
+template class boost::pool<boost::default_user_allocator_new_delete>;
+template class boost::pool<boost::default_user_allocator_malloc_free>;
+
+template class boost::pool_allocator<int, boost::default_user_allocator_new_delete>;
+template class boost::pool_allocator<int, boost::default_user_allocator_malloc_free>;
+template class boost::fast_pool_allocator<int, boost::default_user_allocator_new_delete>;
+template class boost::fast_pool_allocator<int, boost::default_user_allocator_malloc_free>;
+
+template class boost::simple_segregated_storage<unsigned>;
+
+template class boost::singleton_pool<int, 32>;

Added: sandbox/pool/libs/pool/test/test_pool_alloc.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_pool_alloc.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,290 @@
+/* Copyright (C) 2000, 2001 Stephen Cleary
+ * Copyright (C) 2011 Kwan Ting Chan
+ *
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+#include <boost/pool/pool_alloc.hpp>
+#include <boost/pool/object_pool.hpp>
+
+#include <boost/detail/lightweight_test.hpp>
+
+#include <algorithm>
+#include <deque>
+#include <list>
+#include <set>
+#include <stdexcept>
+#include <vector>
+
+#include <cstdlib>
+#include <ctime>
+
+// Each "tester" object below checks into and out of the "cdtor_checker",
+// which will check for any problems related to the construction/destruction of
+// "tester" objects.
+class cdtor_checker
+{
+private:
+ // Each constructed object registers its "this" pointer into "objs"
+ std::set<void*> objs;
+
+public:
+ // True iff all objects that have checked in have checked out
+ bool ok() const { return objs.empty(); }
+
+ ~cdtor_checker()
+ {
+ BOOST_TEST(ok());
+ }
+
+ void check_in(void * const This)
+ {
+ BOOST_TEST(objs.find(This) == objs.end());
+ objs.insert(This);
+ }
+
+ void check_out(void * const This)
+ {
+ BOOST_TEST(objs.find(This) != objs.end());
+ objs.erase(This);
+ }
+};
+static cdtor_checker mem;
+
+struct tester
+{
+ tester(bool throw_except = false)
+ {
+ if(throw_except)
+ {
+ throw std::logic_error("Deliberate constructor exception");
+ }
+
+ mem.check_in(this);
+ }
+
+ tester(const tester &)
+ {
+ mem.check_in(this);
+ }
+
+ ~tester()
+ {
+ mem.check_out(this);
+ }
+};
+
+// This is a wrapper around a UserAllocator. It just registers alloc/dealloc
+// to/from the system memory. It's used to make sure pool's are allocating
+// and deallocating system memory properly.
+// Do NOT use this class with static or singleton pools.
+template <typename UserAllocator>
+struct TrackAlloc
+{
+ typedef typename UserAllocator::size_type size_type;
+ typedef typename UserAllocator::difference_type difference_type;
+
+ static std::set<char *> allocated_blocks;
+
+ static char * malloc(const size_type bytes)
+ {
+ char * const ret = UserAllocator::malloc(bytes);
+ allocated_blocks.insert(ret);
+ return ret;
+ }
+
+ static void free(char * const block)
+ {
+ BOOST_TEST(allocated_blocks.find(block) != allocated_blocks.end());
+ allocated_blocks.erase(block);
+ UserAllocator::free(block);
+ }
+
+ static bool ok()
+ {
+ return allocated_blocks.empty();
+ }
+};
+template <typename UserAllocator>
+std::set<char *> TrackAlloc<UserAllocator>::allocated_blocks;
+
+typedef TrackAlloc<boost::default_user_allocator_new_delete> track_alloc;
+
+void test()
+{
+ {
+ // Do nothing pool
+ boost::object_pool<tester> pool;
+ }
+
+ {
+ // Construct several tester objects. Don't delete them (i.e.,
+ // test pool's garbage collection).
+ boost::object_pool<tester> pool;
+ for(int i=0; i < 10; ++i)
+ {
+ pool.construct();
+ }
+ }
+
+ {
+ // Construct several tester objects. Delete some of them.
+ boost::object_pool<tester> pool;
+ std::vector<tester *> v;
+ for(int i=0; i < 10; ++i)
+ {
+ v.push_back(pool.construct());
+ }
+ std::random_shuffle(v.begin(), v.end());
+ for(int j=0; j < 5; ++j)
+ {
+ pool.destroy(v[j]);
+ }
+ }
+
+ {
+ // Test how pool reacts with constructors that throw exceptions.
+ // Shouldn't have any memory leaks.
+ boost::object_pool<tester> pool;
+ for(int i=0; i < 5; ++i)
+ {
+ pool.construct();
+ }
+ for(int j=0; j < 5; ++j)
+ {
+ try
+ {
+ // The following constructions will raise an exception.
+ pool.construct(true);
+ }
+ catch(const std::logic_error &) {}
+ }
+ }
+}
+
+void test_alloc()
+{
+ {
+ // Allocate several tester objects. Delete one.
+ std::vector<tester, boost::pool_allocator<tester> > l;
+ for(int i=0; i < 10; ++i)
+ {
+ l.push_back(tester());
+ }
+ l.pop_back();
+ }
+
+ {
+ // Allocate several tester objects. Delete two.
+ std::deque<tester, boost::pool_allocator<tester> > l;
+ for(int i=0; i < 10; ++i)
+ {
+ l.push_back(tester());
+ }
+ l.pop_back();
+ l.pop_front();
+ }
+
+ {
+ // Allocate several tester objects. Delete two.
+ std::list<tester, boost::fast_pool_allocator<tester> > l;
+ // lists rebind their allocators, so dumping is useless
+ for(int i=0; i < 10; ++i)
+ {
+ l.push_back(tester());
+ }
+ l.pop_back();
+ l.pop_front();
+ }
+
+ tester * tmp;
+ {
+ // Create a memory leak on purpose. (Allocator doesn't have
+ // garbage collection)
+ // (Note: memory leak)
+ boost::pool_allocator<tester> a;
+ tmp = a.allocate(1, 0);
+ new (tmp) tester();
+ }
+ if(mem.ok())
+ {
+ BOOST_ERROR("Pool allocator cleaned up itself");
+ }
+ // Remove memory checker entry (to avoid error later) and
+ // clean up memory leak
+ tmp->~tester();
+ boost::pool_allocator<tester>::deallocate(tmp, 1);
+
+ // test allocating zero elements
+ {
+ boost::pool_allocator<tester> alloc;
+ tester* ip = alloc.allocate(0);
+ alloc.deallocate(ip, 0);
+ }
+}
+
+void test_mem_usage()
+{
+ typedef boost::pool<track_alloc> pool_type;
+
+ {
+ // Constructor should do nothing; no memory allocation
+ pool_type pool(sizeof(int));
+ BOOST_TEST(track_alloc::ok());
+ BOOST_TEST(!pool.release_memory());
+ BOOST_TEST(!pool.purge_memory());
+
+ // Should allocate from system
+ pool.free(pool.malloc());
+ BOOST_TEST(!track_alloc::ok());
+
+ // Ask pool to give up memory it's not using; this should succeed
+ BOOST_TEST(pool.release_memory());
+ BOOST_TEST(track_alloc::ok());
+
+ // Should allocate from system again
+ pool.malloc(); // loses the pointer to the returned chunk (*A*)
+
+ // Ask pool to give up memory it's not using; this should fail
+ BOOST_TEST(!pool.release_memory());
+
+ // Force pool to give up memory it's not using; this should succeed
+ // This will clean up the memory leak from (*A*)
+ BOOST_TEST(pool.purge_memory());
+ BOOST_TEST(track_alloc::ok());
+
+ // Should allocate from system again
+ pool.malloc(); // loses the pointer to the returned chunk (*B*)
+
+ // pool's destructor should purge the memory
+ // This will clean up the memory leak from (*B*)
+ }
+
+ BOOST_TEST(track_alloc::ok());
+}
+
+void test_void()
+{
+ typedef boost::pool_allocator<void> void_allocator;
+ typedef boost::fast_pool_allocator<void> fast_void_allocator;
+
+ typedef void_allocator::rebind<int>::other int_allocator;
+ typedef fast_void_allocator::rebind<int>::other fast_int_allocator;
+
+ std::vector<int, int_allocator> v1;
+ std::vector<int, fast_int_allocator> v2;
+}
+
+int main()
+{
+ std::srand(static_cast<unsigned>(std::time(0)));
+
+ test();
+ test_alloc();
+ test_mem_usage();
+ test_void();
+
+ return boost::report_errors();
+}

Added: sandbox/pool/libs/pool/test/test_simple_seg_storage.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_simple_seg_storage.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,299 @@
+/* Copyright (C) 2011 Kwan Ting Chan
+ *
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+#include "test_simple_seg_storage.hpp"
+#include "track_allocator.hpp"
+
+#include <boost/pool/simple_segregated_storage.hpp>
+#include <boost/assert.hpp>
+#include <boost/math/common_factor_ct.hpp>
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1400)
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+#include <boost/random/mersenne_twister.hpp>
+#include <boost/random/uniform_int.hpp>
+#include <boost/random/variate_generator.hpp>
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1400)
+#pragma warning(pop)
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+
+#include <algorithm>
+#include <functional>
+#include <set>
+#include <vector>
+
+#include <cstddef>
+#include <cstdlib>
+#include <ctime>
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4267)
+#endif
+
+// "A free list is ordered if repeated calls to malloc() will result in a
+// constantly-increasing sequence of values, as determined by std::less<void*>"
+// Return: true if in constantly-increasing order, false otherwise
+bool check_is_order(const std::vector<void*>& vs)
+{
+ if(vs.size() < 2) { return true; }
+
+ void *lower, *higher;
+ std::vector<void*>::const_iterator ci = vs.begin();
+ lower = *(ci++);
+ while(ci != vs.end())
+ {
+ higher = *(ci++);
+ if(!std::less<void*>()(lower, higher)) { return false; }
+ }
+
+ return true;
+}
+
+// Return: number of chunks malloc'd from store
+std::size_t test_is_order(test_simp_seg_store& store)
+{
+ std::vector<void*> vpv;
+ std::size_t nchunk = 0;
+ // Pre: !empty()
+ while(!store.empty())
+ {
+ void* const first = store.get_first();
+ void* const pv = store.malloc();
+ // "Takes the first available chunk from the free list
+ // and returns it"
+ BOOST_TEST(first == pv);
+
+ vpv.push_back(pv);
+ ++nchunk;
+ }
+ BOOST_TEST(check_is_order(vpv));
+
+ return nchunk;
+}
+
+boost::mt19937 gen;
+
+int main()
+{
+ std::srand(static_cast<unsigned>(std::time(0)));
+ gen.seed(static_cast<boost::uint32_t>(std::time(0)));
+
+ /* Store::segregate(block, sz, partition_sz, end) */
+ std::size_t partition_sz
+ = boost::math::static_lcm<sizeof(void*), sizeof(int)>::value;
+ boost::uniform_int<> dist(partition_sz, 10000);
+ boost::variate_generator<boost::mt19937&,
+ boost::uniform_int<> > die(gen, dist);
+ std::size_t block_size = die();
+ // Pre: npartition_sz >= sizeof(void*)
+ // npartition_sz = sizeof(void*) * i, for some integer i
+ // nsz >= npartition_sz
+ // block is properly aligned for an array of object of
+ // size npartition_sz and array of void *
+ BOOST_ASSERT(partition_sz >= sizeof(void*));
+ BOOST_ASSERT(partition_sz % sizeof(void*) == 0);
+ BOOST_ASSERT(block_size >= partition_sz);
+ {
+ char* const pc = track_allocator::malloc(block_size);
+ // (Test) Pre: block of memory is valid
+ BOOST_ASSERT(pc);
+ int endadd = 0;
+ void* const pvret = test_simp_seg_store::segregate(pc, block_size,
+ partition_sz, &endadd);
+
+ // The first chunk "is always equal to block"
+ BOOST_TEST(pvret == pc);
+
+ void* cur = test_simp_seg_store::get_nextof(static_cast<int*>(pvret));
+ void* last = pvret;
+ std::size_t nchunk = 1;
+ while(cur != &endadd)
+ {
+ ++nchunk;
+
+ // Memory of each chunk does not overlap
+ // The free list constructed is actually from the given block
+ // The "interleaved free list is ordered"
+ BOOST_TEST(std::less_equal<void*>()(static_cast<char*>(last)
+ + partition_sz, cur));
+ BOOST_TEST(std::less_equal<void*>()(static_cast<char*>(cur)
+ + partition_sz, pc + block_size));
+
+ last = cur;
+ cur = test_simp_seg_store::get_nextof(static_cast<int*>(cur));
+ }
+ // "The last chunk is set to point to end"
+ // "Partitioning into as many partition_sz-sized chunks as possible"
+ BOOST_TEST(nchunk == block_size/partition_sz);
+ }
+
+ /* t.add_block(block, sz, partition_sz), t.malloc() */
+ {
+ // Default constructor of simple_segregated_storage do nothing
+ test_simp_seg_store tstore;
+ // Post: empty()
+ BOOST_TEST(tstore.empty());
+
+ char* const pc = track_allocator::malloc(block_size);
+ tstore.add_block(pc, block_size, partition_sz);
+
+ // The first chunk "is always equal to block"
+ BOOST_TEST(tstore.get_first() == pc);
+
+ // Empty before add_block() => "is ordered after"
+ std::size_t nchunk = test_is_order(tstore);
+ // "Partitioning into as many partition_sz-sized chunks as possible"
+ BOOST_TEST(nchunk == block_size/partition_sz);
+
+ BOOST_ASSERT(partition_sz <= 23);
+ test_simp_seg_store tstore2;
+ char* const pc2 = track_allocator::malloc(75);
+ tstore2.add_block(pc2, 24, partition_sz);
+ tstore2.add_block(pc2 + 49, 24, partition_sz);
+ tstore2.add_block(pc2 + 25, 24, partition_sz);
+ tstore2.add_block(track_allocator::malloc(23), 23, partition_sz);
+ std::size_t nchunk_ref = (3*(24/partition_sz)) + (23/partition_sz);
+ for(nchunk = 0; !tstore2.empty(); tstore2.malloc(), ++nchunk) {}
+ // add_block() merges new free list to existing
+ BOOST_TEST(nchunk == nchunk_ref);
+ }
+
+ /* t.free(chunk) */
+ {
+ test_simp_seg_store tstore;
+ char* const pc = track_allocator::malloc(partition_sz);
+ tstore.add_block(pc, partition_sz, partition_sz);
+ void* pv = tstore.malloc();
+ BOOST_TEST(tstore.empty());
+ tstore.free(pv);
+ }
+
+ /* t.add_ordered_block(block, sz, partition_sz) */
+ {
+ {
+ char* const pc = track_allocator::malloc(6 * partition_sz);
+ std::vector<void*> vpv;
+ vpv.push_back(pc);
+ vpv.push_back(pc + (2 * partition_sz));
+ vpv.push_back(pc + (4 * partition_sz));
+
+ do
+ {
+ test_simp_seg_store tstore;
+ tstore.add_ordered_block(vpv[0], 2*partition_sz, partition_sz);
+ tstore.add_ordered_block(vpv[1], 2*partition_sz, partition_sz);
+ tstore.add_ordered_block(vpv[2], 2*partition_sz, partition_sz);
+ // "Order-preserving"
+ test_is_order(tstore);
+ } while(std::next_permutation(vpv.begin(), vpv.end()));
+ }
+
+ {
+ test_simp_seg_store tstore;
+ char* const pc = track_allocator::malloc(6 * partition_sz);
+ tstore.add_ordered_block(pc, 2 * partition_sz, partition_sz);
+ tstore.add_ordered_block(pc + (4 * partition_sz),
+ (2 * partition_sz), partition_sz);
+ // "Order-preserving"
+ test_is_order(tstore);
+ }
+
+ {
+ test_simp_seg_store tstore;
+ char* const pc = track_allocator::malloc(6 * partition_sz);
+ tstore.add_ordered_block(pc + (4 * partition_sz),
+ (2 * partition_sz), partition_sz);
+ tstore.add_ordered_block(pc, 2 * partition_sz, partition_sz);
+ // "Order-preserving"
+ test_is_order(tstore);
+ }
+ }
+
+ /* t.ordered_free(chunk) */
+ {
+ char* const pc = track_allocator::malloc(6 * partition_sz);
+
+ test_simp_seg_store tstore;
+ tstore.add_block(pc, 6 * partition_sz, partition_sz);
+
+ std::vector<void*> vpv;
+ for(std::size_t i=0; i < 6; ++i) { vpv.push_back(tstore.malloc()); }
+ BOOST_ASSERT(tstore.empty());
+ std::random_shuffle(vpv.begin(), vpv.end());
+
+ for(std::size_t i=0; i < 6; ++i)
+ {
+ tstore.ordered_free(vpv[i]);
+ }
+ // "Order-preserving"
+ test_is_order(tstore);
+ }
+
+ /* t.malloc_n(n, partition_sz) */
+ {
+ {
+ char* const pc = track_allocator::malloc(12 * partition_sz);
+ test_simp_seg_store tstore;
+ tstore.add_ordered_block(pc, 2 * partition_sz, partition_sz);
+ tstore.add_ordered_block(pc + (3 * partition_sz),
+ 3 * partition_sz, partition_sz);
+ tstore.add_ordered_block(pc + (7 * partition_sz),
+ 5 * partition_sz, partition_sz);
+
+ void* pvret = tstore.malloc_n(6, partition_sz);
+ BOOST_TEST(pvret == 0);
+
+ pvret = tstore.malloc_n(0, partition_sz);
+ // There's no prohibition against asking for zero elements
+ BOOST_TEST(pvret == 0);
+
+ pvret = tstore.malloc_n(3, partition_sz);
+ // Implicit assumption that contiguous sequence found is the first
+ // available while traversing from the start of the free list
+ BOOST_TEST(pvret == pc + (3 * partition_sz));
+
+ pvret = tstore.malloc_n(4, partition_sz);
+ BOOST_TEST(pvret == pc + (7 * partition_sz));
+
+ // There should still be two contiguous
+ // and one non-contiguous chunk left
+ std::size_t nchunks = 0;
+ while(!tstore.empty())
+ {
+ tstore.malloc();
+ ++nchunks;
+ }
+ BOOST_TEST(nchunks == 3);
+ }
+
+ {
+ char* const pc = track_allocator::malloc(12 * partition_sz);
+ test_simp_seg_store tstore;
+ tstore.add_ordered_block(pc, 2 * partition_sz, partition_sz);
+ tstore.add_ordered_block(pc + (3 * partition_sz),
+ 3 * partition_sz, partition_sz);
+ tstore.add_ordered_block(pc + (7 * partition_sz),
+ 5 * partition_sz, partition_sz);
+
+ tstore.malloc_n(3, partition_sz);
+ // "Order-preserving"
+ test_is_order(tstore);
+ }
+ }
+
+ for(std::set<char*>::iterator itr
+ = track_allocator::allocated_blocks.begin();
+ itr != track_allocator::allocated_blocks.end();
+ ++itr)
+ {
+ delete [] *itr;
+ }
+ track_allocator::allocated_blocks.clear();
+}

Added: sandbox/pool/libs/pool/test/test_simple_seg_storage.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_simple_seg_storage.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,173 @@
+/* Copyright (C) 2000, 2001 Stephen Cleary
+* Copyright (C) 2011 Kwan Ting Chan
+*
+* Use, modification and distribution is subject to the
+* Boost Software License, Version 1.0. (See accompanying
+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef BOOST_POOL_TEST_SIMP_SEG_STORE_HPP
+#define BOOST_POOL_TEST_SIMP_SEG_STORE_HPP
+
+#include <boost/pool/simple_segregated_storage.hpp>
+#include <boost/assert.hpp>
+
+#include <boost/detail/lightweight_test.hpp>
+
+#include <functional>
+#include <set>
+#include <utility>
+#include <vector>
+
+#include <cstddef>
+
+class test_simp_seg_store : public boost::simple_segregated_storage<std::size_t>
+{
+private:
+ // ::first is the address of the start of the added block,
+ // ::second is the size in bytes of the added block
+ std::vector<std::pair<void*, std::size_t> > allocated_blocks;
+ size_type np_sz;
+ std::set<void*> allocated_chunks;
+
+ void set_partition_size(const size_type sz)
+ {
+ if(allocated_blocks.empty())
+ {
+ np_sz = sz;
+ }
+ else
+ {
+ BOOST_ASSERT(np_sz == sz);
+ }
+ }
+
+ // Return: true if chunk is from added blocks, false otherwise
+ bool is_inside_allocated_blocks(void* const chunk) const
+ {
+ typedef std::vector<std::pair<void*, std::size_t> >::const_iterator
+ VPIter;
+ for(VPIter iter = allocated_blocks.begin();
+ iter != allocated_blocks.end();
+ ++iter)
+ {
+ if( std::less_equal<void*>()(iter->first, chunk)
+ && std::less_equal<void*>()(static_cast<char*>(chunk) + np_sz,
+ static_cast<char*>(iter->first) + iter->second) )
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ void check_in(void* const chunk)
+ {
+ // Check that the newly allocated chunk has not already previously
+ // been allocated, and that the memory does not overlap with
+ // previously allocated chunks
+ for(std::set<void*>::const_iterator iter = allocated_chunks.begin();
+ iter != allocated_chunks.end();
+ ++iter)
+ {
+ BOOST_TEST( std::less_equal<void*>()(static_cast<char*>(chunk)
+ + np_sz, *iter)
+ || std::less_equal<void*>()(static_cast<char*>(*iter)
+ + np_sz, chunk) );
+ }
+
+ allocated_chunks.insert(chunk);
+ }
+
+ void check_out(void* const chunk)
+ {
+ BOOST_TEST(allocated_chunks.erase(chunk) == 1);
+ }
+
+public:
+ test_simp_seg_store()
+ : np_sz(0) {}
+
+ void* get_first() { return first; }
+ static void*& get_nextof(void* const ptr) { return nextof(ptr); }
+
+ // (Test) Pre: npartition_sz of all added block is the same
+ // different blocks of memory does not overlap
+ void add_block(void* const block,
+ const size_type nsz, const size_type npartition_sz)
+ {
+ set_partition_size(npartition_sz);
+ allocated_blocks.push_back(
+ std::pair<void*, std::size_t>(block, nsz) );
+ boost::simple_segregated_storage<std::size_t>::add_block(
+ block, nsz, npartition_sz );
+ // Post: !empty()
+ BOOST_TEST(!empty());
+ }
+
+ // (Test) Pre: npartition_sz of all added block is the same
+ // different blocks of memory does not overlap
+ void add_ordered_block(void* const block,
+ const size_type nsz, const size_type npartition_sz)
+ {
+ set_partition_size(npartition_sz);
+ allocated_blocks.push_back(
+ std::pair<void*, std::size_t>(block, nsz) );
+ boost::simple_segregated_storage<std::size_t>::add_ordered_block(
+ block, nsz, npartition_sz );
+ // Post: !empty()
+ BOOST_TEST(!empty());
+ }
+
+ void* malloc()
+ {
+ void* const ret
+ = boost::simple_segregated_storage<std::size_t>::malloc();
+ // Chunk returned should actually be from added blocks
+ BOOST_TEST(is_inside_allocated_blocks(ret));
+ check_in(ret);
+ return ret;
+ }
+
+ void free(void* const chunk)
+ {
+ BOOST_ASSERT(chunk);
+ check_out(chunk);
+ boost::simple_segregated_storage<std::size_t>::free(chunk);
+ // Post: !empty()
+ BOOST_TEST(!empty());
+ }
+
+ void ordered_free(void* const chunk)
+ {
+ BOOST_ASSERT(chunk);
+ check_out(chunk);
+ boost::simple_segregated_storage<std::size_t>::ordered_free(chunk);
+ // Post: !empty()
+ BOOST_TEST(!empty());
+ }
+
+ void* malloc_n(size_type n, size_type partition_size)
+ {
+ void* const ret
+ = boost::simple_segregated_storage<std::size_t>::malloc_n(
+ n, partition_size );
+
+ if(ret)
+ {
+ for(std::size_t i=0; i < n; ++i)
+ {
+ void* const chunk = static_cast<char*>(ret)
+ + (i * partition_size);
+ // Memory returned should actually be from added blocks
+ BOOST_TEST(is_inside_allocated_blocks(chunk));
+ check_in(chunk);
+ }
+ }
+
+ return ret;
+ }
+};
+
+#endif // BOOST_POOL_TEST_SIMP_SEG_STORE_HPP

Added: sandbox/pool/libs/pool/test/test_threading.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_threading.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,72 @@
+/* Copyright (C) 2011 John Maddock
+*
+* Use, modification and distribution is subject to the
+* Boost Software License, Version 1.0. (See accompanying
+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#include <boost/pool/pool_alloc.hpp>
+#include <boost/thread.hpp>
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1400)
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+#include <boost/random/mersenne_twister.hpp>
+#include <boost/random/uniform_int_distribution.hpp>
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1400)
+#pragma warning(pop)
+#endif
+
+void run_tests()
+{
+ boost::random::mt19937 gen;
+ boost::random::uniform_int_distribution<> dist(-10, 10);
+ std::list<int, boost::fast_pool_allocator<int> > l;
+
+ for(int i = 0; i < 100; ++i)
+ l.push_back(i);
+
+ for(int i = 0; i < 100000; ++i)
+ {
+ int val = dist(gen);
+ if(val < 0)
+ {
+ while(val && l.size())
+ {
+ l.pop_back();
+ ++i;
+ }
+ }
+ else
+ {
+ while(val)
+ {
+ l.push_back(val);
+ --val;
+ }
+ }
+ }
+}
+
+int main()
+{
+ std::list<boost::shared_ptr<boost::thread> > threads;
+ for(int i = 0; i < 10; ++i)
+ {
+ try{
+ threads.push_back(boost::shared_ptr<boost::thread>(new boost::thread(&run_tests)));
+ }
+ catch(const std::exception& e)
+ {
+ std::cerr << "<note>Thread creation failed with message: " << e.what() << "</note>" << std::endl;
+ }
+ }
+ std::list<boost::shared_ptr<boost::thread> >::const_iterator a(threads.begin()), b(threads.end());
+ while(a != b)
+ {
+ (*a)->join();
+ ++a;
+ }
+ return 0;
+}
+

Added: sandbox/pool/libs/pool/test/test_valgrind_fail_1.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_valgrind_fail_1.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,22 @@
+/* Copyright (C) 2011 John Maddock
+*
+* Use, modification and distribution is subject to the
+* Boost Software License, Version 1.0. (See accompanying
+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+// Test of bug #2656 (https://svn.boost.org/trac/boost/ticket/2656)
+
+#include <boost/pool/pool.hpp>
+#include <iostream>
+#include <iomanip>
+
+static const int magic_value = 0x12345678;
+
+int main()
+{
+ boost::pool<> p(sizeof(int));
+ int* ptr = static_cast<int*>((p.malloc)());
+ std::cout << *ptr << std::endl; // uninitialized read
+ return 0;
+}

Added: sandbox/pool/libs/pool/test/test_valgrind_fail_2.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/test_valgrind_fail_2.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,20 @@
+/* Copyright (C) 2011 John Maddock
+*
+* Use, modification and distribution is subject to the
+* Boost Software License, Version 1.0. (See accompanying
+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+// Test of bug #2656 (https://svn.boost.org/trac/boost/ticket/2656)
+
+#include <boost/pool/pool.hpp>
+
+int main()
+{
+ boost::pool<> p(sizeof(int));
+ int* ptr = static_cast<int*>((p.malloc)());
+ *ptr = 0;
+ (p.free)(ptr);
+ *ptr = 2; // write to freed memory
+ return 0;
+}

Added: sandbox/pool/libs/pool/test/track_allocator.hpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/track_allocator.hpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,104 @@
+/* Copyright (C) 2000, 2001 Stephen Cleary
+* Copyright (C) 2011 Kwan Ting Chan
+*
+* Use, modification and distribution is subject to the
+* Boost Software License, Version 1.0. (See accompanying
+* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+#ifndef BOOST_POOL_TRACK_ALLOCATOR_HPP
+#define BOOST_POOL_TRACK_ALLOCATOR_HPP
+
+#include <boost/detail/lightweight_test.hpp>
+
+#include <new>
+#include <set>
+#include <stdexcept>
+
+#include <cstddef>
+
+// Each "tester" object below checks into and out of the "cdtor_checker",
+// which will check for any problems related to the construction/destruction of
+// "tester" objects.
+class cdtor_checker
+{
+private:
+ // Each constructed object registers its "this" pointer into "objs"
+ std::set<void*> objs;
+
+public:
+ // True iff all objects that have checked in have checked out
+ bool ok() const { return objs.empty(); }
+
+ ~cdtor_checker()
+ {
+ BOOST_TEST(ok());
+ }
+
+ void check_in(void * const This)
+ {
+ BOOST_TEST(objs.find(This) == objs.end());
+ objs.insert(This);
+ }
+
+ void check_out(void * const This)
+ {
+ BOOST_TEST(objs.find(This) != objs.end());
+ objs.erase(This);
+ }
+};
+static cdtor_checker mem;
+
+struct tester
+{
+ tester(bool throw_except = false)
+ {
+ if(throw_except)
+ {
+ throw std::logic_error("Deliberate constructor exception");
+ }
+
+ mem.check_in(this);
+ }
+
+ tester(const tester &)
+ {
+ mem.check_in(this);
+ }
+
+ ~tester()
+ {
+ mem.check_out(this);
+ }
+};
+
+// Allocator that registers alloc/dealloc to/from the system memory
+struct track_allocator
+{
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ static std::set<char*> allocated_blocks;
+
+ static char* malloc(const size_type bytes)
+ {
+ char* const ret = new (std::nothrow) char[bytes];
+ allocated_blocks.insert(ret);
+ return ret;
+ }
+
+ static void free(char* const block)
+ {
+ BOOST_TEST(allocated_blocks.find(block) != allocated_blocks.end());
+ allocated_blocks.erase(block);
+ delete [] block;
+ }
+
+ static bool ok()
+ {
+ return allocated_blocks.empty();
+ }
+};
+std::set<char*> track_allocator::allocated_blocks;
+
+#endif // BOOST_POOL_TRACK_ALLOCATOR_HPP

Added: sandbox/pool/libs/pool/test/valgrind_config_check.cpp
==============================================================================
--- (empty file)
+++ sandbox/pool/libs/pool/test/valgrind_config_check.cpp 2012-04-30 04:38:19 EDT (Mon, 30 Apr 2012)
@@ -0,0 +1,7 @@
+
+#include <valgrind/valgrind.h>
+
+int main()
+{
+ return 0;
+}
\ No newline at end of file


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk