|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r73210 - in trunk: boost/pool boost/pool/detail 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_id491880 libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id506284 libs/pool/doc/html/boost/pool_allocator libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id491365 libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id505769 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/doc/implementation libs/pool/doc/interfaces libs/pool/example libs/pool/test
From: john_at_[hidden]
Date: 2011-07-18 06:23:50
Author: johnmaddock
Date: 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
New Revision: 73210
URL: http://svn.boost.org/trac/boost/changeset/73210
Log:
Merge updated Boost.Pool from sandbox.
Added:
trunk/boost/pool/detail/pool_construct.ipp
- copied unchanged from r73209, /sandbox/guild/pool/boost/pool/detail/pool_construct.ipp
trunk/boost/pool/detail/pool_construct_simple.ipp
- copied unchanged from r73209, /sandbox/guild/pool/boost/pool/detail/pool_construct_simple.ipp
trunk/libs/pool/doc/html/
trunk/libs/pool/doc/html/BOOST_POOL_VALIDATE_INTERNALS.html (contents, props changed)
trunk/libs/pool/doc/html/boost/
trunk/libs/pool/doc/html/boost/default_user_allocator_malloc_free.html (contents, props changed)
trunk/libs/pool/doc/html/boost/default_user_allocator_new_delete.html (contents, props changed)
trunk/libs/pool/doc/html/boost/fast_pool_allocator/
trunk/libs/pool/doc/html/boost/fast_pool_allocator.html (contents, props changed)
trunk/libs/pool/doc/html/boost/fast_pool_allocator/rebind.html (contents, props changed)
trunk/libs/pool/doc/html/boost/fast_pool_allocator_tag.html (contents, props changed)
trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id491880/
trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id491880.html (contents, props changed)
trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id491880/rebind.html (contents, props changed)
trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id506284/
trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id506284.html (contents, props changed)
trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id506284/rebind.html (contents, props changed)
trunk/libs/pool/doc/html/boost/object_pool.html (contents, props changed)
trunk/libs/pool/doc/html/boost/pool.html (contents, props changed)
trunk/libs/pool/doc/html/boost/pool_allocator/
trunk/libs/pool/doc/html/boost/pool_allocator.html (contents, props changed)
trunk/libs/pool/doc/html/boost/pool_allocator/rebind.html (contents, props changed)
trunk/libs/pool/doc/html/boost/pool_allocator_tag.html (contents, props changed)
trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id491365/
trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id491365.html (contents, props changed)
trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id491365/rebind.html (contents, props changed)
trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id505769/
trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id505769.html (contents, props changed)
trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id505769/rebind.html (contents, props changed)
trunk/libs/pool/doc/html/boost/simple_segregated_storage.html (contents, props changed)
trunk/libs/pool/doc/html/boost/singleton_pool/
trunk/libs/pool/doc/html/boost/singleton_pool.html (contents, props changed)
trunk/libs/pool/doc/html/boost/singleton_pool/object_creator.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/
trunk/libs/pool/doc/html/boost_pool/appendices/
trunk/libs/pool/doc/html/boost_pool/appendices.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/appendices/acknowledgements.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/appendices/faq.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/appendices/history.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/appendices/implementations.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/appendices/references.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/appendices/tests.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/appendices/tickets.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/appendices/todo.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/indexes/
trunk/libs/pool/doc/html/boost_pool/indexes.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/indexes/s01.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/indexes/s02.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/indexes/s03.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/indexes/s04.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/pool/
trunk/libs/pool/doc/html/boost_pool/pool.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/pool/conventions.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/pool/installation.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/pool/interfaces.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/pool/introduction.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/pool/pooling.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/pool/testing.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool/pool/usage.html (contents, props changed)
trunk/libs/pool/doc/html/boost_pool_c___reference.html (contents, props changed)
trunk/libs/pool/doc/html/header/
trunk/libs/pool/doc/html/header/boost/
trunk/libs/pool/doc/html/header/boost/pool/
trunk/libs/pool/doc/html/header/boost/pool/object_pool_hpp.html (contents, props changed)
trunk/libs/pool/doc/html/header/boost/pool/pool_alloc_hpp.html (contents, props changed)
trunk/libs/pool/doc/html/header/boost/pool/pool_hpp.html (contents, props changed)
trunk/libs/pool/doc/html/header/boost/pool/poolfwd_hpp.html (contents, props changed)
trunk/libs/pool/doc/html/header/boost/pool/simple_segregated_storage_hpp.html (contents, props changed)
trunk/libs/pool/doc/html/header/boost/pool/singleton_pool_hpp.html (contents, props changed)
trunk/libs/pool/doc/html/index.html (contents, props changed)
trunk/libs/pool/doc/images/
- copied from r73209, /sandbox/guild/pool/libs/pool/doc/images/
trunk/libs/pool/doc/images/MB4.PNG
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/MB4.PNG
trunk/libs/pool/doc/images/PC2.PNG
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/PC2.PNG
trunk/libs/pool/doc/images/PC3.PNG
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/PC3.PNG
trunk/libs/pool/doc/images/PC4.PNG
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/PC4.PNG
trunk/libs/pool/doc/images/PC5.PNG
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/PC5.PNG
trunk/libs/pool/doc/images/mb1.PNG
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/mb1.PNG
trunk/libs/pool/doc/images/mb1.svg
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/mb1.svg
trunk/libs/pool/doc/images/mb2.PNG
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/mb2.PNG
trunk/libs/pool/doc/images/mb2.svg
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/mb2.svg
trunk/libs/pool/doc/images/mb3.PNG
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/mb3.PNG
trunk/libs/pool/doc/images/mb3.svg
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/mb3.svg
trunk/libs/pool/doc/images/mb4.svg
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/mb4.svg
trunk/libs/pool/doc/images/pc1.PNG
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/pc1.PNG
trunk/libs/pool/doc/images/pc1.svg
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/pc1.svg
trunk/libs/pool/doc/images/pc2.svg
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/pc2.svg
trunk/libs/pool/doc/images/pc3.svg
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/pc3.svg
trunk/libs/pool/doc/images/pc4.svg
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/pc4.svg
trunk/libs/pool/doc/images/pc5.svg
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/images/pc5.svg
trunk/libs/pool/doc/index.idx
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/index.idx
trunk/libs/pool/doc/jamfile.v2
- copied, changed from r73209, /sandbox/guild/pool/libs/pool/doc/jamfile.v2
trunk/libs/pool/doc/pool.pdf
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/pool.pdf
trunk/libs/pool/doc/pool.qbk
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/doc/pool.qbk
trunk/libs/pool/example/
- copied from r73209, /sandbox/guild/pool/libs/pool/example/
trunk/libs/pool/example/sys_allocator.hpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/example/sys_allocator.hpp
trunk/libs/pool/example/time_pool_alloc.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/example/time_pool_alloc.cpp
trunk/libs/pool/test/test_bug_1252.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_bug_1252.cpp
trunk/libs/pool/test/test_bug_2696.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_bug_2696.cpp
trunk/libs/pool/test/test_bug_3349.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_bug_3349.cpp
trunk/libs/pool/test/test_bug_4960.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_bug_4960.cpp
trunk/libs/pool/test/test_bug_5526.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_bug_5526.cpp
trunk/libs/pool/test/test_msvc_mem_leak_detect.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_msvc_mem_leak_detect.cpp
trunk/libs/pool/test/test_poisoned_macros.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_poisoned_macros.cpp
trunk/libs/pool/test/test_simple_seg_storage.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_simple_seg_storage.cpp
trunk/libs/pool/test/test_simple_seg_storage.hpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_simple_seg_storage.hpp
trunk/libs/pool/test/test_threading.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_threading.cpp
trunk/libs/pool/test/test_valgrind_fail_1.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_valgrind_fail_1.cpp
trunk/libs/pool/test/test_valgrind_fail_2.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/test_valgrind_fail_2.cpp
trunk/libs/pool/test/track_allocator.hpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/track_allocator.hpp
trunk/libs/pool/test/valgrind_config_check.cpp
- copied unchanged from r73209, /sandbox/guild/pool/libs/pool/test/valgrind_config_check.cpp
Removed:
trunk/boost/pool/detail/ct_gcd_lcm.hpp
trunk/boost/pool/detail/gcd_lcm.hpp
trunk/boost/pool/detail/pool_construct.inc
trunk/boost/pool/detail/pool_construct_simple.inc
trunk/boost/pool/detail/singleton.hpp
trunk/libs/pool/TODO.txt
trunk/libs/pool/doc/concepts.html
trunk/libs/pool/doc/implementation/
trunk/libs/pool/doc/index.html
trunk/libs/pool/doc/interfaces/
trunk/libs/pool/doc/interfaces.html
trunk/libs/pool/doc/pool.css
trunk/libs/pool/test/sys_allocator.hpp
trunk/libs/pool/test/time_pool_alloc.cpp
Properties modified:
trunk/boost/pool/ (props changed)
trunk/libs/pool/ (props changed)
Text files modified:
trunk/boost/pool/detail/guard.hpp | 45 ++
trunk/boost/pool/detail/mutex.hpp | 117 ------
trunk/boost/pool/detail/pool_construct.bat | 6
trunk/boost/pool/detail/pool_construct.sh | 3
trunk/boost/pool/detail/pool_construct_simple.bat | 6
trunk/boost/pool/detail/pool_construct_simple.sh | 3
trunk/boost/pool/object_pool.hpp | 204 ++++++++++--
trunk/boost/pool/pool.hpp | 660 ++++++++++++++++++++++++++++++++-------
trunk/boost/pool/pool_alloc.hpp | 306 +++++++++++++++---
trunk/boost/pool/poolfwd.hpp | 8
trunk/boost/pool/simple_segregated_storage.hpp | 248 ++++++++++----
trunk/boost/pool/singleton_pool.hpp | 239 +++++++++++---
trunk/libs/pool/doc/jamfile.v2 | 44 --
trunk/libs/pool/index.html | 6
trunk/libs/pool/test/Jamfile.v2 | 57 +++
trunk/libs/pool/test/test_pool_alloc.cpp | 501 +++++++++++++----------------
16 files changed, 1672 insertions(+), 781 deletions(-)
Deleted: trunk/boost/pool/detail/ct_gcd_lcm.hpp
==============================================================================
--- trunk/boost/pool/detail/ct_gcd_lcm.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,104 +0,0 @@
-// 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_CT_GCD_LCM_HPP
-#define BOOST_POOL_CT_GCD_LCM_HPP
-
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/ice.hpp>
-
-namespace boost {
-
-namespace details {
-namespace pool {
-
-// Compile-time calculation of greatest common divisor and least common multiple
-
-//
-// ct_gcd is a compile-time algorithm that calculates the greatest common
-// divisor of two unsigned integers, using Euclid's algorithm.
-//
-// assumes: A != 0 && B != 0
-//
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-namespace details {
-template <unsigned A, unsigned B, bool Bis0>
-struct ct_gcd_helper;
-template <unsigned A, unsigned B>
-struct ct_gcd_helper<A, B, false>
-{
- BOOST_STATIC_CONSTANT(unsigned, A_mod_B_ = A % B);
- BOOST_STATIC_CONSTANT(unsigned, value =
- (::boost::details::pool::details::ct_gcd_helper<
- B, static_cast<unsigned>(A_mod_B_),
- ::boost::type_traits::ice_eq<A_mod_B_, 0>::value
- >::value) );
-};
-template <unsigned A, unsigned B>
-struct ct_gcd_helper<A, B, true>
-{
- BOOST_STATIC_CONSTANT(unsigned, value = A);
-};
-} // namespace details
-
-template <unsigned A, unsigned B>
-struct ct_gcd
-{
- BOOST_STATIC_ASSERT(A != 0 && B != 0);
- BOOST_STATIC_CONSTANT(unsigned, value =
- (::boost::details::pool::details::ct_gcd_helper<A, B, false>::value) );
-};
-
-#else
-
-// Thanks to Peter Dimov for providing this workaround!
-namespace details {
-template<unsigned A> struct ct_gcd2
-{
- template<unsigned B>
- struct helper
- {
- BOOST_STATIC_CONSTANT(unsigned, value = ct_gcd2<B>::helper<A % B>::value);
- };
- template<>
- struct helper<0>
- {
- BOOST_STATIC_CONSTANT(unsigned, value = A);
- };
-};
-} // namespace details
-
-template<unsigned A, unsigned B> struct ct_gcd
-{
- BOOST_STATIC_ASSERT(A != 0 && B != 0);
- enum { value = details::ct_gcd2<A>::helper<B>::value };
-};
-
-#endif
-
-//
-// ct_lcm is a compile-time algorithm that calculates the least common
-// multiple of two unsigned integers.
-//
-// assumes: A != 0 && B != 0
-//
-template <unsigned A, unsigned B>
-struct ct_lcm
-{
- BOOST_STATIC_CONSTANT(unsigned, value =
- (A / ::boost::details::pool::ct_gcd<A, B>::value * B) );
-};
-
-} // namespace pool
-} // namespace details
-
-} // namespace boost
-
-#endif
Deleted: trunk/boost/pool/detail/gcd_lcm.hpp
==============================================================================
--- trunk/boost/pool/detail/gcd_lcm.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,58 +0,0 @@
-// 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_GCD_LCM_HPP
-#define BOOST_POOL_GCD_LCM_HPP
-
-namespace boost {
-
-namespace details {
-namespace pool {
-
-// Greatest common divisor and least common multiple
-
-//
-// gcd is an algorithm that calculates the greatest common divisor of two
-// integers, using Euclid's algorithm.
-//
-// Pre: A > 0 && B > 0
-// Recommended: A > B
-template <typename Integer>
-Integer gcd(Integer A, Integer B)
-{
- do
- {
- const Integer tmp(B);
- B = A % B;
- A = tmp;
- } while (B != 0);
-
- return A;
-}
-
-//
-// lcm is an algorithm that calculates the least common multiple of two
-// integers.
-//
-// Pre: A > 0 && B > 0
-// Recommended: A > B
-template <typename Integer>
-Integer lcm(const Integer & A, const Integer & B)
-{
- Integer ret = A;
- ret /= gcd(A, B);
- ret *= B;
- return ret;
-}
-
-} // namespace pool
-} // namespace details
-
-} // namespace boost
-
-#endif
Modified: trunk/boost/pool/detail/guard.hpp
==============================================================================
--- trunk/boost/pool/detail/guard.hpp (original)
+++ trunk/boost/pool/detail/guard.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -9,28 +9,57 @@
#ifndef BOOST_POOL_GUARD_HPP
#define BOOST_POOL_GUARD_HPP
-// Extremely Light-Weight guard glass
+/*!
+ \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>
+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 &);
+ 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) { mtx.lock(); }
-
- ~guard() { mtx.unlock(); }
-};
+ :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
Modified: trunk/boost/pool/detail/mutex.hpp
==============================================================================
--- trunk/boost/pool/detail/mutex.hpp (original)
+++ trunk/boost/pool/detail/mutex.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -10,108 +10,11 @@
#define BOOST_POOL_MUTEX_HPP
#include <boost/config.hpp> // for workarounds
-
-// Extremely Light-Weight wrapper classes for OS thread synchronization
-
-// Configuration: for now, we just choose between pthread or Win32 mutexes or none
-
-#define BOOST_MUTEX_HELPER_NONE 0
-#define BOOST_MUTEX_HELPER_WIN32 1
-#define BOOST_MUTEX_HELPER_PTHREAD 2
-
-#if !defined(BOOST_HAS_THREADS) && !defined(BOOST_NO_MT)
-# define BOOST_NO_MT
-#endif
-
-#ifdef BOOST_NO_MT
- // No multithreading -> make locks into no-ops
- #define BOOST_MUTEX_HELPER BOOST_MUTEX_HELPER_NONE
-#else
- #ifdef BOOST_WINDOWS
- #define BOOST_MUTEX_HELPER BOOST_MUTEX_HELPER_WIN32
- #else
- #if defined(BOOST_HAS_UNISTD_H)
- #include <unistd.h>
- #endif
- #if defined(_POSIX_THREADS) || defined(BOOST_HAS_PTHREADS)
- #define BOOST_MUTEX_HELPER BOOST_MUTEX_HELPER_PTHREAD
- #endif
- #endif
-#endif
-
-#ifndef BOOST_MUTEX_HELPER
- #error Unable to determine platform mutex type; define BOOST_NO_MT to assume single-threaded
-#endif
-
-#ifndef BOOST_NO_MT
-# ifdef BOOST_WINDOWS
-# include <windows.h>
-# endif
-# if defined(_POSIX_THREADS) || defined(BOOST_HAS_PTHREADS)
-# include <pthread.h>
-# endif
+#ifdef BOOST_HAS_THREADS
+#include <boost/thread/mutex.hpp>
#endif
-namespace boost {
-
-namespace details {
-namespace pool {
-
-#ifndef BOOST_NO_MT
-
-#ifdef BOOST_WINDOWS
-
-class win32_mutex
-{
- private:
- ::CRITICAL_SECTION mtx;
-
- win32_mutex(const win32_mutex &);
- void operator=(const win32_mutex &);
-
- public:
- win32_mutex()
- { ::InitializeCriticalSection(&mtx); }
-
- ~win32_mutex()
- { ::DeleteCriticalSection(&mtx); }
-
- void lock()
- { ::EnterCriticalSection(&mtx); }
-
- void unlock()
- { ::LeaveCriticalSection(&mtx); }
-};
-
-#endif // defined(BOOST_WINDOWS)
-
-#if defined(_POSIX_THREADS) || defined(BOOST_HAS_PTHREADS)
-
-class pthread_mutex
-{
- private:
- ::pthread_mutex_t mtx;
-
- pthread_mutex(const pthread_mutex &);
- void operator=(const pthread_mutex &);
-
- public:
- pthread_mutex()
- { ::pthread_mutex_init(&mtx, 0); }
-
- ~pthread_mutex()
- { ::pthread_mutex_destroy(&mtx); }
-
- void lock()
- { ::pthread_mutex_lock(&mtx); }
-
- void unlock()
- { ::pthread_mutex_unlock(&mtx); }
-};
-
-#endif // defined(_POSIX_THREADS) || defined(BOOST_HAS_PTHREADS)
-
-#endif // !defined(BOOST_NO_MT)
+namespace boost{ namespace details{ namespace pool{
class null_mutex
{
@@ -126,22 +29,14 @@
static void unlock() { }
};
-#if BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_NONE
+#if !defined(BOOST_HAS_THREADS) || defined(BOOST_NO_MT) || defined(BOOST_POOL_NO_MT)
typedef null_mutex default_mutex;
-#elif BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_WIN32
- typedef win32_mutex default_mutex;
-#elif BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_PTHREAD
- typedef pthread_mutex default_mutex;
+#else
+ typedef boost::mutex default_mutex;
#endif
} // namespace pool
} // namespace details
-
} // namespace boost
-#undef BOOST_MUTEX_HELPER_WIN32
-#undef BOOST_MUTEX_HELPER_PTHREAD
-#undef BOOST_MUTEX_HELPER_NONE
-#undef BOOST_MUTEX_HELPER
-
#endif
Modified: trunk/boost/pool/detail/pool_construct.bat
==============================================================================
--- trunk/boost/pool/detail/pool_construct.bat (original)
+++ trunk/boost/pool/detail/pool_construct.bat 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -11,7 +11,7 @@
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.inc
+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
@@ -19,6 +19,6 @@
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.inc
+m4 -P -E -DNumberOfArguments=%1 < pool_construct.m4 > pool_construct.ipp
-:end
\ No newline at end of file
+:end
Deleted: trunk/boost/pool/detail/pool_construct.inc
==============================================================================
--- trunk/boost/pool/detail/pool_construct.inc 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,852 +0,0 @@
-// 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;
-}
-
Modified: trunk/boost/pool/detail/pool_construct.sh
==============================================================================
--- trunk/boost/pool/detail/pool_construct.sh (original)
+++ trunk/boost/pool/detail/pool_construct.sh 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -8,4 +8,5 @@
# See http://www.boost.org for updates, documentation, and revision history.
#
-m4 -P -E -DNumberOfArguments=$1 pool_construct.m4 > pool_construct.inc
+m4 -P -E -DNumberOfArguments=$1 pool_construct.m4 > pool_construct.ipp
+
Modified: trunk/boost/pool/detail/pool_construct_simple.bat
==============================================================================
--- trunk/boost/pool/detail/pool_construct_simple.bat (original)
+++ trunk/boost/pool/detail/pool_construct_simple.bat 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -12,7 +12,7 @@
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.inc
+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
@@ -20,6 +20,6 @@
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.inc
+m4 -P -E -DNumberOfArguments=%1 < pool_construct_simple.m4 > pool_construct_simple.ipp
-:end
\ No newline at end of file
+:end
Deleted: trunk/boost/pool/detail/pool_construct_simple.inc
==============================================================================
--- trunk/boost/pool/detail/pool_construct_simple.inc 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,43 +0,0 @@
-// 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;
-}
-
Modified: trunk/boost/pool/detail/pool_construct_simple.sh
==============================================================================
--- trunk/boost/pool/detail/pool_construct_simple.sh (original)
+++ trunk/boost/pool/detail/pool_construct_simple.sh 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -8,4 +8,5 @@
# See http://www.boost.org for updates, documentation, and revision history.
#
-m4 -P -E -DNumberOfArguments=$1 pool_construct_simple.m4 > pool_construct_simple.inc
+m4 -P -E -DNumberOfArguments=$1 pool_construct_simple.m4 > pool_construct_simple.ipp
+
Deleted: trunk/boost/pool/detail/singleton.hpp
==============================================================================
--- trunk/boost/pool/detail/singleton.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,107 +0,0 @@
-// 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_SINGLETON_HPP
-#define BOOST_POOL_SINGLETON_HPP
-
-// The following code might be put into some Boost.Config header in a later revision
-#ifdef __BORLANDC__
-# pragma option push -w-inl
-#endif
-
-//
-// The following helper classes are placeholders for a generic "singleton"
-// class. The classes below support usage of singletons, including use in
-// program startup/shutdown code, AS LONG AS there is only one thread
-// running before main() begins, and only one thread running after main()
-// exits.
-//
-// This class is also limited in that it can only provide singleton usage for
-// classes with default constructors.
-//
-
-// The design of this class is somewhat twisted, but can be followed by the
-// calling inheritance. Let us assume that there is some user code that
-// calls "singleton_default<T>::instance()". The following (convoluted)
-// sequence ensures that the same function will be called before main():
-// instance() contains a call to create_object.do_nothing()
-// Thus, object_creator is implicitly instantiated, and create_object
-// must exist.
-// Since create_object is a static member, its constructor must be
-// called before main().
-// The constructor contains a call to instance(), thus ensuring that
-// instance() will be called before main().
-// The first time instance() is called (i.e., before main()) is the
-// latest point in program execution where the object of type T
-// can be created.
-// Thus, any call to instance() will auto-magically result in a call to
-// instance() before main(), unless already present.
-// Furthermore, since the instance() function contains the object, instead
-// of the singleton_default class containing a static instance of the
-// object, that object is guaranteed to be constructed (at the latest) in
-// the first call to instance(). This permits calls to instance() from
-// static code, even if that code is called before the file-scope objects
-// in this file have been initialized.
-
-namespace boost {
-
-namespace details {
-namespace pool {
-
-// T must be: no-throw default constructible and no-throw destructible
-template <typename T>
-struct singleton_default
-{
- private:
- struct 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.
- object_creator() { singleton_default<T>::instance(); }
- inline void do_nothing() const { }
- };
- static object_creator create_object;
-
- singleton_default();
-
- public:
- typedef T object_type;
-
- // If, at any point (in user code), singleton_default<T>::instance()
- // is called, then the following function is instantiated.
- static object_type & instance()
- {
- // This is the object that we return a reference to.
- // It is guaranteed to be created before main() begins because of
- // the next line.
- static object_type obj;
-
- // The following line does nothing else than force the instantiation
- // of singleton_default<T>::create_object, whose constructor is
- // called before main() begins.
- create_object.do_nothing();
-
- return obj;
- }
-};
-template <typename T>
-typename singleton_default<T>::object_creator
-singleton_default<T>::create_object;
-
-} // namespace pool
-} // namespace details
-
-} // namespace boost
-
-// The following code might be put into some Boost.Config header in a later revision
-#ifdef __BORLANDC__
-# pragma option pop
-#endif
-
-#endif
Modified: trunk/boost/pool/object_pool.hpp
==============================================================================
--- trunk/boost/pool/object_pool.hpp (original)
+++ trunk/boost/pool/object_pool.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -8,6 +8,12 @@
#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>
@@ -33,41 +39,110 @@
namespace boost {
-// T must have a non-throwing destructor
+/*! \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;
- typedef UserAllocator user_allocator;
- typedef typename pool<UserAllocator>::size_type size_type;
- typedef typename pool<UserAllocator>::difference_type difference_type;
+ 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:
- pool<UserAllocator> & store() { return *this; }
- const pool<UserAllocator> & store() const { return *this; }
+ //! \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)
- { return *(static_cast<void **>(ptr)); }
+ { //! \returns The next memory block after ptr (for the sake of code readability :)
+ return *(static_cast<void **>(ptr));
+ }
public:
- // This constructor parameter is an extension!
- explicit object_pool(const size_type next_size = 32, const size_type max_size = 0)
- :pool<UserAllocator>(sizeof(T), next_size, max_size) { }
+ 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
+ // Returns 0 if out-of-memory.
element_type * malloc BOOST_PREVENT_MACRO_SUBSTITUTION()
- { return static_cast<element_type *>(store().ordered_malloc()); }
+ { //! 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)
- { store().ordered_free(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
- { return store().is_from(chunk); }
+ { /*! \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;
@@ -76,29 +151,76 @@
return ret;
}
- // Include automatically-generated file for family of template construct()
- // functions
+
+#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.inc>
+# include <boost/pool/detail/pool_construct.ipp>
#else
-# include <boost/pool/detail/pool_construct_simple.inc>
+# 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);
}
- // These functions are extensions!
- size_type get_next_size() const { return store().get_next_size(); }
- void set_next_size(const size_type x) { store().set_next_size(x); }
+ 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()
{
- // handle trivial case
+#ifndef BOOST_POOL_VALGRIND
+ // handle trivial case of invalid list.
if (!this->list.valid())
return;
@@ -115,36 +237,44 @@
// increment next
next = next.next();
- // delete all contained objects that aren't freed
+ // delete all contained objects that aren't freed.
- // Iterate 'i' through all chunks in the memory block
+ // 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 this chunk is free,
if (i == freed_iter)
{
- // Increment freed_iter to point to next in free list
+ // Increment freed_iter to point to next in free list.
freed_iter = nextof(freed_iter);
- // Continue searching chunks in the memory block
+ // Continue searching chunks in the memory block.
continue;
}
- // This chunk is not free (allocated), so call its destructor
+ // 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
+ // and continue searching chunks in the memory block.
}
- // free storage
+ // free storage.
(UserAllocator::free)(iter.begin());
- // increment iter
+ // increment iter.
iter = next;
} while (iter.valid());
// Make the block list empty so that the inherited destructor doesn't try to
- // free it again.
+ // 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
Modified: trunk/boost/pool/pool.hpp
==============================================================================
--- trunk/boost/pool/pool.hpp (original)
+++ trunk/boost/pool/pool.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -26,12 +26,23 @@
#include <boost/pool/poolfwd.hpp>
-// boost::details::pool::ct_lcm
-#include <boost/pool/detail/ct_gcd_lcm.hpp>
-// boost::details::pool::lcm
-#include <boost/pool/detail/gcd_lcm.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; }
@@ -44,41 +55,99 @@
// parameter.
// Thanks to Jens Maurer for pointing this out!
-namespace boost {
+/*!
+ \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;
- typedef std::ptrdiff_t difference_type;
+ 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 new (std::nothrow) char[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)
- { delete [] 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;
- typedef std::ptrdiff_t difference_type;
+ 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)); }
+ { return static_cast<char *>((std::malloc)(bytes)); }
static void free BOOST_PREVENT_MACRO_SUBSTITUTION(char * const block)
- { std::free(block); }
+ { (std::free)(block); }
};
-namespace details {
+namespace details
+{ //! Implemention only.
-// 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".
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;
@@ -87,84 +156,178 @@
size_type sz;
char * ptr_next_size() const
- { return (ptr + sz - sizeof(size_type)); }
+ {
+ return (ptr + sz - sizeof(size_type));
+ }
char * ptr_next_ptr() const
{
return (ptr_next_size() -
- pool::ct_lcm<sizeof(size_type), sizeof(void *)>::value);
+ math::static_lcm<sizeof(size_type), sizeof(void *)>::value);
}
public:
PODptr(char * const nptr, const size_type nsize)
- :ptr(nptr), sz(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) { }
+ : ptr(0), sz(0)
+ { //! default constructor for PODptr will result in an invalid object.
+ }
- bool valid() const { return (begin() != 0); }
- void invalidate() { begin() = 0; }
- char * & begin() { return ptr; }
- char * begin() const { return ptr; }
- char * end() const { return ptr_next_ptr(); }
- size_type total_size() const { return sz; }
+ 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
- {
- return (sz - sizeof(size_type) -
- pool::ct_lcm<sizeof(size_type), sizeof(void *)>::value);
+ { //! \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
- { return *(static_cast<char **>(static_cast<void*>(ptr_next_ptr()))); }
+ { //! \returns pointer to next pointer area.
+ return *(static_cast<char **>(static_cast<void*>(ptr_next_ptr())));
+ }
PODptr next() const
- { return PODptr<size_type>(next_ptr(), next_size()); }
+ { //! \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>
+class pool: protected simple_segregated_storage < typename UserAllocator::size_type >
{
public:
- typedef UserAllocator user_allocator;
- typedef typename UserAllocator::size_type size_type;
- typedef typename UserAllocator::difference_type difference_type;
+ 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(unsigned, min_alloc_size =
- (::boost::details::pool::ct_lcm<sizeof(void *), sizeof(size_type)>::value) );
-
- // Returns 0 if out-of-memory
- // Called if malloc/ordered_malloc needs to resize the free list
- void * malloc_need_resize();
- void * ordered_malloc_need_resize();
+ 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;
+ details::PODptr<size_type> list; //!< List structure holding ordered blocks.
- simple_segregated_storage<size_type> & store() { return *this; }
- const simple_segregated_storage<size_type> & store() const { return *this; }
+ 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
+ //! 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
+ // 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.
@@ -172,35 +335,52 @@
// 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]
-//WAS:
-// return (std::less_equal<void *>()(static_cast<void *>(i), chunk)
-// && std::less<void *>()(chunk,
-// static_cast<void *>(i + sizeof_i)));
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
- {
- const unsigned min_size = min_alloc_size;
- return details::pool::lcm<size_type>(requested_size, min_size);
+ { //! 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;
}
- // for the sake of code readability :)
static void * & nextof(void * const ptr)
- { return *(static_cast<void **>(ptr)); }
+ { //! \returns Pointer dereferenced.
+ //! (Provided and used for the sake of code readability :)
+ return *(static_cast<void **>(ptr));
+ }
public:
- // The second parameter here is an extension!
// 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)
- { }
+ :
+ 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() { purge_memory(); }
+ ~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
@@ -211,19 +391,40 @@
// Returns true if memory was actually deallocated
bool purge_memory();
- // These functions are extensions!
- size_type get_next_size() const { return next_size; }
- void set_next_size(const size_type nnext_size) { next_size = start_size = nnext_size; }
- size_type get_max_size() const { return max_size; }
- void set_max_size(const size_type nmax_size) { max_size = nmax_size; }
- size_type get_requested_size() const { return requested_size; }
+ 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)();
@@ -231,7 +432,9 @@
}
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)();
@@ -241,21 +444,42 @@
// 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)
- { (store().free)(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)
- { store().ordered_free(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 +
@@ -267,7 +491,12 @@
// 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 +
@@ -278,15 +507,29 @@
// 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()
-{
- // This is the return value: it will be set to true when we actually call
+{ //! 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;
@@ -371,7 +614,7 @@
// 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
@@ -408,7 +651,13 @@
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())
@@ -435,16 +684,28 @@
template <typename UserAllocator>
void * pool<UserAllocator>::malloc_need_resize()
-{
- // No memory in any of our storages; make a new storage,
- const size_type partition_size = alloc_size();
- const size_type POD_size = next_size * partition_size +
- details::pool::ct_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type);
- char * const ptr = (UserAllocator::malloc)(POD_size);
+{ //! 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)
- return 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;
@@ -464,14 +725,25 @@
template <typename UserAllocator>
void * pool<UserAllocator>::ordered_malloc_need_resize()
-{
- // No memory in any of our storages; make a new storage,
- const size_type partition_size = alloc_size();
- const size_type POD_size = next_size * partition_size +
- details::pool::ct_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type);
- char * const ptr = (UserAllocator::malloc)(POD_size);
+{ //! 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)
- return 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();
@@ -511,14 +783,16 @@
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 +
@@ -526,23 +800,40 @@
void * ret = store().malloc_n(num_chunks, partition_size);
- if (ret != 0)
+#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;
- // Not enougn memory in our storages; make a new storage,
+#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);
- const size_type POD_size = next_size * partition_size +
- details::pool::ct_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type);
- char * const ptr = (UserAllocator::malloc)(POD_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)
- return 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
- // (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)
+ // 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);
@@ -554,7 +845,7 @@
next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size);
// insert it into the list,
- // handle border case
+ // handle border case.
if (!list.valid() || std::greater<void *>()(list.begin(), node.begin()))
{
node.next(list);
@@ -566,8 +857,7 @@
while (true)
{
- // if we're about to hit the end or
- // if we've found where "node" goes
+ // 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;
@@ -586,8 +876,9 @@
template <typename UserAllocator>
details::PODptr<typename pool<UserAllocator>::size_type>
pool<UserAllocator>::find_POD(void * const chunk) const
-{
- // We have to find which storage this chunk is from.
+{ //! 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())
{
@@ -599,6 +890,135 @@
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
+
Modified: trunk/boost/pool/pool_alloc.hpp
==============================================================================
--- trunk/boost/pool/pool_alloc.hpp (original)
+++ trunk/boost/pool/pool_alloc.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -1,4 +1,5 @@
// 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
@@ -9,6 +10,62 @@
#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
@@ -22,6 +79,11 @@
#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))
@@ -30,57 +92,108 @@
namespace boost {
-struct pool_allocator_tag { };
+#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>
+ unsigned MaxSize >
class pool_allocator
{
public:
- typedef T value_type;
- typedef UserAllocator user_allocator;
- typedef Mutex mutex;
- BOOST_STATIC_CONSTANT(unsigned, next_size = NextSize);
+ 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 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;
+ { //
+ typedef pool_allocator<U, UserAllocator, Mutex, NextSize, MaxSize> other;
};
public:
pool_allocator()
- {
- // Required to ensure construction of singleton_pool IFF an
- // instace of this allocator is constructed during global
- // initialization. See ticket #2359 for a complete explaination
- // ( http://svn.boost.org/trac/boost/ticket/2359 )
+ { /*! 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 copy constructor.
- // default assignment operator
+ // default assignment operator.
// not explicit, mimicking std::allocator [20.4.1]
template <typename U>
pool_allocator(const pool_allocator<U, UserAllocator, Mutex, NextSize, MaxSize> &)
- {
- // Required to ensure construction of singleton_pool IFF an
- // instace of this allocator is constructed during global
- // initialization. See ticket #2359 for a complete explaination
- // ( http://svn.boost.org/trac/boost/ticket/2359 )
+ { /*! 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);
}
@@ -98,7 +211,7 @@
static void destroy(const pointer ptr)
{
ptr->~T();
- (void) ptr; // avoid unused variable warning
+ (void) ptr; // avoid unused variable warning.
}
bool operator==(const pool_allocator &) const
@@ -108,17 +221,33 @@
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)
+ if ((ret == 0) && n)
boost::throw_exception(std::bad_alloc());
return ret;
}
static pointer allocate(const size_type n, const void * const)
- { return allocate(n); }
+ { //! 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;
@@ -128,6 +257,10 @@
}
};
+/*! \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,
@@ -139,18 +272,64 @@
typedef void* pointer;
typedef const void* const_pointer;
typedef void value_type;
- template <class U> struct rebind {
- typedef pool_allocator<U, UserAllocator, Mutex, NextSize, MaxSize> other;
+ //! \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;
};
};
-struct fast_pool_allocator_tag { };
+//! 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>
+ unsigned MaxSize >
class fast_pool_allocator
{
public:
@@ -166,6 +345,12 @@
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
{
@@ -175,35 +360,37 @@
public:
fast_pool_allocator()
{
- // Required to ensure construction of singleton_pool IFF an
- // instace of this allocator is constructed during global
- // initialization. See ticket #2359 for a complete explaination
- // ( http://svn.boost.org/trac/boost/ticket/2359 )
+ //! 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
- // default assignment operator
+ // Default copy constructor used.
- // not explicit, mimicking std::allocator [20.4.1]
+ // 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> &)
{
- // Required to ensure construction of singleton_pool IFF an
- // instace of this allocator is constructed during global
- // initialization. See ticket #2359 for a complete explaination
- // ( http://svn.boost.org/trac/boost/ticket/2359 )
+ //! 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
+ // Default destructor used.
static pointer address(reference r)
- { return &r; }
+ {
+ return &r;
+ }
static const_pointer address(const_reference s)
{ return &s; }
static size_type max_size()
@@ -211,9 +398,9 @@
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
+ (void) ptr; // Avoid unused variable warning.
}
bool operator==(const fast_pool_allocator &) const
@@ -223,7 +410,7 @@
static pointer allocate(const size_type n)
{
- const pointer ret = (n == 1) ?
+ const pointer ret = (n == 1) ?
static_cast<pointer>(
(singleton_pool<fast_pool_allocator_tag, sizeof(T),
UserAllocator, Mutex, NextSize, MaxSize>::malloc)() ) :
@@ -235,9 +422,11 @@
return ret;
}
static pointer allocate(const size_type n, const void * const)
- { return allocate(n); }
+ { //! 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)() );
@@ -246,7 +435,8 @@
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;
@@ -259,24 +449,36 @@
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>
+ unsigned MaxSize >
class fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>
{
public:
typedef void* pointer;
typedef const void* const_pointer;
typedef void value_type;
- template <class U> struct rebind {
+
+ //! \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;
};
};
Modified: trunk/boost/pool/poolfwd.hpp
==============================================================================
--- trunk/boost/pool/poolfwd.hpp (original)
+++ trunk/boost/pool/poolfwd.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -9,6 +9,12 @@
#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
@@ -48,7 +54,7 @@
typename Mutex = details::pool::default_mutex,
unsigned NextSize = 32,
unsigned MaxSize = 0>
-struct singleton_pool;
+class singleton_pool;
//
// Location: <boost/pool/pool_alloc.hpp>
Modified: trunk/boost/pool/simple_segregated_storage.hpp
==============================================================================
--- trunk/boost/pool/simple_segregated_storage.hpp (original)
+++ trunk/boost/pool/simple_segregated_storage.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -9,13 +9,55 @@
#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
{
@@ -26,38 +68,37 @@
simple_segregated_storage(const simple_segregated_storage &);
void operator=(const simple_segregated_storage &);
- // pre: (n > 0), (start != 0), (nextof(start) != 0)
- // post: (start != 0)
static void * try_malloc_n(void * & start, size_type n,
size_type partition_size);
protected:
- void * first;
+ 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.
+ */
- // 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")
void * find_prev(void * ptr);
// for the sake of code readability :)
static void * & nextof(void * const ptr)
- { return *(static_cast<void **>(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) { }
+ :first(0)
+ { //! Construct empty storage area.
+ //! \post empty()
+ }
- // 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 *
- // 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 **.
static void * segregate(void * block,
size_type nsz, size_type npartition_sz,
void * end = 0);
@@ -66,21 +107,25 @@
// Post: !empty()
void add_block(void * const block,
const size_type nsz, const size_type npartition_sz)
- {
- // Segregate this block and merge its free list into the
- // free list referred to by "first"
+ { //! 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)
- {
- // This (slower) version of add_block segregates the
- // block and merges its free list into our free list
- // in the proper order
-
+ { //! 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);
@@ -89,43 +134,50 @@
add_block(block, nsz, npartition_sz);
else
nextof(loc) = segregate(block, nsz, npartition_sz, nextof(loc));
+ BOOST_POOL_VALIDATE_INTERNALS
}
- // default destructor
+ // default destructor.
- bool empty() const { return (first == 0); }
+ bool empty() const
+ { //! \returns true only if simple_segregated_storage is empty.
+ return (first == 0);
+ }
- // pre: !empty()
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
+ // Increment the "first" pointer to point to the next chunk.
first = nextof(first);
+ BOOST_POOL_VALIDATE_INTERNALS
return ret;
}
- // pre: chunk was previously returned from a malloc() referring to the
- // same free list
- // post: !empty()
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
}
- // pre: chunk was previously returned from a malloc() referring to the
- // same free list
- // post: !empty()
void ordered_free(void * const chunk)
- {
- // This (slower) implementation of 'free' places the memory
- // back in the list in its proper order.
+ { //! 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
+ // Place either at beginning or in middle/end.
if (loc == 0)
(free)(chunk);
else
@@ -133,47 +185,81 @@
nextof(chunk) = nextof(loc);
nextof(loc) = chunk;
}
+ BOOST_POOL_VALIDATE_INTERNALS
}
- // Note: if you're allocating/deallocating n a lot, you should
- // be using an ordered pool.
- 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 * 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
+ // 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
+{
+ // 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 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;
@@ -181,6 +267,15 @@
}
}
+//! 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,
@@ -214,18 +309,20 @@
return block;
}
-// The following 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)
+//! \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)
@@ -245,10 +342,16 @@
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;
@@ -261,9 +364,14 @@
} 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
Modified: trunk/boost/pool/singleton_pool.hpp
==============================================================================
--- trunk/boost/pool/singleton_pool.hpp (original)
+++ trunk/boost/pool/singleton_pool.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -9,111 +9,242 @@
#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::singleton_default
-#include <boost/pool/detail/singleton.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 <typename Tag, unsigned RequestedSize,
+ /*!
+ 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>
-struct singleton_pool
+ unsigned MaxSize >
+class singleton_pool
{
public:
- typedef Tag tag;
- typedef Mutex mutex;
- typedef UserAllocator user_allocator;
- typedef typename pool<UserAllocator>::size_type size_type;
- typedef typename pool<UserAllocator>::difference_type difference_type;
+ 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);
- BOOST_STATIC_CONSTANT(unsigned, next_size = NextSize);
+ 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:
- struct pool_type: Mutex
+private:
+ singleton_pool();
+
+#ifndef BOOST_DOXYGEN
+ struct pool_type: public Mutex, public pool<UserAllocator>
{
- pool<UserAllocator> p;
- pool_type():p(RequestedSize, NextSize) { }
- };
+ pool_type() : pool<UserAllocator>(RequestedSize, NextSize, MaxSize) {}
+ }; // struct pool_type: Mutex
- typedef details::pool::singleton_default<pool_type> singleton;
+#else
+ //
+ // This is invoked when we build with Doxygen only:
+ //
+public:
+ static pool<UserAllocator> p; //!< For exposition only!
+#endif
- singleton_pool();
public:
static void * malloc BOOST_PREVENT_MACRO_SUBSTITUTION()
- {
- pool_type & p = singleton::instance();
+ { //! Equivalent to SingletonPool::p.malloc(); synchronized.
+ pool_type & p = get_pool();
details::pool::guard<Mutex> g(p);
- return (p.p.malloc)();
+ return (p.malloc)();
}
static void * ordered_malloc()
- {
- pool_type & p = singleton::instance();
+ { //! Equivalent to SingletonPool::p.ordered_malloc(); synchronized.
+ pool_type & p = get_pool();
details::pool::guard<Mutex> g(p);
- return p.p.ordered_malloc();
+ return p.ordered_malloc();
}
static void * ordered_malloc(const size_type n)
- {
- pool_type & p = singleton::instance();
+ { //! Equivalent to SingletonPool::p.ordered_malloc(n); synchronized.
+ pool_type & p = get_pool();
details::pool::guard<Mutex> g(p);
- return p.p.ordered_malloc(n);
+ return p.ordered_malloc(n);
}
static bool is_from(void * const ptr)
- {
- pool_type & p = singleton::instance();
+ { //! 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.p.is_from(ptr);
+ return p.is_from(ptr);
}
static void free BOOST_PREVENT_MACRO_SUBSTITUTION(void * const ptr)
- {
- pool_type & p = singleton::instance();
+ { //! Equivalent to SingletonPool::p.free(chunk); synchronized.
+ pool_type & p = get_pool();
details::pool::guard<Mutex> g(p);
- (p.p.free)(ptr);
+ (p.free)(ptr);
}
static void ordered_free(void * const ptr)
- {
- pool_type & p = singleton::instance();
+ { //! Equivalent to SingletonPool::p.ordered_free(chunk); synchronized.
+ pool_type & p = get_pool();
details::pool::guard<Mutex> g(p);
- p.p.ordered_free(ptr);
+ p.ordered_free(ptr);
}
static void free BOOST_PREVENT_MACRO_SUBSTITUTION(void * const ptr, const size_type n)
- {
- pool_type & p = singleton::instance();
+ { //! Equivalent to SingletonPool::p.free(chunk, n); synchronized.
+ pool_type & p = get_pool();
details::pool::guard<Mutex> g(p);
- (p.p.free)(ptr, n);
+ (p.free)(ptr, n);
}
static void ordered_free(void * const ptr, const size_type n)
- {
- pool_type & p = singleton::instance();
+ { //! Equivalent to SingletonPool::p.ordered_free(chunk, n); synchronized.
+ pool_type & p = get_pool();
details::pool::guard<Mutex> g(p);
- p.p.ordered_free(ptr, n);
+ p.ordered_free(ptr, n);
}
static bool release_memory()
- {
- pool_type & p = singleton::instance();
+ { //! Equivalent to SingletonPool::p.release_memory(); synchronized.
+ pool_type & p = get_pool();
details::pool::guard<Mutex> g(p);
- return p.p.release_memory();
+ return p.release_memory();
}
static bool purge_memory()
- {
- pool_type & p = singleton::instance();
+ { //! Equivalent to SingletonPool::p.purge_memory(); synchronized.
+ pool_type & p = get_pool();
details::pool::guard<Mutex> g(p);
- return p.p.purge_memory();
+ 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
Deleted: trunk/libs/pool/TODO.txt
==============================================================================
--- trunk/libs/pool/TODO.txt 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,10 +0,0 @@
-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)
-
-Here's a list of things TODO on the Pool library; these things will be done on an "as-I-get-around-to-it" basis:
- . Evaluate changes necessary for MSVC 6sp4 (Could use some help from people who own MSVC...)
- . Create more exhaustive test/example files, possibly other timing tests; convert to the new Boost testing harness
- . Add overloaded new/delete (pool_base) as Yet Another Interface.
- . Add a "grow" function (similar to std::realloc) to pool for attempting reallocation of contiguous memory; if it fails to find contiguous chunks, it should return 0.
Deleted: trunk/libs/pool/doc/concepts.html
==============================================================================
--- trunk/libs/pool/doc/concepts.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,407 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-<head>
- <meta http-equiv="Content-Language" content="en-us">
- <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
- <link href="pool.css" rel="stylesheet" type="text/css">
-
- <title>Pool Concepts</title>
-</head>
-
-<body>
- <img src="../../../boost.png" width="276" height="86" alt="C++ Boost">
-
- <h1 align="center">Pool Concepts</h1>
-
- <blockquote>
- "Dynamic memory allocation has been a fundamental part of most computer
- systems since roughly 1960..."<sup>1</sup>
- </blockquote>
-
- <p>Everyone uses dynamic memory allocation. If you have ever called
- <span class="code">malloc</span> or <span class="code">new</span>, 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
- <em>not</em> 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 "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.</p>
-
- <p>The heap is complicated. It has to satisfy any type of memory request,
- for any size, and do it <em>fast</em>. 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 <span class=
- "code">malloc</span>'ed out to a program, the memory manager must "save"
- some information in it — usually just its size. Then, when the block
- is <span class="code">free</span>'d, the memory manager can easily tell how
- large it is.</p>
-
- <table cellspacing="0" border="3" rules="none" style=
- "float: left; clear: both;" summary="">
- <caption>
- <em>Memory block, not allocated</em>
- </caption>
-
- <tr>
- <td style="background-color: red; text-align: center;">Memory not
- belonging to process</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: silver; text-align: center;">
- Memory used internally by memory allocator algorithm (usually 8-12
- bytes)</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 2em 0em; background-color: gray; text-align: center">Unused
- memory</td>
- </tr>
-
- <tr>
- <td style="background-color: red; text-align: center;">Memory not
- belonging to process</td>
- </tr>
- </table>
-
- <table cellspacing="0" border="3" rules="none" style=
- "float: right; clear: both;" summary="">
- <caption>
- <em>Memory block, allocated (used by program)</em>
- </caption>
-
- <tr>
- <td style="background-color: red; text-align: center;">Memory not
- belonging to process</td>
- </tr>
-
- <tr>
- <td style="background-color: silver; text-align: center;">Memory used
- internally by memory allocator algorithm (usually 4 bytes)</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 3em 0em; background-color: yellow; text-align: center">Memory
- usable by program</td>
- </tr>
-
- <tr>
- <td style="background-color: red; text-align: center;">Memory not
- belonging to process</td>
- </tr>
- </table>
-
- <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 "header fields" to
- take up one machine word in a block that is being used by the program. The
- obvious problem, then, is when small objects are dynamically allocated. For
- example, if <span class="code">int</span>s 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 <em>et. al.</em> state that an average-case memory
- overhead is about ten to twenty percent<sup>2</sup>.
- 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>
- <hr>
-
- <h1 align="center">Simple Segregated Storage</h1>
-
- <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
- <em>partitioning</em> a memory <em>block</em> into fixed-size
- <em>chunks</em>. Where the block comes from is not important until
- implementation time. A <em>Pool</em> is some object that uses Simple
- Segregated Storage in this fashion. To illustrate:</p>
-
- <table cellspacing="0" border="3" rules="none" align="center" style=
- "clear: both;" summary="">
- <caption>
- <em>Memory block, split into chunks</em>
- </caption>
-
- <tr>
- <td style="background-color: red; text-align: center;">Memory not
- belonging to process</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: gray; text-align: center;">Chunk
- 0</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: gray; text-align: center;">Chunk
- 1</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: gray; text-align: center;">Chunk
- 2</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: gray; text-align: center;">Chunk
- 3</td>
- </tr>
-
- <tr>
- <td style="background-color: red; text-align: center;">Memory not
- belonging to process</td>
- </tr>
- </table>
-
- <p>Each of the chunks in any given block are <strong>always</strong> 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 <em>free list</em>
- within the unused chunks. For example:</p>
-
- <table cellspacing="0" border="3" rules="none" style=
- "float: left; clear: both;" summary="">
- <caption>
- <em>Memory block, with no chunks allocated</em>
- </caption>
-
- <tr>
- <td style="background-color: red; text-align: center;">Memory not
- belonging to process</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: gray; text-align: center;">Chunk
- 0; points to Chunk 1</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: gray; text-align: center;">Chunk
- 1; points to Chunk 2</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: gray; text-align: center;">Chunk
- 2; points to Chunk 3</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: gray; text-align: center;">Chunk
- 3; end-of-list</td>
- </tr>
-
- <tr>
- <td style="background-color: red; text-align: center;">Memory not
- belonging to process</td>
- </tr>
- </table>
-
- <table cellspacing="0" border="3" rules="none" style=
- "float: right; clear: both;" summary="">
- <caption>
- <em>Memory block, with two chunks allocated</em>
- </caption>
-
- <tr>
- <td style="background-color: red; text-align: center;">Memory not
- belonging to process</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: gray; text-align: center;">Chunk
- 0; points to Chunk 2</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: silver; text-align: center;">Chunk
- 1 (in use by process)</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: gray; text-align: center;">Chunk
- 2; end-of-list</td>
- </tr>
-
- <tr>
- <td style=
- "padding: 1em 0em; background-color: silver; text-align: center;">Chunk
- 3 (in use by process)</td>
- </tr>
-
- <tr>
- <td style="background-color: red; text-align: center;">Memory not
- belonging to process</td>
- </tr>
- </table>
-
- <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 <em>no</em> 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>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.<br clear="all"></p>
- <hr>
-
- <h2>References</h2>
-
- <ol>
- <li><a name="ref1" id="ref1">Doug Lea, <em>A Memory Allocator</em>.</a>
- Available on the web at <a href=
- "http://gee.cs.oswego.edu/dl/html/malloc.html">http://gee.cs.oswego.edu/dl/html/malloc.html></li>
-
- <li><a name="ref2" id="ref2">Paul R. Wilson, Mark S. Johnstone, Michael
- Neely, and David Boles, "Dynamic Storage Allocation: A Survey and
- Critical Review" in <em>International Workshop on Memory Management</em>,
- September 1995, pg. 28, 36.</a> Available on the web at <a href=
- "ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps">ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps></li>
- </ol>
-
- <h2>Other Implementations</h2>
-
- <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>
-
- <ul>
- <li>"The C++ Programming Language", 3rd ed., by Bjarne Stroustrup,
- Section 19.4.2. Missing aspects:
-
- <ol>
- <li>Not portable</li>
-
- <li>Cannot handle allocations of arbitrary numbers of objects (this
- was left as an exercise)</li>
-
- <li>Not thread-safe</li>
-
- <li>Suffers from the static initialization problem</li>
- </ol>
- </li>
-
- <li>"MicroC/OS-II: The Real-Time Kernel", by Jean J. Labrosse, Chapter 7
- and Appendix B.04. This is an example of the Simple Segregated Storage
- scheme at work in the internals of an actual OS. Missing aspects:
-
- <ol>
- <li>Not portable (though this is OK, since it's part of its own
- OS)</li>
-
- <li>Cannot handle allocations of arbitrary numbers of blocks (which
- is also OK, since this feature is not needed)</li>
-
- <li>Requires non-intuitive user code to create and destroy the
- Pool</li>
- </ol>
- </li>
-
- <li>"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 solution; 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 aspects:
-
- <ol>
- <li>Requires non-intuitive user code to create and destroy the
- Pool</li>
- </ol>
- </li>
-
- <li>"Advanced C++: Programming Styles and Idioms", by James O. Coplien,
- Section 3.6. This has examples of both static and dynamic pooling.
- Missing aspects:
-
- <ol>
- <li>Not thread-safe</li>
-
- <li>The static pooling example is not portable</li>
- </ol>
- </li>
- </ul>
- <hr>
-
- <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
- "../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
- height="31" width="88"></a></p>
-
- <p>Revised
- <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->05
- December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38516" --></p>
-
- <p><i>Copyright © 2000, 2001 Stephen Cleary (scleary AT jerviswebb DOT
- com)</i></p>
-
- <p><i>Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or
- copy at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt>)</i></p>
-</body>
-</html>
Added: trunk/libs/pool/doc/html/BOOST_POOL_VALIDATE_INTERNALS.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/BOOST_POOL_VALIDATE_INTERNALS.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/simple_segregated_storage.hpp>">
+<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 <boost/pool/singleton_pool.hpp>">
+</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: <<a class="link" href="header/boost/pool/simple_segregated_storage_hpp.html" title="Header <boost/pool/simple_segregated_storage.hpp>">boost/pool/simple_segregated_storage.hpp</a>>
+
+</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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost/default_user_allocator_malloc_free.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/default_user_allocator_malloc_free.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/pool.hpp>">
+<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 — 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: <<a class="link" href="../header/boost/pool/pool_hpp.html" title="Header <boost/pool/pool.hpp>">boost/pool/pool.hpp</a>>
+
+</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#id490297-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#id490299-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#id490310-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="id1026603"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id1026606"></a><h3>
+<a name="id490297-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="id490299-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="id490310-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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost/default_user_allocator_new_delete.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/default_user_allocator_new_delete.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/pool.hpp>">
+<link rel="prev" href="../header/boost/pool/pool_hpp.html" title="Header <boost/pool/pool.hpp>">
+<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 — 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: <<a class="link" href="../header/boost/pool/pool_hpp.html" title="Header <boost/pool/pool.hpp>">boost/pool/pool.hpp</a>>
+
+</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#id490230-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#id490232-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#id490246-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="id1026255"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id1026258"></a><h3>
+<a name="id490230-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="id490232-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="id490246-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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost/fast_pool_allocator.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/fast_pool_allocator.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/pool_alloc.hpp>">
+<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 — 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: <<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span><span class="keyword">template</span><span class="special"><</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">></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">&</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">&</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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></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<T>
+ // to fast_pool_allocator<U>.</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></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"><</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">></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#id491734-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"><</span><span class="keyword">typename</span> U<span class="special">></span>
+ <a class="link" href="fast_pool_allocator.html#id491748-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"><</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">></span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="fast_pool_allocator.html#id491672-bb">public member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="fast_pool_allocator.html#id491675-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">&</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="fast_pool_allocator.html#id491690-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#id491705-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">&</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#id491719-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">&</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#id491777-bb">public static functions</a></span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <a class="link" href="fast_pool_allocator.html#id491779-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#id491790-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#id491801-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#id491807-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#id491818-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#id491837-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#id491846-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#id491866-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="id1037791"></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="id1037906"></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="id491734-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"><</span><span class="keyword">typename</span> U<span class="special">></span>
+ <a name="id491748-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"><</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">></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>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id1038071"></a><h3>
+<a name="id491672-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="id491675-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">&</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="id491690-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="id491705-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">&</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="id491719-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">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id1038278"></a><h3>
+<a name="id491777-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="id491779-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="id491790-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="id491801-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="id491807-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="id491818-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="id491837-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="id491846-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="id491866-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="id1038791"></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost/fast_pool_allocator/rebind.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/fast_pool_allocator/rebind.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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#id1037791" 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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">
+</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#id1037791"><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_id491880.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 — Nested class rebind allows for transformation from fast_pool_allocator<T> to fast_pool_allocator<U>. </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: <<a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span>
+
+<span class="comment">// Nested class rebind allows for transformation from fast_pool_allocator<T>
+// to fast_pool_allocator<U>.</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></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"><</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">></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="id1038785"></a><h2>Description</h2>
+<p>Nested class rebind allows for transformation from fast_pool_allocator<T> to fast_pool_allocator<U> 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 © 2000-2006 Stephen Cleary<br>Copyright © 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#id1037791"><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_id491880.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: trunk/libs/pool/doc/html/boost/fast_pool_allocator_tag.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/fast_pool_allocator_tag.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/pool_alloc.hpp>">
+<link rel="prev" href="pool_allocator_void__UserAllocator__M_id491365/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_id491365/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 — 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: <<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</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 © 2000-2006 Stephen Cleary<br>Copyright © 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_id491365/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: trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id491880.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id491880.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 <boost/pool/pool_alloc.hpp>">
+<link rel="prev" href="fast_pool_allocator/rebind.html" title="Struct template rebind">
+<link rel="next" href="fast_pool_allocator_void__UserAllocat_id491880/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_id491880/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.fast_pool_allocator_void,_UserAllocat_id491880"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></span></h2>
+<p>boost::fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize> — Specialization of fast_pool_allocator<void>. </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: <<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span><span class="keyword">template</span><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">></span>
+<span class="keyword">class</span> <a class="link" href="fast_pool_allocator_void__UserAllocat_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">fast_pool_allocator</a><span class="special"><</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">></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_id491880.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_id491880.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_id491880.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<T>
+ // to fast_pool_allocator<U>.</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></span>
+ <span class="keyword">struct</span> <a class="link" href="fast_pool_allocator_void__UserAllocat_id491880/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"><</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">></span> <a class="link" href="fast_pool_allocator_void__UserAllocat_id491880/rebind.html#boost.fast_pool_allocator_void,_UserAllocat_id491880.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="id1039157"></a><h2>Description</h2>
+<p>Specialization of fast_pool_allocator<void> 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 © 2000-2006 Stephen Cleary<br>Copyright © 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_id491880/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id491880/rebind.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id491880/rebind.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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_id491880.html#id1039157" title="Description">
+<link rel="prev" href="../fast_pool_allocator_void__UserAllocat_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">
+<link rel="next" href="../../header/boost/pool/poolfwd_hpp.html" title="Header <boost/pool/poolfwd.hpp>">
+</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_id491880.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fast_pool_allocator_void__UserAllocat_id491880.html#id1039157"><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_id491880.rebind"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template rebind</span></h2>
+<p>boost::fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>::rebind — Nested class rebind allows for transformation from fast_pool_allocator<T> to fast_pool_allocator<U>. </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: <<a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span>
+
+<span class="comment">// Nested class rebind allows for transformation from fast_pool_allocator<T>
+// to fast_pool_allocator<U>.</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></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"><</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">></span> <a name="boost.fast_pool_allocator_void,_UserAllocat_id491880.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="id1039310"></a><h2>Description</h2>
+<p>Nested class rebind allows for transformation from fast_pool_allocator<T> to fast_pool_allocator<U> 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 © 2000-2006 Stephen Cleary<br>Copyright © 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_id491880.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fast_pool_allocator_void__UserAllocat_id491880.html#id1039157"><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: trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id506284.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id506284.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 <boost/pool/pool_alloc.hpp>">
+<link rel="prev" href="fast_pool_allocator/rebind.html" title="Struct template rebind">
+<link rel="next" href="fast_pool_allocator_void__UserAllocat_id506284/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_id506284/rebind.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.fast_pool_allocator_void,_UserAllocat_id506284"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></span></h2>
+<p>boost::fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize> — Specialization of fast_pool_allocator<void>. </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: <<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span><span class="keyword">template</span><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">></span>
+<span class="keyword">class</span> <a class="link" href="fast_pool_allocator_void__UserAllocat_id506284.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">fast_pool_allocator</a><span class="special"><</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">></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_id506284.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_id506284.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_id506284.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<T>
+ // to fast_pool_allocator<U>.</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></span>
+ <span class="keyword">struct</span> <a class="link" href="fast_pool_allocator_void__UserAllocat_id506284/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"><</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">></span> <a class="link" href="fast_pool_allocator_void__UserAllocat_id506284/rebind.html#boost.fast_pool_allocator_void,_UserAllocat_id506284.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="id1051199"></a><h2>Description</h2>
+<p>Specialization of fast_pool_allocator<void> 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 © 2000-2006 Stephen Cleary<br>Copyright © 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_id506284/rebind.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id506284/rebind.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/fast_pool_allocator_void__UserAllocat_id506284/rebind.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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_id506284.html#id1051199" title="Description">
+<link rel="prev" href="../fast_pool_allocator_void__UserAllocat_id506284.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">
+<link rel="next" href="../../header/boost/pool/poolfwd_hpp.html" title="Header <boost/pool/poolfwd.hpp>">
+</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_id506284.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fast_pool_allocator_void__UserAllocat_id506284.html#id1051199"><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_id506284.rebind"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template rebind</span></h2>
+<p>boost::fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>::rebind — Nested class rebind allows for transformation from fast_pool_allocator<T> to fast_pool_allocator<U>. </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: <<a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span>
+
+<span class="comment">// Nested class rebind allows for transformation from fast_pool_allocator<T>
+// to fast_pool_allocator<U>.</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></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"><</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">></span> <a name="boost.fast_pool_allocator_void,_UserAllocat_id506284.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="id1051352"></a><h2>Description</h2>
+<p>Nested class rebind allows for transformation from fast_pool_allocator<T> to fast_pool_allocator<U> 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 © 2000-2006 Stephen Cleary<br>Copyright © 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_id506284.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fast_pool_allocator_void__UserAllocat_id506284.html#id1051199"><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: trunk/libs/pool/doc/html/boost/object_pool.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/object_pool.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/object_pool.hpp>">
+<link rel="prev" href="../header/boost/pool/object_pool_hpp.html" title="Header <boost/pool/object_pool.hpp>">
+<link rel="next" href="../header/boost/pool/pool_hpp.html" title="Header <boost/pool/pool.hpp>">
+</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 — 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: <<a class="link" href="../header/boost/pool/object_pool_hpp.html" title="Header <boost/pool/object_pool.hpp>">boost/pool/object_pool.hpp</a>>
+
+</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> UserAllocator<span class="special">></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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></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<UserAllocator>::size_type </span>
+ <span class="keyword">typedef</span> <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special"><</span> <span class="identifier">UserAllocator</span> <span class="special">></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<UserAllocator>::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#id490173-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#id490197-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#id489913-bb">protected member functions</a></span>
+ <a class="link" href="pool.html" title="Class template pool">pool</a><span class="special"><</span> <span class="identifier">UserAllocator</span> <span class="special">></span> <span class="special">&</span> <a class="link" href="object_pool.html#id489915-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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></span> <span class="special">&</span> <a class="link" href="object_pool.html#id489936-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#id489957-bb">protected static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span><span class="special">&</span> <a class="link" href="object_pool.html#id489960-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#id489978-bb">public member functions</a></span>
+ <span class="identifier">element_type</span> <span class="special">*</span> <a class="link" href="object_pool.html#id489980-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#id489996-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#id490018-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#id490045-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"><</span><span class="keyword">typename</span> Arg1<span class="special">,</span> <span class="special">...</span><span class="keyword">class</span> ArgN<span class="special">></span>
+ <span class="identifier">element_type</span> <span class="special">*</span> <a class="link" href="object_pool.html#id490058-bb"><span class="identifier">construct</span></a><span class="special">(</span><span class="identifier">Arg1</span> <span class="special">&</span><span class="special">,</span> <span class="special">...</span><span class="identifier">ArgN</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">void</span> <a class="link" href="object_pool.html#id490117-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#id490142-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#id490155-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="id1025057"></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="id1025090"></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="id490173-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="id490197-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="id1025211"></a><h3>
+<a name="id489913-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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></span> <span class="special">&</span> <a name="id489915-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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></span> <span class="special">&</span> <a name="id489936-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="id1025361"></a><h3>
+<a name="id489957-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">&</span> <a name="id489960-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="id1025441"></a><h3>
+<a name="id489978-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="id489980-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="id489996-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="id490018-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="id490045-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"><</span><span class="keyword">typename</span> Arg1<span class="special">,</span> <span class="special">...</span><span class="keyword">class</span> ArgN<span class="special">></span>
+ <span class="identifier">element_type</span> <span class="special">*</span> <a name="id490058-bb"></a><span class="identifier">construct</span><span class="special">(</span><span class="identifier">Arg1</span> <span class="special">&</span><span class="special">,</span> <span class="special">...</span><span class="identifier">ArgN</span> <span class="special">&</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="id490117-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->~ElementType(); this->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="id490142-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="id490155-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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost/pool.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/pool.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/pool.hpp>">
+<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 <boost/pool/pool_alloc.hpp>">
+</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 — 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: <<a class="link" href="../header/boost/pool/pool_hpp.html" title="Header <boost/pool/pool.hpp>">boost/pool/pool.hpp</a>>
+
+</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> UserAllocator<span class="special">></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"><</span> <span class="identifier">UserAllocator</span><span class="special">::</span><span class="identifier">size_type</span> <span class="special">></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#id490806-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#id490843-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#id490380-bb">private member functions</a></span>
+ <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="pool.html#id490382-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#id490402-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#id490418-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"><</span> <span class="identifier">size_type</span> <span class="special">></span> <span class="special">&</span> <a class="link" href="pool.html#id490420-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"><</span> <span class="identifier">size_type</span> <span class="special">></span> <span class="special">&</span> <a class="link" href="pool.html#id490436-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"><</span> <span class="identifier">size_type</span> <span class="special">></span> <a class="link" href="pool.html#id490453-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#id490478-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#id490491-bb">protected static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <a class="link" href="pool.html#id490494-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">&</span> <a class="link" href="pool.html#id490534-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#id490552-bb">public member functions</a></span>
+ <span class="keyword">bool</span> <a class="link" href="pool.html#id490555-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#id490568-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#id490584-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#id490597-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#id490615-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#id490628-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#id490643-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#id490656-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#id490669-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#id490682-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#id490703-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#id490727-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#id490744-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#id490766-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#id490788-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="id1030091"></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="id1030115"></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="id490806-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="id490843-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="id1030284"></a><h3>
+<a name="id490380-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="id490382-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="id490402-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="id1030399"></a><h3>
+<a name="id490418-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"><</span> <span class="identifier">size_type</span> <span class="special">></span> <span class="special">&</span> <a name="id490420-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"><</span> <span class="identifier">size_type</span> <span class="special">></span> <span class="special">&</span> <a name="id490436-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"><</span> <span class="identifier">size_type</span> <span class="special">></span> <a name="id490453-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="id490478-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="id1030657"></a><h3>
+<a name="id490491-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="id490494-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">&</span> <a name="id490534-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="id1030868"></a><h3>
+<a name="id490552-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="id490555-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="id490568-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="id490584-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="id490597-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="id490615-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="id490628-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="id490643-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="id490656-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="id490669-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="id490682-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="id490703-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="id490727-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="id490744-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="id490766-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="id490788-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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost/pool_allocator.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/pool_allocator.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/pool_alloc.hpp>">
+<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 — 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: <<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span><span class="keyword">template</span><span class="special"><</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">></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">&</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">&</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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></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<T> to
+ // pool_allocator<U>.</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></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"><</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">></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#id491194-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"><</span><span class="keyword">typename</span> U<span class="special">></span>
+ <a class="link" href="pool_allocator.html#id491213-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"><</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">></span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="pool_allocator.html#id491162-bb">public member functions</a></span>
+ <span class="keyword">bool</span> <a class="link" href="pool_allocator.html#id491165-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">&</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#id491179-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">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="pool_allocator.html#id491246-bb">public static functions</a></span>
+ <span class="keyword">static</span> <span class="identifier">pointer</span> <a class="link" href="pool_allocator.html#id491249-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#id491260-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#id491270-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#id491276-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">&</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#id491292-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#id491303-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#id491314-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#id491339-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="id1033874"></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="id1033947"></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="id491194-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"><</span><span class="keyword">typename</span> U<span class="special">></span>
+ <a name="id491213-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"><</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">></span> <span class="special">&</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="id1035242"></a><h3>
+<a name="id491162-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="id491165-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">&</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="id491179-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">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id1035354"></a><h3>
+<a name="id491246-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="id491249-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="id491260-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="id491270-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="id491276-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">&</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="id491292-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="id491303-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="id491314-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="id491339-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="id1035946"></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost/pool_allocator/rebind.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/pool_allocator/rebind.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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#id1033874" title="Description">
+<link rel="prev" href="../pool_allocator.html" title="Class template pool_allocator">
+<link rel="next" href="../pool_allocator_void__UserAllocator__M_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">
+</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#id1033874"><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_id491365.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 — Nested class rebind allows for transformation from pool_allocator<T> to pool_allocator<U>. </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: <<a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span>
+
+<span class="comment">// Nested class rebind allows for transformation from pool_allocator<T> to
+// pool_allocator<U>.</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></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"><</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">></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="id1035940"></a><h2>Description</h2>
+<p>Nested class rebind allows for transformation from pool_allocator<T> to pool_allocator<U> 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 © 2000-2006 Stephen Cleary<br>Copyright © 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#id1033874"><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_id491365.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: trunk/libs/pool/doc/html/boost/pool_allocator_tag.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/pool_allocator_tag.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/pool_alloc.hpp>">
+<link rel="prev" href="../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">
+<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: <<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</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="id1032774"></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id491365.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id491365.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 <boost/pool/pool_alloc.hpp>">
+<link rel="prev" href="pool_allocator/rebind.html" title="Struct template rebind">
+<link rel="next" href="pool_allocator_void__UserAllocator__M_id491365/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_id491365/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.pool_allocator_void,_UserAllocator,_M_id491365"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></span></h2>
+<p>boost::pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize> — Specialization of pool_allocator<void>. </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: <<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span><span class="keyword">template</span><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">></span>
+<span class="keyword">class</span> <a class="link" href="pool_allocator_void__UserAllocator__M_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">pool_allocator</a><span class="special"><</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">></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_id491365.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_id491365.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_id491365.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<T> to
+ // pool_allocator<U>.</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></span>
+ <span class="keyword">struct</span> <a class="link" href="pool_allocator_void__UserAllocator__M_id491365/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"><</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">></span> <a class="link" href="pool_allocator_void__UserAllocator__M_id491365/rebind.html#boost.pool_allocator_void,_UserAllocator,_M_id491365.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="id1036312"></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 © 2000-2006 Stephen Cleary<br>Copyright © 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_id491365/rebind.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id491365/rebind.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id491365/rebind.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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_id491365.html#id1036312" title="Description">
+<link rel="prev" href="../pool_allocator_void__UserAllocator__M_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">
+<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_id491365.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool_allocator_void__UserAllocator__M_id491365.html#id1036312"><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_id491365.rebind"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template rebind</span></h2>
+<p>boost::pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>::rebind — Nested class rebind allows for transformation from pool_allocator<T> to pool_allocator<U>. </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: <<a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span>
+
+<span class="comment">// Nested class rebind allows for transformation from pool_allocator<T> to
+// pool_allocator<U>.</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></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"><</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">></span> <a name="boost.pool_allocator_void,_UserAllocator,_M_id491365.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="id1036471"></a><h2>Description</h2>
+<p>Nested class rebind allows for transformation from pool_allocator<T> to pool_allocator<U> 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 © 2000-2006 Stephen Cleary<br>Copyright © 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_id491365.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool_allocator_void__UserAllocator__M_id491365.html#id1036312"><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: trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id505769.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id505769.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 <boost/pool/pool_alloc.hpp>">
+<link rel="prev" href="pool_allocator/rebind.html" title="Struct template rebind">
+<link rel="next" href="pool_allocator_void__UserAllocator__M_id505769/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_id505769/rebind.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.pool_allocator_void,_UserAllocator,_M_id505769"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></span></h2>
+<p>boost::pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize> — Specialization of pool_allocator<void>. </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: <<a class="link" href="../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span><span class="keyword">template</span><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">></span>
+<span class="keyword">class</span> <a class="link" href="pool_allocator_void__UserAllocator__M_id505769.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">pool_allocator</a><span class="special"><</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">></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_id505769.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_id505769.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_id505769.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<T> to
+ // pool_allocator<U>.</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></span>
+ <span class="keyword">struct</span> <a class="link" href="pool_allocator_void__UserAllocator__M_id505769/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"><</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">></span> <a class="link" href="pool_allocator_void__UserAllocator__M_id505769/rebind.html#boost.pool_allocator_void,_UserAllocator,_M_id505769.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="id1048354"></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 © 2000-2006 Stephen Cleary<br>Copyright © 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_id505769/rebind.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id505769/rebind.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/pool_allocator_void__UserAllocator__M_id505769/rebind.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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_id505769.html#id1048354" title="Description">
+<link rel="prev" href="../pool_allocator_void__UserAllocator__M_id505769.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">
+<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_id505769.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool_allocator_void__UserAllocator__M_id505769.html#id1048354"><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_id505769.rebind"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template rebind</span></h2>
+<p>boost::pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>::rebind — Nested class rebind allows for transformation from pool_allocator<T> to pool_allocator<U>. </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: <<a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header <boost/pool/pool_alloc.hpp>">boost/pool/pool_alloc.hpp</a>>
+
+</span>
+
+<span class="comment">// Nested class rebind allows for transformation from pool_allocator<T> to
+// pool_allocator<U>.</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></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"><</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">></span> <a name="boost.pool_allocator_void,_UserAllocator,_M_id505769.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="id1048513"></a><h2>Description</h2>
+<p>Nested class rebind allows for transformation from pool_allocator<T> to pool_allocator<U> 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 © 2000-2006 Stephen Cleary<br>Copyright © 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_id505769.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool_allocator_void__UserAllocator__M_id505769.html#id1048354"><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: trunk/libs/pool/doc/html/boost/simple_segregated_storage.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/simple_segregated_storage.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/simple_segregated_storage.hpp>">
+<link rel="prev" href="../header/boost/pool/simple_segregated_storage_hpp.html" title="Header <boost/pool/simple_segregated_storage.hpp>">
+<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 — 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: <<a class="link" href="../header/boost/pool/simple_segregated_storage_hpp.html" title="Header <boost/pool/simple_segregated_storage.hpp>">boost/pool/simple_segregated_storage.hpp</a>>
+
+</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> SizeType<span class="special">></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#id492017-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">&</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="simple_segregated_storage.html#id492335-bb"><span class="identifier">simple_segregated_storage</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+ simple_segregated_storage& <a class="link" href="simple_segregated_storage.html#id492026-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">&</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="simple_segregated_storage.html#id492036-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#id492038-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">&</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#id492070-bb">protected member functions</a></span>
+ <span class="keyword">void</span> <span class="special">*</span> <a class="link" href="simple_segregated_storage.html#id492072-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#id492095-bb">protected static functions</a></span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="special">*</span><span class="special">&</span> <a class="link" href="simple_segregated_storage.html#id492097-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#id492118-bb">public member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="simple_segregated_storage.html#id492120-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#id492151-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#id492175-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#id492193-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#id492206-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#id492228-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#id492250-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#id492269-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#id492305-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#id492343-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#id492346-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="id1042058"></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<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 <code class="computeroutput">malloc()</code> will result in a constantly-increasing sequence of values, as determined by <code class="computeroutput">std::less<void *></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="id1042084"></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="id492017-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">&</span><span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem">
+<pre class="literallayout"><a name="id492335-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& <a name="id492026-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">&</span><span class="special">)</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id1042212"></a><h3>
+<a name="id492036-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="id492038-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">&</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 > 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="id1042315"></a><h3>
+<a name="id492070-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="id492072-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="id1042388"></a><h3>
+<a name="id492095-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">&</span> <a name="id492097-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<void **>(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="id1042471"></a><h3>
+<a name="id492118-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="id492120-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="id492151-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="id492175-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="id492193-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="id492206-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="id492228-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="id492250-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="id492269-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="id492305-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="id1043094"></a><h3>
+<a name="id492343-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="id492346-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 >= sizeof(void *) </p>
+<p>npartition_sz = sizeof(void *) * i, for some integer i </p>
+<p>nsz >= 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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost/singleton_pool.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/singleton_pool.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/singleton_pool.hpp>">
+<link rel="prev" href="../header/boost/pool/singleton_pool_hpp.html" title="Header <boost/pool/singleton_pool.hpp>">
+<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: <<a class="link" href="../header/boost/pool/singleton_pool_hpp.html" title="Header <boost/pool/singleton_pool.hpp>">boost/pool/singleton_pool.hpp</a>>
+
+</span><span class="keyword">template</span><span class="special"><</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">></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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></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#id492581-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#id492572-bb">public member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="singleton_pool/object_creator.html#id492575-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#id492670-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#id492671-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#id492673-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#id492683-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#id492694-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#id492708-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#id492727-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#id492743-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#id492757-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#id492778-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#id492797-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#id492808-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#id492819-bb">private static functions</a></span>
+ <span class="keyword">static</span> <span class="identifier">pool_type</span> <span class="special">&</span> <a class="link" href="singleton_pool.html#id492821-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"><</span> <span class="identifier">UserAllocator</span> <span class="special">></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="id1045588"></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<UserAllocator> 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="id1045726"></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="id1045770"></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="id492670-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="id1045806"></a><h3>
+<a name="id492671-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="id492673-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="id492683-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="id492694-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="id492708-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="id492727-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="id492743-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="id492757-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="id492778-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="id492797-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="id492808-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="id1046302"></a><h3>
+<a name="id492819-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">&</span> <a name="id492821-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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost/singleton_pool/object_creator.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost/singleton_pool/object_creator.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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#id1045588" 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#id1045588"><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: <<a class="link" href="../../header/boost/pool/singleton_pool_hpp.html" title="Header <boost/pool/singleton_pool.hpp>">boost/pool/singleton_pool.hpp</a>>
+
+</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#id492581-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#id492572-bb">public member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="object_creator.html#id492575-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="id1046466"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id1046469"></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="id492581-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="id1046508"></a><h3>
+<a name="id492572-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="id492575-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 © 2000-2006 Stephen Cleary<br>Copyright © 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#id1045588"><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: trunk/libs/pool/doc/html/boost_pool/appendices.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/appendices.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/appendices/acknowledgements.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/appendices/acknowledgements.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/appendices/faq.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/appendices/faq.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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>
+<a name="boost_pool.appendices.faq.why_should_i_use_pool_"></a><h6>
+<a name="boost_pool.appendices.faq.why_should_i_use_pool_-heading"></a>
+ <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>
+<a name="boost_pool.appendices.faq.when_should_i_use_pool_"></a><h6>
+<a name="boost_pool.appendices.faq.when_should_i_use_pool_-heading"></a>
+ <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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/appendices/history.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/appendices/history.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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>
+<a name="boost_pool.appendices.history.version_2_0_0__january_11__2011"></a><h5>
+<a name="boost_pool.appendices.history.version_2_0_0__january_11__2011-heading"></a>
+ <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>
+<a name="boost_pool.appendices.history.version_1_0_0__january_1__2000"></a><h5>
+<a name="boost_pool.appendices.history.version_1_0_0__january_1__2000-heading"></a>
+ <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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/appendices/implementations.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/appendices/implementations.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/appendices/references.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/appendices/references.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/appendices/tests.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/appendices/tests.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/appendices/tickets.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/appendices/tickets.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/appendices/todo.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/appendices/todo.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/indexes.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/indexes.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/indexes/s01.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/indexes/s01.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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="id1047535"></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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/indexes/s02.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/indexes/s02.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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="id1048883"></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/indexes/s03.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/indexes/s03.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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="id1049407"></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/indexes/s04.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/indexes/s04.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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="id1051438"></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 <boost/pool/pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool.hpp ></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 6. 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 <boost/pool/object_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/object_pool.hpp ></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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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 6. 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 6. 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 6. 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 6. 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 6. 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 6. 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 6. 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 <boost/pool/object_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/object_pool.hpp ></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 6. 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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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 5. 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 1. 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 7. 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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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 6. 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 <boost/pool/pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool.hpp ></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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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 5. 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 1. 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<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><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 4. 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 4. 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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 6. 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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 < boost/pool/object_pool.hpp ></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 <boost/pool/object_pool.hpp>"><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 <boost/pool/object_pool.hpp>"><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 <boost/pool/object_pool.hpp>"><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 <boost/pool/object_pool.hpp>"><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 <boost/pool/object_pool.hpp>"><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 <boost/pool/object_pool.hpp>"><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 <boost/pool/object_pool.hpp>"><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 < boost/pool/pool.hpp ></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 <boost/pool/pool.hpp>"><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 <boost/pool/pool.hpp>"><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 <boost/pool/pool.hpp>"><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 <boost/pool/pool.hpp>"><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 <boost/pool/pool.hpp>"><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 <boost/pool/pool.hpp>"><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 < boost/pool/poolfwd.hpp ></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 <boost/pool/poolfwd.hpp>"><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 < boost/pool/pool_alloc.hpp ></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 <boost/pool/pool_alloc.hpp>"><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 <boost/pool/pool_alloc.hpp>"><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 <boost/pool/pool_alloc.hpp>"><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 <boost/pool/pool_alloc.hpp>"><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 <boost/pool/pool_alloc.hpp>"><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 <boost/pool/pool_alloc.hpp>"><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 <boost/pool/pool_alloc.hpp>"><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 <boost/pool/pool_alloc.hpp>"><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 <boost/pool/pool_alloc.hpp>"><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 <boost/pool/pool_alloc.hpp>"><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 < boost/pool/simple_segregated_storage.hpp ></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 <boost/pool/simple_segregated_storage.hpp>"><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 <boost/pool/simple_segregated_storage.hpp>"><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 <boost/pool/simple_segregated_storage.hpp>"><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 <boost/pool/simple_segregated_storage.hpp>"><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 <boost/pool/simple_segregated_storage.hpp>"><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 <boost/pool/simple_segregated_storage.hpp>"><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 <boost/pool/simple_segregated_storage.hpp>"><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 <boost/pool/simple_segregated_storage.hpp>"><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 <boost/pool/simple_segregated_storage.hpp>"><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 <boost/pool/simple_segregated_storage.hpp>"><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 <boost/pool/simple_segregated_storage.hpp>"><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 < boost/pool/singleton_pool.hpp ></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 <boost/pool/singleton_pool.hpp>"><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 <boost/pool/singleton_pool.hpp>"><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 <boost/pool/singleton_pool.hpp>"><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 <boost/pool/singleton_pool.hpp>"><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 <boost/pool/singleton_pool.hpp>"><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 <boost/pool/singleton_pool.hpp>"><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 <boost/pool/singleton_pool.hpp>"><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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 <boost/pool/object_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/object_pool.hpp ></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 <boost/pool/pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool.hpp ></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 <boost/pool/poolfwd.hpp>"><span class="index-entry-level-1">Header < boost/pool/poolfwd.hpp ></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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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 <boost/pool/singleton_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/singleton_pool.hpp ></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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 <boost/pool/singleton_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/singleton_pool.hpp ></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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 6. 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 7. 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 <boost/pool/object_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/object_pool.hpp ></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 <boost/pool/pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool.hpp ></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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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 5. 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 7. 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 4. 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 <boost/pool/object_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/object_pool.hpp ></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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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 <boost/pool/singleton_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/singleton_pool.hpp ></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 5. 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 7. 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 <boost/pool/object_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/object_pool.hpp ></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 6. 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 4. 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 5. 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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 <boost/pool/pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool.hpp ></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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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 1. 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 5. 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 5. 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 5. 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 5. 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 5. 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 5. 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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 <boost/pool/singleton_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/singleton_pool.hpp ></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 <boost/pool/singleton_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/singleton_pool.hpp ></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 6. 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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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 <boost/pool/singleton_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/singleton_pool.hpp ></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 5. 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 1. 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 2. 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 3. 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 7. 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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 1. 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 1. 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 1. 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 1. 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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 <boost/pool/object_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/object_pool.hpp ></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 <boost/pool/pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool.hpp ></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 <boost/pool/pool_alloc.hpp>"><span class="index-entry-level-1">Header < boost/pool/pool_alloc.hpp ></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 <boost/pool/simple_segregated_storage.hpp>"><span class="index-entry-level-1">Header < boost/pool/simple_segregated_storage.hpp ></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 <boost/pool/singleton_pool.hpp>"><span class="index-entry-level-1">Header < boost/pool/singleton_pool.hpp ></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 2. 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 2. 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 2. 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 3. 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 7. 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 7. 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 7. 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 7. 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 7. 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_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>"><span class="index-entry-level-1">Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/pool.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/pool.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/pool/conventions.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/pool/conventions.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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"><></span></code>;
+ that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special"><></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"><</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">></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/pool/installation.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/pool/installation.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/pool/interfaces.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/pool/interfaces.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,580 @@
+<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>
+<a name="boost_pool.pool.interfaces.introduction"></a><h5>
+<a name="boost_pool.pool.interfaces.introduction-heading"></a>
+ <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>
+<a name="boost_pool.pool.interfaces.terminology_and_tradeoffs"></a><h4>
+<a name="boost_pool.pool.interfaces.terminology_and_tradeoffs-heading"></a>
+ <a class="link" href="interfaces.html#boost_pool.pool.interfaces.terminology_and_tradeoffs">Terminology
+ and Tradeoffs</a>
+ </h4>
+<a name="boost_pool.pool.interfaces.object_usage_vs__singleton_usage"></a><h6>
+<a name="boost_pool.pool.interfaces.object_usage_vs__singleton_usage-heading"></a>
+ <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>
+<a name="boost_pool.pool.interfaces.out_of_memory_conditions__exceptions_vs__null_return"></a><h6>
+<a name="boost_pool.pool.interfaces.out_of_memory_conditions__exceptions_vs__null_return-heading"></a>
+ <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>
+<a name="boost_pool.pool.interfaces.ordered_versus_unordered"></a><h6>
+<a name="boost_pool.pool.interfaces.ordered_versus_unordered-heading"></a>
+ <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 <boost/pool/pool.hpp>">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 <boost/pool/pool.hpp>">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"><</span><span class="keyword">char</span> <span class="special">*>(</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"><</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">></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">&);</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">&);</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"><></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"><</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 <boost/pool/object_pool.hpp>">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"><</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">></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">&);</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">&);</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"><</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">pool</span><span class="special"><</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="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"><</span><span class="identifier">X</span><span class="special">></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"><</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 <boost/pool/singleton_pool.hpp>">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"><</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">></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"><</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">pool</span><span class="special"><</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">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"><</span><span class="identifier">size_type</span><span class="special">></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"><</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">)></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"><</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 <boost/pool/pool_alloc.hpp>">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"><</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">></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">&</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">&</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"><</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">pool</span><span class="special"><</span><span class="identifier">UserAllcoator</span><span class="special">>::</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"><</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></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"><</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">></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">&);</span>
+ <span class="comment">// The following is not explicit, mimicking std::allocator [20.4.1]</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">U</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"><</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">></span> <span class="special">&);</span>
+ <span class="identifier">pool_allocator</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</span> <span class="identifier">pool_allocator</span> <span class="special">&);</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">&</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">&)</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">&)</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"><</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">></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">&</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">&</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"><</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">pool</span><span class="special"><</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">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></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"><</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">></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">&);</span>
+ <span class="comment">// The following is not explicit, mimicking std::allocator [20.4.1]</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">U</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"><</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">UserAllocator</span><span class="special">></span> <span class="special">&);</span>
+ <span class="identifier">fast_pool_allocator</span> <span class="special">&</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">&);</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">&</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">&)</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">&)</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"><</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"><</span><span class="keyword">int</span><span class="special">></span> <span class="special">></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"><</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<boost::pool_allocator_tag, sizeof(int)>::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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/pool/introduction.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/pool/introduction.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,103 @@
+<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>
+<a name="boost_pool.pool.introduction.what_is_pool_"></a><h6>
+<a name="boost_pool.pool.introduction.what_is_pool_-heading"></a>
+ <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>
+<a name="boost_pool.pool.introduction.why_should_i_use_pool_"></a><h6>
+<a name="boost_pool.pool.introduction.why_should_i_use_pool_-heading"></a>
+ <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>
+<a name="boost_pool.pool.introduction.when_should_i_use_pool_"></a><h6>
+<a name="boost_pool.pool.introduction.when_should_i_use_pool_-heading"></a>
+ <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>
+<a name="boost_pool.pool.introduction.which_pool_allocator_should_i_use_"></a><h6>
+<a name="boost_pool.pool.introduction.which_pool_allocator_should_i_use_-heading"></a>
+ <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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/pool/pooling.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/pool/pooling.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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">“<span class="quote">magic bag"</span>”</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>
+<a name="boost_pool.pool.pooling.concepts.dynamic_memory_allocation_is_often_inefficient"></a><h6>
+<a name="boost_pool.pool.pooling.concepts.dynamic_memory_allocation_is_often_inefficient-heading"></a>
+ <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>
+<a name="boost_pool.pool.pooling.alignment.terminology"></a><h5>
+<a name="boost_pool.pool.pooling.alignment.terminology-heading"></a>
+ <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>
+<a name="boost_pool.pool.pooling.alignment.overview"></a><h5>
+<a name="boost_pool.pool.pooling.alignment.overview-heading"></a>
+ <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>
+<a name="boost_pool.pool.pooling.alignment.proof_of_concept__guaranteeing_alignment"></a><h5>
+<a name="boost_pool.pool.pooling.alignment.proof_of_concept__guaranteeing_alignment-heading"></a>
+ <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>
+<a name="boost_pool.pool.pooling.alignment.predicate_1__arrays_may_not_have_padding"></a><h6>
+<a name="boost_pool.pool.pooling.alignment.predicate_1__arrays_may_not_have_padding-heading"></a>
+ <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>
+<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><h6>
+<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-heading"></a>
+ <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>
+<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><h6>
+<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_-heading"></a>
+ <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">></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>
+<a name="boost_pool.pool.pooling.alignment.corollary_1__the_block_is_properly_aligned_for_an_array_of_elements"></a><h6>
+<a name="boost_pool.pool.pooling.alignment.corollary_1__the_block_is_properly_aligned_for_an_array_of_elements-heading"></a>
+ <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>
+<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><h6>
+<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-heading"></a>
+ <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__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">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>
+<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><h6>
+<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______-heading"></a>
+ <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>
+<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><h6>
+<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-heading"></a>
+ <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>
+<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><h6>
+<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_-heading"></a>
+ <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>
+<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><h6>
+<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-heading"></a>
+ <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>
+<a name="boost_pool.pool.pooling.alignment.use_of_the_theorem"></a><h5>
+<a name="boost_pool.pool.pooling.alignment.use_of_the_theorem-heading"></a>
+ <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>
+<a name="boost_pool.pool.pooling.alignment.a_look_at_the_memory_block"></a><h5>
+<a name="boost_pool.pool.pooling.alignment.a_look_at_the_memory_block-heading"></a>
+ <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>
+<a name="boost_pool.pool.pooling.simple_segregated.introduction"></a><h5>
+<a name="boost_pool.pool.pooling.simple_segregated.introduction-heading"></a>
+ <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 <boost/pool/simple_segregated_storage.hpp>">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>
+<a name="boost_pool.pool.pooling.simple_segregated.synopsis"></a><h5>
+<a name="boost_pool.pool.pooling.simple_segregated.synopsis-heading"></a>
+ <a class="link" href="pooling.html#boost_pool.pool.pooling.simple_segregated.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting">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);
+};
+</pre>
+<a name="boost_pool.pool.pooling.simple_segregated.semantics"></a><h5>
+<a name="boost_pool.pool.pooling.simple_segregated.semantics-heading"></a>
+ <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"><</span><span class="identifier">SizeType</span><span class="special">></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"><</span><span class="keyword">void</span> <span class="special">*></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 1. 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<SizeType>
+ </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 2. 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 3. 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 4. 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>
+ (&t)->~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 5. 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 >= 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 *
+ </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 6. 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 7. 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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/pool/testing.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/pool/testing.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,52 @@
+<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">></span> <span class="identifier">bjam</span> <span class="special">-</span><span class="identifier">a</span> <span class="special">></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool/pool/usage.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool/pool/usage.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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>
+<a name="boost_pool.pool.usage.library_structure_and_dependencies"></a><h6>
+<a name="boost_pool.pool.usage.library_structure_and_dependencies-heading"></a>
+ <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"><</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">></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/boost_pool_c___reference.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/boost_pool_c___reference.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 <boost/pool/object_pool.hpp>">
+</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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/header/boost/pool/object_pool_hpp.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/header/boost/pool/object_pool_hpp.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header <boost/pool/object_pool.hpp></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 <boost/pool/object_pool.hpp></h3></div></div></div>
+<p>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. </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"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> UserAllocator<span class="special">></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/header/boost/pool/pool_alloc_hpp.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/header/boost/pool/pool_alloc_hpp.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,107 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header <boost/pool/pool_alloc.hpp></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 <boost/pool/pool_alloc.hpp></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"> </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"> </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<int></code> and <code class="computeroutput">pool_allocator<void *></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"><</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">></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"><</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">></span>
+ <span class="keyword">class</span> <a class="link" href="../../../boost/pool_allocator_void__UserAllocator__M_id491365.html" title="Class template pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">pool_allocator</a><span class="special"><</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">></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"><</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">></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"><</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">></span>
+ <span class="keyword">class</span> <a class="link" href="../../../boost/fast_pool_allocator_void__UserAllocat_id491880.html" title="Class template fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>">fast_pool_allocator</a><span class="special"><</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">></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/header/boost/pool/pool_hpp.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/header/boost/pool/pool_hpp.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header <boost/pool/pool.hpp></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 <boost/pool/pool.hpp></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"><</span><span class="keyword">typename</span> UserAllocator<span class="special">></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/header/boost/pool/poolfwd_hpp.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/header/boost/pool/poolfwd_hpp.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header <boost/pool/poolfwd.hpp></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_id491880/rebind.html" title="Struct template rebind">
+<link rel="next" href="simple_segregated_storage_hpp.html" title="Header <boost/pool/simple_segregated_storage.hpp>">
+</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_id491880/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 <boost/pool/poolfwd.hpp></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 © 2000-2006 Stephen Cleary<br>Copyright © 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_id491880/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: trunk/libs/pool/doc/html/header/boost/pool/simple_segregated_storage_hpp.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/header/boost/pool/simple_segregated_storage_hpp.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header <boost/pool/simple_segregated_storage.hpp></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 <boost/pool/poolfwd.hpp>">
+<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 <boost/pool/simple_segregated_storage.hpp></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"><</span><span class="keyword">typename</span> SizeType<span class="special">></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/header/boost/pool/singleton_pool_hpp.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/header/boost/pool/singleton_pool_hpp.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header <boost/pool/singleton_pool.hpp></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 <boost/pool/singleton_pool.hpp></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"><</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">></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 © 2000-2006 Stephen Cleary<br>Copyright © 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: trunk/libs/pool/doc/html/index.html
==============================================================================
--- (empty file)
+++ trunk/libs/pool/doc/html/index.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -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 © 2000-2006 Stephen Cleary</p></div>
+<div><p class="copyright">Copyright © 2011 Paul A. Bristow</p></div>
+<div><div class="legalnotice">
+<a name="id1004742"></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: July 18, 2011 at 10:15:27 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>
Deleted: trunk/libs/pool/doc/index.html
==============================================================================
--- trunk/libs/pool/doc/index.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,231 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-<head>
- <meta http-equiv="Content-Language" content="en-us">
- <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
- <link href="pool.css" rel="stylesheet" type="text/css">
-
- <title>Boost Pool Library</title>
-</head>
-
-<body>
- <img src="../../../boost.png" width="276" height="86" alt="C++ Boost">
-
- <h1 align="center">Boost Pool Library</h1>
-
- <h2>Introduction</h2>
-
- <h3>What is Pool?</h3>
-
- <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
- "simple segregated storage"), see <a href="concepts.html">the concepts
- document</a>.</p>
-
- <h3>Why should I use Pool?</h3>
-
- <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>
-
- <h3>When should I use Pool?</h3>
-
- <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>
-
- <h3>How do I use Pool?</h3>
-
- <p>See the pool interfaces document, which
- covers the different Pool interfaces supplied by this library.</p>
-
- <h2>Library Structure and Dependencies</h2>
-
- <p>Forward declarations of all the exposed symbols for this library are in
- the header <span class="code"><boost/pool/poolfwd.hpp></span>.</p>
-
- <p>The library may use macros, which will be prefixed with <span class=
- "code">BOOST_POOL_</span>. The exception to this rule are the include file
- guards, which (for file <em>xxx</em>.hpp) is <span class=
- "code">BOOST_<em>xxx</em>_HPP</span>.</p>
-
- <p>All exposed symbols defined by the library will be in namespace
- <span class="code">boost</span>. All symbols used only by the implementation
- will be in namespace <span class=
- "code">boost::details::pool</span>.</p>
-
- <p>Every header used only by the implementation is in the subdirectory
- <span class="code">detail/</span>.</p>
-
- <p>Any header in the library may include any other header in the library or
- any system-supplied header at its discretion.</p>
-
- <h2>Installation</h2>
-
- <p>The Boost Pool library is a header file 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>
-
- <h2>Building the Test Programs</h2>
-
- <p>The subdirectory "build" contains subdirectories for several different
- platforms. These subdirectories contain all necessary work-around code for
- that platform, as well as makefiles or IDE project files as appropriate.</p>
-
- <p>Read the "readme.txt" in the proper subdirectory, if it exists.</p>
-
- <p>The standard makefile targets are "all", "clean" (which deletes any
- intermediate files), and "veryclean" (which deletes any intermediate files
- and executables). All intermediate and executable files are built in the
- same directory as the makefile/project file. If there is a project file
- supplied instead of a makefile, "clean" and "veryclean" shell scripts/batch
- files will be provided.</p>
-
- <p>Project files and makefiles for additional platforms may be sent to
- Stephen Cleary at scleary AT jerviswebb DOT com.</p>
-
- <h2>Documentation Map</h2>
-
- <ul>
- <li>Overview of Pooling
-
- <ul>
- <li>concepts.html - The basic ideas behind
- pooling.</li>
-
- <li><a href=
- "implementation/alignment.html">implementation/alignment.html</a> -
- How we guarantee alignment portably.</li>
-
- <li>interfaces.html - What interfaces
- are provided and when to use each one.</li>
- </ul>
- </li>
-
- <li>Pool Exposed Interfaces
-
- <ul>
- <li><a href=
- "interfaces/simple_segregated_storage.html">
- interfaces/simple_segregated_storage.html</a>
- - Not for the faint of heart; embedded programmers only.</li>
-
- <li>interfaces/pool.html - The
- basic pool interface.</li>
-
- <li><a href=
- "interfaces/singleton_pool.html">interfaces/singleton_pool.html</a> -
- The basic pool interface as a thread-safe singleton.</li>
-
- <li><a href=
- "interfaces/object_pool.html">interfaces/object_pool.html</a> - A
- type-oriented (instead of size-oriented) pool interface.</li>
-
- <li><a href=
- "interfaces/pool_alloc.html">interfaces/pool_alloc.html</a> - A
- Standard Allocator pool interface based on singleton_pool.</li>
-
- <li><a href=
- "interfaces/user_allocator.html">interfaces/user_allocator.html</a> -
- OK, not a pool interface, but it describes how the user can control
- how Pools allocate system memory.</li>
- </ul>
- </li>
-
- <li>Pool Implementation Details and Extensions
-
- <ul>
- <li>Interface Implementations and Extensions
-
- <ul>
- <li><a href=
- "implementation/simple_segregated_storage.html">
- implementation/simple_segregated_storage.html</a></li>
-
- <li><a href=
- "implementation/pool.html">implementation/pool.html</a></li>
-
- <li><a href=
- "implementation/singleton_pool.html">
- implementation/singleton_pool.html</a></li>
-
- <li><a href=
- "implementation/object_pool.html">implementation/object_pool.html</a></li>
-
- <li><a href=
- "implementation/pool_alloc.html">implementation/pool_alloc.html</a></li>
- </ul>
- </li>
-
- <li>Components Used Only by the Implementation
-
- <ul>
- <li><a href=
- "implementation/ct_gcd_lcm.html">implementation/ct_gcd_lcm.html</a>
- - Compile-time GCD and LCM.</li>
-
- <li>implementation/for.html
- - Description of an m4 component.</li>
-
- <li><a href=
- "implementation/gcd_lcm.html">implementation/gcd_lcm.html</a> -
- Run-time GCD and LCM.</li>
-
- <li><a href=
- "implementation/guard.html">implementation/guard.html</a> - Auto
- lock/unlock for mutex.</li>
-
- <li><a href=
- "implementation/mutex.html">implementation/mutex.html</a> -
- Platform-dependent mutex type.</li>
-
- <li><a href=
- "implementation/pool_construct.html">
- implementation/pool_construct.html</a>
- - The system for supporting more constructor arguments in
- object_pool.</li>
-
- <li><a href=
- "implementation/singleton.html">implementation/singleton.html</a>
- - Singleton that avoids static initialization problem.</li>
- </ul>
- </li>
- </ul>
- </li>
- </ul>
-
- <h2>Future Directions</h2>
-
- <p>Another pool interface will be written: a base class for per-class pool
- allocation.</p>
-
- <h2>Acknowledgements</h2>
-
- <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>
- <hr>
-
- <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
- "../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
- height="31" width="88"></a></p>
-
- <p>Revised
- <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->05 December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38516" --></p>
-
- <p><i>Copyright © 2000, 2001 Stephen Cleary (scleary AT jerviswebb DOT com)</i></p>
-
- <p><i>Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or
- copy at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt>)</i></p>
-</body>
-</html>
Deleted: trunk/libs/pool/doc/interfaces.html
==============================================================================
--- trunk/libs/pool/doc/interfaces.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,153 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-<head>
- <meta http-equiv="Content-Language" content="en-us">
- <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
- <link href="pool.css" rel="stylesheet" type="text/css">
-
- <title>Boost Pool Interfaces</title>
-</head>
-
-<body>
- <img src="../../../boost.png" width="276" height="86" alt="C++ Boost">
-
- <h1 align="center">Boost Pool Interfaces</h1>
-
- <h2>Introduction</h2>
-
- <p>There are several interfaces provided which allow users great flexibility
- in how they want to use Pools. Review the <a href=
- "concepts.html">concepts document</a> to get the basic understanding of how
- Pools work.</p>
-
- <h2>Terminology and Tradeoffs</h2>
-
- <h3>Object Usage vs. Singleton Usage</h3>
-
- <p><em>Object Usage</em> 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><em>Singleton Usage</em> 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 <span class=
- "code">release_memory</span> or <span class="code">purge_memory</span>.</p>
-
- <h3>Out-of-Memory Conditions: Exceptions vs. Null Return</h3>
-
- <p>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 throw an exception.</p>
-
- <h2>The Interfaces</h2>
-
- <h3>pool</h3>
-
- <p>The pool interface is a simple Object
- Usage interface with Null Return.</p>
-
- <p>Example:</p>
- <pre class="code">
-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
-</pre>
-
- <h3>object_pool</h3>
-
- <p>The 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.</p>
-
- <p>Example:</p>
- <pre class="code">
-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
-</pre>
-
- <h3>singleton_pool</h3>
-
- <p>The singleton_pool interface
- is a Singleton Usage interface with Null Return. It's just the same as the
- pool interface but with Singleton Usage instead.</p>
-
- <p>Example:</p>
- <pre class="code">
-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 int's
- my_pool::purge_memory();
-}
-</pre>
-
- <h3>pool_alloc</h3>
-
- <p>The pool_alloc 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.).</p>
-
- <p>Example:</p>
- <pre class="code">
-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 that
-</pre>
-
- <h2>Future Directions</h2>
-
- <p>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.</p>
- <hr>
-
- <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
- "../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
- height="31" width="88"></a></p>
-
- <p>Revised
- <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->05 December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38516" --></p>
-
- <p><i>Copyright © 2000, 2001 Stephen Cleary (scleary AT jerviswebb DOT com)</i></p>
-
- <p><i>Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or
- copy at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt>)</i></p>
-</body>
-</html>
Copied: trunk/libs/pool/doc/jamfile.v2 (from r73209, /sandbox/guild/pool/libs/pool/doc/jamfile.v2)
==============================================================================
--- /sandbox/guild/pool/libs/pool/doc/jamfile.v2 (original)
+++ trunk/libs/pool/doc/jamfile.v2 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -8,8 +8,7 @@
# See http://www.boost.org for updates, documentation, and revision history.
path-constant boost-root : [ modules.peek : BOOST ] ;
-path-constant nav_images : html/images/ ; # png and svg images for home, next, note, tip...
-path-constant images_location : html ; # location of SVG and PNG images referenced by Quickbook.
+path-constant images_location : images ; # location of SVG and PNG images referenced by Quickbook.
import modules ;
@@ -52,25 +51,6 @@
# General settings
# =================
- # Path for links to Boost.
- <xsl:param>boost.root=../../../../..
- # Path for libraries index:
- <xsl:param>boost.libraries=../../../../../libs/libraries.htm
- # Use the main Boost stylesheet:
- #<xsl:param>html.stylesheet=../../doc/html/boostbook.css
- <xsl:param>html.stylesheet=./boostbook.css
-
- #<xsl:param>nav.layout=none # No navigation bar (home, prev, next).
- # defining creates a runtime error: Global parameter nav.layout already defined
- <xsl:param>nav.layout=horizontal # to get a horizontal navigation bar (you probably DO want this).
-
- # Path for links to Boost logo.
- #<xsl:param>boost.root=.. # already defined
- <xsl:param>boost.image=Boost # options are: none (no logo), Boost (for boost.png), or your own logo, for example, inspired_by_boost.png
- <xsl:param>boost.image.src=./images/boost.png #
- <xsl:param>boost.image.w=180 # Width of logo in pixels. (JM has W = 162, h = 46)
- <xsl:param>boost.image.h=90 # Height of logo in pixels.
-
# Options for html and pdf
# ========================
# No indent on body text:
@@ -81,6 +61,8 @@
<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:
# =============
@@ -101,6 +83,7 @@
# 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:
# ============
@@ -123,9 +106,8 @@
# 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>admon.graphics.path=$(nav_images)/ # next, prev, note, tip ... for pdf.
+ <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.
@@ -151,19 +133,5 @@
<auto-index-prefix>../../..
<dependency>autodoc #
- <dependency>css-install
- <dependency>png-install
- <dependency>svg-install
- <dependency>pool-png-install
- <dependency>pool-svg-install
;
-install css-install : $(boost-root)/doc/src/boostbook.css : <location>html ;
-
-install png-install : [ glob $(boost-root)/doc/src/images/*.png $(boost-root)/boost.png ] : <location>html/images ;
-install svg-install : [ glob $(boost-root)/doc/src/images/*.svg ] : <location>html/images ;
-
-install pdf-install : standalone : <install-type>PDF <location>. <name>pool.pdf ;
-
-install pool-png-install : [ glob images/*.png ] : <location>html/images ;
-install pool-svg-install : [ glob images/*.svg ] : <location>html/images ;
Deleted: trunk/libs/pool/doc/pool.css
==============================================================================
--- trunk/libs/pool/doc/pool.css 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-/*
- 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)
-*/
-
-*.code { font-family: monospace; }
-*.m4 { white-space: pre; font-family: monospace; font-size: 75% }
\ No newline at end of file
Modified: trunk/libs/pool/index.html
==============================================================================
--- trunk/libs/pool/index.html (original)
+++ trunk/libs/pool/index.html 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -1,13 +1,13 @@
<html>
<head>
-<meta http-equiv="refresh" content="0; URL=doc/index.html">
+<meta http-equiv="refresh" content="0; URL=doc/html/index.html">
</head>
<body>
Automatic redirection failed, please go to
-doc/index.html. <hr>
+doc/html/index.html. <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>
\ No newline at end of file
+</html>
Modified: trunk/libs/pool/test/Jamfile.v2
==============================================================================
--- trunk/libs/pool/test/Jamfile.v2 (original)
+++ trunk/libs/pool/test/Jamfile.v2 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -2,14 +2,71 @@
#~ 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>gcc:<cxxflags>-Wcast-align
+ <toolset>intel:<warnings-as-errors>on
+ <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 : : : <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 : : : <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 : : : <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 ] ]
;
+
+
Deleted: trunk/libs/pool/test/sys_allocator.hpp
==============================================================================
--- trunk/libs/pool/test/sys_allocator.hpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,100 +0,0 @@
-// 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
-
-// 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 pointer = 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 pointer = 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(); }
-};
-
-#endif
Modified: trunk/libs/pool/test/test_pool_alloc.cpp
==============================================================================
--- trunk/libs/pool/test/test_pool_alloc.cpp (original)
+++ trunk/libs/pool/test/test_pool_alloc.cpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
@@ -1,322 +1,272 @@
-// 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)
-
-// Uncomment this to stub out all MT locking
-#define BOOST_NO_MT
+/* 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 <stdlib.h>
-#include <stdexcept>
-#include <iostream>
-#include <vector>
+#include <boost/detail/lightweight_test.hpp>
+
#include <algorithm>
-#include <list>
#include <deque>
+#include <list>
#include <set>
+#include <stdexcept>
+#include <vector>
-// use of test_main() eases automatic regression testing by eliminating
-// the need for manual intervention on test failures (Beman Dawes)
-#include <boost/test/test_tools.hpp>
-
-// VERBOSE will print out trace-like statements to show exactly what this
-// test file is doing.
-//#define VERBOSE
+#include <cstdlib>
+#include <ctime>
// Each "tester" object below checks into and out of the "cdtor_checker",
-// which will report any problems related to the construction/destruction of
+// which will check for any problems related to the construction/destruction of
// "tester" objects.
class cdtor_checker
{
- private:
+private:
// Each constructed object registers its "this" pointer into "objs"
- std::set<void *> objs;
+ std::set<void*> objs;
+
+public:
+ // True iff all objects that have checked in have checked out
+ bool ok() const { return objs.empty(); }
- public:
~cdtor_checker()
{
- // At end of program, print out memory leaks
- // (assuming no static "tester"s)
- for (std::set<void *>::const_iterator i = objs.begin();
- i != objs.end(); ++i)
- std::cout << "Memory leak: " << *i << std::endl;
+ BOOST_TEST(ok());
}
void check_in(void * const This)
{
- if (objs.find(This) != objs.end())
- std::cout << "Double-constructed memory: " << This << std::endl;
- objs.insert(This);
+ BOOST_TEST(objs.find(This) == objs.end());
+ objs.insert(This);
}
+
void check_out(void * const This)
{
- std::set<void *>::iterator i = objs.find(This);
- if (i == objs.end())
- std::cout << "Destroyed non-constructed memory: " << This << std::endl;
- objs.erase(This);
+ BOOST_TEST(objs.find(This) != objs.end());
+ objs.erase(This);
}
-
- // true iff all objects that have checked in have checked out
- bool ok() const { return objs.empty(); }
};
static cdtor_checker mem;
struct tester
{
- tester(int arg1, int arg2)
- {
- if (arg1 == 17 && arg2 == 17)
- {
-#ifdef VERBOSE
- std::cout << this << ": tester not constructed" << std::endl;
-#endif
- throw std::logic_error("No construction allowed!");
- }
-#ifdef VERBOSE
- std::cout << this << ": tester::tester()" << std::endl;
-#endif
- mem.check_in(this);
- }
-#ifdef VERBOSE
- tester(const tester & other)
- {
- std::cout << this << ": tester::tester(" << &other << ')' << std::endl;
-#else
- tester(const tester &)
- {
-#endif
- mem.check_in(this);
- }
- ~tester()
- {
-#ifdef VERBOSE
- std::cout << this << ": tester::~tester()" << std::endl;
-#endif
- mem.check_out(this);
- }
-};
+ tester(bool throw_except = false)
+ {
+ if(throw_except)
+ {
+ throw std::logic_error("Deliberate constructor exception");
+ }
-void test()
-{
- {
- // should do nothing
- boost::object_pool<tester> pool;
- }
-
- {
- // Construct several tester objects. Don't delete them (i.e.,
- // test pool's garbage collection).
-#ifdef VERBOSE
- std::cout << "Testing pool. . ." << std::endl;
-#endif
- boost::object_pool<tester> pool;
- for (int i = 0; i < 10; ++i)
- pool.construct(13, 13);
- }
-
- {
- // Construct several tester objects. Delete some of them.
-#ifdef VERBOSE
- std::cout << "Testing pool with some removed. . ." << std::endl;
-#endif
- boost::object_pool<tester> pool;
- std::vector<tester *> v;
- for (int i = 0; i < 10; ++i)
- v.push_back(pool.construct(13, 13));
- 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.
-#ifdef VERBOSE
- std::cout << "Testing with exceptional constructors :). . ." << std::endl;
-#endif
- boost::object_pool<tester> pool;
- for (int i = 0; i < 5; ++i)
- {
- pool.construct(13, 13);
- }
- for (int j = 0; j < 5; ++j)
- {
- try
- {
- // The following constructor will raise an exception.
- pool.construct(17, 17);
- }
- catch (const std::logic_error &) { }
+ mem.check_in(this);
}
- }
-}
-void test_alloc()
-{
-#ifdef VERBOSE
- std::cout << "Testing allocator. . ." << std::endl;
-#endif
-
- {
- // Allocate several tester objects. Delete one.
-#ifdef VERBOSE
- std::cout << "with vector. . ." << std::endl;
-#endif
- std::vector<tester, boost::pool_allocator<tester> > l;
- for (int i = 0; i < 10; ++i)
- l.push_back(tester(13, 13));
- l.pop_back();
- }
-
- {
- // Allocate several tester objects. Delete two.
-#ifdef VERBOSE
- std::cout << "with deque. . ." << std::endl;
-#endif
- std::deque<tester, boost::pool_allocator<tester> > l;
- for (int i = 0; i < 10; ++i)
- l.push_back(tester(13, 13));
- l.pop_back();
- l.pop_front();
- }
-
- {
- // Allocate several tester objects. Delete two.
-#ifdef VERBOSE
- std::cout << "with list. . ." << std::endl;
-#endif
- 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(13, 13));
- l.pop_back();
- l.pop_front();
- }
-
- tester * tmp;
- {
- // Create a memory leak on purpose. (Allocator doesn't have
- // garbage collection)
-#ifdef VERBOSE
- std::cout << "Testing allocator cleanup. . ." << std::endl;
-#endif
- // (Note: memory leak)
- boost::pool_allocator<tester> a;
- tmp = a.allocate(1, 0);
- new (tmp) tester(13, 13);
- }
- if (mem.ok())
- std::cout << "Error: Pool allocator cleaned up!" << std::endl;
- // 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);
- }
-}
+ 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
+// 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;
+ typedef typename UserAllocator::size_type size_type;
+ typedef typename UserAllocator::difference_type difference_type;
- static std::set<char *> allocated_blocks;
+ static std::set<char *> allocated_blocks;
- static char * malloc BOOST_PREVENT_MACRO_SUBSTITUTION(const size_type bytes)
- {
- char * const ret = (UserAllocator::malloc)(bytes);
- allocated_blocks.insert(ret);
- return ret;
- }
- static void free BOOST_PREVENT_MACRO_SUBSTITUTION(char * const block)
- {
- if (allocated_blocks.find(block) == allocated_blocks.end())
- std::cout << "Free'd non-malloc'ed block: " << (void *) block << std::endl;
- allocated_blocks.erase(block);
- (UserAllocator::free)(block);
- }
+ static char * malloc(const size_type bytes)
+ {
+ char * const ret = UserAllocator::malloc(bytes);
+ allocated_blocks.insert(ret);
+ return ret;
+ }
- static bool ok() { return allocated_blocks.empty(); }
+ 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()
{
-#ifdef VERBOSE
- std::cout << "Testing memory usage. . ." << std::endl;
-#endif
-
- typedef boost::pool<track_alloc> pool_type;
-
- {
- // Constructor should do nothing; no memory allocation
- pool_type pool(sizeof(int));
- if (!track_alloc::ok())
- std::cout << "Memory error" << std::endl;
- if (pool.release_memory())
- std::cout << "Pool released memory" << std::endl;
- if (pool.purge_memory())
- std::cout << "Pool purged memory" << std::endl;
-
- // Should allocate from system
- (pool.free)((pool.malloc)());
- if (track_alloc::ok())
- std::cout << "Memory error" << std::endl;
-
- // Ask pool to give up memory it's not using; this should succeed
- if (!pool.release_memory())
- std::cout << "Pool didn't release memory" << std::endl;
- if (!track_alloc::ok())
- std::cout << "Memory error" << std::endl;
-
- // 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
- if (pool.release_memory())
- std::cout << "Pool released memory" << std::endl;
-
- // Force pool to give up memory it's not using; this should succeed
- // This will clean up the memory leak from (*A*)
- if (!pool.purge_memory())
- std::cout << "Pool didn't purge memory" << std::endl;
- if (!track_alloc::ok())
- std::cout << "Memory error" << std::endl;
-
- // 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*)
- }
+ 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());
- if (!track_alloc::ok())
- std::cout << "Memory error" << std::endl;
+ // 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()
{
-#ifdef VERBOSE
- std::cout << "Testing void specialization. . ." << std::endl;
-#endif
-
typedef boost::pool_allocator<void> void_allocator;
typedef boost::fast_pool_allocator<void> fast_void_allocator;
@@ -327,21 +277,14 @@
std::vector<int, fast_int_allocator> v2;
}
-int test_main(int, char * [])
+int main()
{
- test();
- test_alloc();
- test_mem_usage();
- test_void();
-
-#ifdef VERBOSE
- std::cout << "main() exiting. . ." << std::endl;
-#endif
- if (mem.ok() && track_alloc::ok())
- std::cout << "All tests passed!" << std::endl;
- else
- std::cout << "Memory inconsistent!" << std::endl;
- return 0;
-}
+ std::srand(static_cast<unsigned>(std::time(0)));
+ test();
+ test_alloc();
+ test_mem_usage();
+ test_void();
+ return boost::report_errors();
+}
Deleted: trunk/libs/pool/test/time_pool_alloc.cpp
==============================================================================
--- trunk/libs/pool/test/time_pool_alloc.cpp 2011-07-18 06:23:42 EDT (Mon, 18 Jul 2011)
+++ (empty file)
@@ -1,448 +0,0 @@
-// 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;
-
-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();
- {
- 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 (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 (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 (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 (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();
- {
- 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();
- {
- 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 (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 (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 (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 (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();
- {
- boost::pool<> p(sizeof(int));
- 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);
-
-
- start = std::clock();
- {
- 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 (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 (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 (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 (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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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();
- {
- 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;
-
- 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;
-}
-
-
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