1
0
mirror of https://git.suyu.dev/suyu/suyu synced 2025-09-12 17:17:57 -05:00

Initial commit

This commit is contained in:
Crimson-Hawk
2024-03-05 16:42:40 +08:00
commit f1e4595ebf
39576 changed files with 7006612 additions and 0 deletions

View File

View File

View File

@@ -0,0 +1,38 @@
# Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying
# file LICENSE.txt)
#
# Copyright Rene Rivera 2020.
# For Drone CI we use the Starlark scripting language to reduce duplication.
# As the yaml syntax for Drone CI is rather limited.
#
#
globalenv={'B2_VARIANT': 'variant=release,debug'}
linuxglobalimage="cppalliance/droneubuntu1604:1"
windowsglobalimage="cppalliance/dronevs2019"
def main(ctx):
return [
linux_cxx("B2_TOOLSET=gcc-4.8 B2_CXXSTD=03,11 Job 0", "g++-4.8", packages="g++-4.8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'gcc-4.8', 'B2_CXXSTD': '03,11', 'DRONE_JOB_UUID': 'b6589fc6ab'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=gcc-5 B2_CXXSTD=11 Job 1", "g++-5", packages="g++-5", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'gcc-5', 'B2_CXXSTD': '11', 'DRONE_JOB_UUID': '356a192b79'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=gcc-6 B2_CXXSTD=11,14 Job 2", "g++-6", packages="g++-6", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'gcc-6', 'B2_CXXSTD': '11,14', 'DRONE_JOB_UUID': 'da4b9237ba'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=gcc-7 B2_CXXSTD=11,14,17 Job 3", "g++-7", packages="g++-7", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'gcc-7', 'B2_CXXSTD': '11,14,17', 'DRONE_JOB_UUID': '77de68daec'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=gcc-8 B2_CXXSTD=14,17,2a Job 4", "g++-8", packages="g++-8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'gcc-8', 'B2_CXXSTD': '14,17,2a', 'DRONE_JOB_UUID': '1b64538924'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=clang-3.8 B2_CXXSTD=03,11,14 Job 5", "clang++-3.8", packages="clang-3.8 libstdc++-6-dev", llvm_os="xenial", llvm_ver="3.8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-3.8', 'B2_CXXSTD': '03,11,14', 'DRONE_JOB_UUID': 'ac3478d69a'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=clang-4.0 B2_CXXSTD=11,14 Job 6", "clang++-4.0", packages="clang-4.0 libstdc++-6-dev", llvm_os="xenial", llvm_ver="4.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-4.0', 'B2_CXXSTD': '11,14', 'DRONE_JOB_UUID': 'c1dfd96eea'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=clang-5.0 B2_CXXSTD=11,14,17 Job 7", "clang++-5.0", packages="clang-5.0 libstdc++-7-dev", llvm_os="xenial", llvm_ver="5.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-5.0', 'B2_CXXSTD': '11,14,17', 'DRONE_JOB_UUID': '902ba3cda1'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=clang-6.0 B2_CXXSTD=14,17,2a Job 8", "clang++-6.0", packages="clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev", llvm_os="xenial", llvm_ver="6.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-6.0', 'B2_CXXSTD': '14,17,2a', 'DRONE_JOB_UUID': 'fe5dbbcea5'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=clang-7 B2_CXXSTD=14,17,2a Job 9", "clang++-7", packages="clang-7 libc6-dbg libc++-dev libstdc++-8-dev", llvm_os="xenial", llvm_ver="7", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-7', 'B2_CXXSTD': '14,17,2a', 'DRONE_JOB_UUID': '0ade7c2cf9'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=clang-8 B2_CXXSTD=14,17,2a Job 10", "clang++-8", packages="clang-8 libc6-dbg libc++-dev libstdc++-8-dev", llvm_os="xenial", llvm_ver="8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-8', 'B2_CXXSTD': '14,17,2a', 'DRONE_JOB_UUID': 'b1d5781111'}, globalenv=globalenv),
linux_cxx("B2_TOOLSET=clang-6.0 B2_CXXSTD=03,11,14,17,2a Job 11", "clang++-6.0", packages="clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev", llvm_os="xenial", llvm_ver="6.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-6.0', 'B2_CXXSTD': '03,11,14,17,2a', 'B2_CXXFLAGS': '-stdlib=libc++', 'DRONE_JOB_UUID': '17ba079149'}, globalenv=globalenv),
osx_cxx("B2_TOOLSET=clang B2_CXXSTD=03,11,17 Job 12", "g++", packages="", buildtype="boost", buildscript="drone", environment={'B2_TOOLSET': 'clang', 'B2_CXXSTD': '03,11,17', 'DRONE_JOB_UUID': '7b52009b64'}, globalenv=globalenv),
linux_cxx("COMMENT=codecov.io B2_TOOLSET=gcc-7 B2_DEFINE Job 13", "g++-7", packages="g++-7", buildtype="b5847f804b-bbb3de2b00", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'codecov.io', 'B2_TOOLSET': 'gcc-7', 'B2_DEFINES': 'define=BOOST_NO_STRESS_TEST=1', 'DRONE_JOB_UUID': 'bd307a3ec3'}, globalenv=globalenv),
linux_cxx("COMMENT=cppcheck Job 14", "g++", packages="binutils-gold gdb libc6-dbg", buildtype="b5847f804b-ed45733e6c", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'cppcheck', 'DRONE_JOB_UUID': 'fa35e19212'}, globalenv=globalenv),
linux_cxx("COMMENT=ubsan B2_VARIANT=variant=debug B2_TOO Job 15", "g++-8", packages="g++-8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'ubsan', 'B2_VARIANT': 'variant=debug', 'B2_TOOLSET': 'gcc-8', 'B2_CXXSTD': '03,11,14,17,2a', 'B2_DEFINES': 'define=BOOST_NO_STRESS_TEST=1', 'B2_CXXFLAGS': 'cxxflags=-fno-omit-frame-pointer cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=undefined', 'B2_LINKFLAGS': 'linkflags=-fsanitize=undefined linkflags=-fno-sanitize-recover=undefined linkflags=-fuse-ld=gold', 'UBSAN_OPTIONS': 'print_stacktrace=1', 'DRONE_JOB_UUID': 'f1abd67035'}, globalenv=globalenv),
linux_cxx("COMMENT=valgrind B2_TOOLSET=clang-6.0 B2_CXXS Job 16", "clang++-6.0", packages="clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev", llvm_os="xenial", llvm_ver="6.0", buildtype="b5847f804b-db180b7bd2", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'valgrind', 'B2_TOOLSET': 'clang-6.0', 'B2_CXXSTD': '03,11,14,17,2a', 'B2_DEFINES': 'define=BOOST_NO_STRESS_TEST=1', 'B2_VARIANT': 'variant=debug', 'B2_TESTFLAGS': 'testing.launcher=valgrind', 'VALGRIND_OPTS': '--error-exitcode=1', 'DRONE_JOB_UUID': '1574bddb75'}, globalenv=globalenv),
linux_cxx("COMMENT=Coverity Scan B2_TOOLSET=clang Job 17", "g++", packages="binutils-gold gdb libc6-dbg", buildtype="b5847f804b-cce9827eb5", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'Coverity Scan', 'B2_TOOLSET': 'clang', 'DRONE_JOB_UUID': '0716d9708d'}, globalenv=globalenv),
]
# from https://github.com/boostorg/boost-ci
load("@boost_ci//ci/drone/:functions.star", "linux_cxx","windows_cxx","osx_cxx","freebsd_cxx")

View File

@@ -0,0 +1,129 @@
#!/bin/bash
# Copyright 2020 Rene Rivera, Sam Darwin
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE.txt or copy at http://boost.org/LICENSE_1_0.txt)
set -e
export TRAVIS_BUILD_DIR=$(pwd)
export DRONE_BUILD_DIR=$(pwd)
export TRAVIS_BRANCH=$DRONE_BRANCH
export VCS_COMMIT_ID=$DRONE_COMMIT
export GIT_COMMIT=$DRONE_COMMIT
export REPO_NAME=$DRONE_REPO
export PATH=~/.local/bin:/usr/local/bin:$PATH
if [ "$DRONE_JOB_BUILDTYPE" == "boost" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
cd $BOOST_ROOT/libs/$SELF
ci/travis/build.sh
elif [ "$DRONE_JOB_BUILDTYPE" == "b5847f804b-bbb3de2b00" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
pushd /tmp && git clone https://github.com/linux-test-project/lcov.git && export PATH=/tmp/lcov/bin:$PATH && which lcov && lcov --version && popd
cd $BOOST_ROOT/libs/$SELF
ci/travis/codecov.sh
elif [ "$DRONE_JOB_BUILDTYPE" == "b5847f804b-ed45733e6c" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
cd $BOOST_ROOT/libs/$SELF
ci/travis/cppcheck.sh
elif [ "$DRONE_JOB_BUILDTYPE" == "b5847f804b-db180b7bd2" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
cd $BOOST_ROOT/libs/$SELF
ci/travis/valgrind.sh
elif [ "$DRONE_JOB_BUILDTYPE" == "b5847f804b-cce9827eb5" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
if [ -n "${COVERITY_SCAN_NOTIFICATION_EMAIL}" -a \( "$DRONE_BRANCH" = "develop" -o "$DRONE_BRANCH" = "master" \) -a "$DRONE_BUILD_EVENT" = "push" ] ; then
cd $BOOST_ROOT/libs/$SELF
ci/travis/coverity.sh
fi
fi

View File

@@ -0,0 +1,96 @@
* text=auto !eol svneol=native#text/plain
*.gitattributes text svneol=native#text/plain
# Scriptish formats
*.bat text svneol=native#text/plain
*.bsh text svneol=native#text/x-beanshell
*.cgi text svneol=native#text/plain
*.cmd text svneol=native#text/plain
*.js text svneol=native#text/javascript
*.php text svneol=native#text/x-php
*.pl text svneol=native#text/x-perl
*.pm text svneol=native#text/x-perl
*.py text svneol=native#text/x-python
*.sh eol=lf svneol=LF#text/x-sh
configure eol=lf svneol=LF#text/x-sh
# Image formats
*.bmp binary svneol=unset#image/bmp
*.gif binary svneol=unset#image/gif
*.ico binary svneol=unset#image/ico
*.jpeg binary svneol=unset#image/jpeg
*.jpg binary svneol=unset#image/jpeg
*.png binary svneol=unset#image/png
*.tif binary svneol=unset#image/tiff
*.tiff binary svneol=unset#image/tiff
*.svg text svneol=native#image/svg%2Bxml
# Data formats
*.pdf binary svneol=unset#application/pdf
*.avi binary svneol=unset#video/avi
*.doc binary svneol=unset#application/msword
*.dsp text svneol=crlf#text/plain
*.dsw text svneol=crlf#text/plain
*.eps binary svneol=unset#application/postscript
*.gz binary svneol=unset#application/gzip
*.mov binary svneol=unset#video/quicktime
*.mp3 binary svneol=unset#audio/mpeg
*.ppt binary svneol=unset#application/vnd.ms-powerpoint
*.ps binary svneol=unset#application/postscript
*.psd binary svneol=unset#application/photoshop
*.rdf binary svneol=unset#text/rdf
*.rss text svneol=unset#text/xml
*.rtf binary svneol=unset#text/rtf
*.sln text svneol=native#text/plain
*.swf binary svneol=unset#application/x-shockwave-flash
*.tgz binary svneol=unset#application/gzip
*.vcproj text svneol=native#text/xml
*.vcxproj text svneol=native#text/xml
*.vsprops text svneol=native#text/xml
*.wav binary svneol=unset#audio/wav
*.xls binary svneol=unset#application/vnd.ms-excel
*.zip binary svneol=unset#application/zip
# Text formats
.htaccess text svneol=native#text/plain
*.bbk text svneol=native#text/xml
*.cmake text svneol=native#text/plain
*.css text svneol=native#text/css
*.dtd text svneol=native#text/xml
*.htm text svneol=native#text/html
*.html text svneol=native#text/html
*.ini text svneol=native#text/plain
*.log text svneol=native#text/plain
*.mak text svneol=native#text/plain
*.qbk text svneol=native#text/plain
*.rst text svneol=native#text/plain
*.sql text svneol=native#text/x-sql
*.txt text svneol=native#text/plain
*.xhtml text svneol=native#text/xhtml%2Bxml
*.xml text svneol=native#text/xml
*.xsd text svneol=native#text/xml
*.xsl text svneol=native#text/xml
*.xslt text svneol=native#text/xml
*.xul text svneol=native#text/xul
*.yml text svneol=native#text/plain
boost-no-inspect text svneol=native#text/plain
CHANGES text svneol=native#text/plain
COPYING text svneol=native#text/plain
INSTALL text svneol=native#text/plain
Jamfile text svneol=native#text/plain
Jamroot text svneol=native#text/plain
Jamfile.v2 text svneol=native#text/plain
Jamrules text svneol=native#text/plain
Makefile* text svneol=native#text/plain
README text svneol=native#text/plain
TODO text svneol=native#text/plain
# Code formats
*.c text svneol=native#text/plain
*.cpp text svneol=native#text/plain
*.h text svneol=native#text/plain
*.hpp text svneol=native#text/plain
*.ipp text svneol=native#text/plain
*.tpp text svneol=native#text/plain
*.jam text svneol=native#text/plain
*.java text svneol=native#text/plain

View File

@@ -0,0 +1,495 @@
name: GitHub Actions CI
on:
pull_request:
push:
branches:
- master
- develop
- githubactions*
- feature/**
- fix/**
- pr/**
env:
B2_VARIANT: variant=release,debug
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- name: "B2_TOOLSET=gcc-4.8 B2_CXXSTD=03,11 Job 0"
buildtype: "boost"
packages: "g++-4.8"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++-4.8"
sources: ""
llvm_os: ""
llvm_ver: ""
b2_toolset: "gcc-4.8"
b2_cxxstd: "03,11"
- name: "B2_TOOLSET=gcc-5 B2_CXXSTD=11 Job 1"
buildtype: "boost"
packages: "g++-5"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++-5"
sources: ""
llvm_os: ""
llvm_ver: ""
b2_toolset: "gcc-5"
b2_cxxstd: "11"
- name: "B2_TOOLSET=gcc-6 B2_CXXSTD=11,14 Job 2"
buildtype: "boost"
packages: "g++-6"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++-6"
sources: ""
llvm_os: ""
llvm_ver: ""
b2_toolset: "gcc-6"
b2_cxxstd: "11,14"
- name: "B2_TOOLSET=gcc-7 B2_CXXSTD=11,14,17 Job 3"
buildtype: "boost"
packages: "g++-7"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++-7"
sources: ""
llvm_os: ""
llvm_ver: ""
b2_toolset: "gcc-7"
b2_cxxstd: "11,14,17"
- name: "B2_TOOLSET=gcc-8 B2_CXXSTD=14,17,2a Job 4"
buildtype: "boost"
packages: "g++-8"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++-8"
sources: ""
llvm_os: ""
llvm_ver: ""
b2_toolset: "gcc-8"
b2_cxxstd: "14,17,2a"
- name: "B2_TOOLSET=clang-3.8 B2_CXXSTD=03,11,14 Job 5"
buildtype: "boost"
packages: "clang-3.8 libstdc++-6-dev"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++-3.8"
sources: ""
llvm_os: "xenial"
llvm_ver: "3.8"
b2_toolset: "clang-3.8"
b2_cxxstd: "03,11,14"
- name: "B2_TOOLSET=clang-4.0 B2_CXXSTD=11,14 Job 6"
buildtype: "boost"
packages: "clang-4.0 libstdc++-6-dev"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++-4.0"
sources: ""
llvm_os: "xenial"
llvm_ver: "4.0"
b2_toolset: "clang-4.0"
b2_cxxstd: "11,14"
- name: "B2_TOOLSET=clang-5.0 B2_CXXSTD=11,14,17 Job 7"
buildtype: "boost"
packages: "clang-5.0 libstdc++-7-dev"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++-5.0"
sources: ""
llvm_os: "xenial"
llvm_ver: "5.0"
b2_toolset: "clang-5.0"
b2_cxxstd: "11,14,17"
- name: "B2_TOOLSET=clang-6.0 B2_CXXSTD=14,17,2a Job 8"
buildtype: "boost"
packages: "clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++-6.0"
sources: ""
llvm_os: "xenial"
llvm_ver: "6.0"
b2_toolset: "clang-6.0"
b2_cxxstd: "14,17,2a"
- name: "B2_TOOLSET=clang-7 B2_CXXSTD=14,17,2a Job 9"
buildtype: "boost"
packages: "clang-7 libc6-dbg libc++-dev libstdc++-8-dev"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++-7"
sources: ""
llvm_os: "xenial"
llvm_ver: "7"
b2_toolset: "clang-7"
b2_cxxstd: "14,17,2a"
- name: "B2_TOOLSET=clang-8 B2_CXXSTD=14,17,2a Job 10"
buildtype: "boost"
packages: "clang-8 libc6-dbg libc++-dev libstdc++-8-dev"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++-8"
sources: ""
llvm_os: "xenial"
llvm_ver: "8"
b2_toolset: "clang-8"
b2_cxxstd: "14,17,2a"
- name: "B2_TOOLSET=clang-6.0 B2_CXXSTD=03,11,14,17,2a Job 11"
buildtype: "boost"
packages: "clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++-6.0"
sources: ""
llvm_os: "xenial"
llvm_ver: "6.0"
b2_toolset: "clang-6.0"
b2_cxxstd: "03,11,14,17,2a"
b2_cxxflags: "-stdlib=libc++"
- name: "COMMENT=codecov.io B2_TOOLSET=gcc-7 B2_DEFINE Job 13"
buildtype: "b5847f804b-bbb3de2b00"
packages: "g++-7"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++-7"
sources: ""
llvm_os: ""
llvm_ver: ""
comment: "codecov.io"
b2_toolset: "gcc-7"
b2_defines: "define=BOOST_NO_STRESS_TEST=1"
- name: "COMMENT=cppcheck Job 14"
buildtype: "b5847f804b-ed45733e6c"
packages: "binutils-gold gdb libc6-dbg"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
comment: "cppcheck"
- name: "COMMENT=ubsan B2_VARIANT=variant=debug B2_TOO Job 15"
buildtype: "boost"
packages: "g++-8"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++-8"
sources: ""
llvm_os: ""
llvm_ver: ""
comment: "ubsan"
b2_variant: "variant=debug"
b2_toolset: "gcc-8"
b2_cxxstd: "03,11,14,17,2a"
b2_defines: "define=BOOST_NO_STRESS_TEST=1"
b2_cxxflags: "cxxflags=-fno-omit-frame-pointer cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=undefined"
b2_linkflags: "linkflags=-fsanitize=undefined linkflags=-fno-sanitize-recover=undefined linkflags=-fuse-ld=gold"
ubsan_options: "print_stacktrace=1"
- name: "COMMENT=valgrind B2_TOOLSET=clang-6.0 B2_CXXS Job 16"
buildtype: "b5847f804b-db180b7bd2"
packages: "clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "clang++-6.0"
sources: ""
llvm_os: "xenial"
llvm_ver: "6.0"
comment: "valgrind"
b2_toolset: "clang-6.0"
b2_cxxstd: "03,11,14,17,2a"
b2_defines: "define=BOOST_NO_STRESS_TEST=1"
b2_variant: "variant=debug"
b2_testflags: "testing.launcher=valgrind"
valgrind_opts: "--error-exitcode=1"
- name: "COMMENT=Coverity Scan B2_TOOLSET=clang Job 17"
buildtype: "b5847f804b-cce9827eb5"
packages: "binutils-gold gdb libc6-dbg"
packages_to_remove: ""
os: "ubuntu-16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
comment: "Coverity Scan"
b2_toolset: "clang"
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
steps:
- name: Check if running in container
if: matrix.container != ''
run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV
- uses: actions/checkout@v2
- name: linux
shell: bash
env:
CXX: ${{ matrix.cxx }}
SOURCES: ${{ matrix.sources }}
LLVM_OS: ${{ matrix.llvm_os }}
LLVM_VER: ${{ matrix.llvm_ver }}
PACKAGES: ${{ matrix.packages }}
PACKAGES_TO_REMOVE: ${{ matrix.packages_to_remove }}
JOB_BUILDTYPE: ${{ matrix.buildtype }}
B2_TOOLSET: ${{ matrix.b2_toolset }}
B2_CXXSTD: ${{ matrix.b2_cxxstd }}
B2_CXXFLAGS: ${{ matrix.b2_cxxflags }}
COMMENT: ${{ matrix.comment }}
B2_DEFINES: ${{ matrix.b2_defines }}
B2_VARIANT: ${{ matrix.b2_variant }}
B2_LINKFLAGS: ${{ matrix.b2_linkflags }}
UBSAN_OPTIONS: ${{ matrix.ubsan_options }}
B2_TESTFLAGS: ${{ matrix.b2_testflags }}
VALGRIND_OPTS: ${{ matrix.valgrind_opts }}
TRAVIS_BRANCH: ${{ github.base_ref }}
TRAVIS_OS_NAME: "linux"
run: |
echo '==================================> SETUP'
echo '==================================> PACKAGES'
set -e
if [ -n "$PACKAGES_TO_REMOVE" ]; then sudo apt-get purge -y $PACKAGES_TO_REMOVE; fi
echo ">>>>> APT: REPO.."
for i in {1..3}; do sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" && break || sleep 2; done
if test -n "${LLVM_OS}" ; then
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
if test -n "${LLVM_VER}" ; then
sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS}-${LLVM_VER} main"
else
# Snapshot (i.e. trunk) build of clang
sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS} main"
fi
fi
echo ">>>>> APT: UPDATE.."
sudo -E apt-get -o Acquire::Retries=3 update
if test -n "${SOURCES}" ; then
echo ">>>>> APT: INSTALL SOURCES.."
for SOURCE in $SOURCES; do
sudo -E apt-add-repository ppa:$SOURCE
done
fi
echo ">>>>> APT: INSTALL ${PACKAGES}.."
sudo -E DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -y --no-install-suggests --no-install-recommends install ${PACKAGES}
echo '==================================> INSTALL AND COMPILE'
set -e
export TRAVIS_BUILD_DIR=$(pwd)
export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')}
export VCS_COMMIT_ID=$GITHUB_SHA
export GIT_COMMIT=$GITHUB_SHA
export REPO_NAME=$(basename $GITHUB_REPOSITORY)
export USER=$(whoami)
export CC=${CC:-gcc}
export PATH=~/.local/bin:/usr/local/bin:$PATH
if [ "$JOB_BUILDTYPE" == "boost" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
cd $BOOST_ROOT/libs/$SELF
ci/travis/build.sh
elif [ "$JOB_BUILDTYPE" == "b5847f804b-bbb3de2b00" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
pushd /tmp && git clone https://github.com/linux-test-project/lcov.git && export PATH=/tmp/lcov/bin:$PATH && which lcov && lcov --version && popd
cd $BOOST_ROOT/libs/$SELF
ci/travis/codecov.sh
elif [ "$JOB_BUILDTYPE" == "b5847f804b-ed45733e6c" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
cd $BOOST_ROOT/libs/$SELF
ci/travis/cppcheck.sh
elif [ "$JOB_BUILDTYPE" == "b5847f804b-db180b7bd2" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
cd $BOOST_ROOT/libs/$SELF
ci/travis/valgrind.sh
elif [ "$JOB_BUILDTYPE" == "b5847f804b-cce9827eb5" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
if [ -n "${COVERITY_SCAN_NOTIFICATION_EMAIL}" -a \( "$TRAVIS_BRANCH" = "develop" -o "$TRAVIS_BRANCH" = "master" \) -a \("$GITHUB_EVENT_NAME" = "push" -o "$GITHUB_EVENT_NAME" = "cron" \) ] ; then
cd $BOOST_ROOT/libs/$SELF
ci/travis/coverity.sh
fi
fi
osx:
strategy:
fail-fast: false
matrix:
include:
- name: "B2_TOOLSET=clang B2_CXXSTD=03,11,17 Job 12"
buildtype: "boost"
packages: ""
os: "macos-10.15"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
xcode_version: 11.7
b2_toolset: "clang"
b2_cxxstd: "03,11,17"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Set DEVELOPER_DIR
if: matrix.xcode_version != ''
run: echo "DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode_version }}.app/Contents/Developer" >> $GITHUB_ENV
- name: Test DEVELOPER_DIR
run: echo $DEVELOPER_DIR
- name: "osx"
shell: bash
env:
CXX: ${{ matrix.cxx }}
SOURCES: ${{ matrix.sources }}
LLVM_OS: ${{ matrix.llvm_os }}
LLVM_VER: ${{ matrix.llvm_ver }}
PACKAGES: ${{ matrix.packages }}
JOB_BUILDTYPE: ${{ matrix.buildtype }}
B2_TOOLSET: ${{ matrix.b2_toolset }}
B2_CXXSTD: ${{ matrix.b2_cxxstd }}
B2_CXXFLAGS: ${{ matrix.b2_cxxflags }}
COMMENT: ${{ matrix.comment }}
B2_DEFINES: ${{ matrix.b2_defines }}
B2_VARIANT: ${{ matrix.b2_variant }}
B2_LINKFLAGS: ${{ matrix.b2_linkflags }}
UBSAN_OPTIONS: ${{ matrix.ubsan_options }}
B2_TESTFLAGS: ${{ matrix.b2_testflags }}
VALGRIND_OPTS: ${{ matrix.valgrind_opts }}
TRAVIS_BRANCH: ${{ github.base_ref }}
TRAVIS_OS_NAME: "osx"
run: |
echo '==================================> SETUP'
set -e
sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools.bck
echo '==================================> PACKAGES'
echo '==================================> INSTALL AND COMPILE'
set -e
export TRAVIS_BUILD_DIR=$(pwd)
export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')}
export VCS_COMMIT_ID=$GITHUB_SHA
export GIT_COMMIT=$GITHUB_SHA
export REPO_NAME=$(basename $GITHUB_REPOSITORY)
export USER=$(whoami)
export CC=${CC:-gcc}
export PATH=~/.local/bin:/usr/local/bin:$PATH
if [ "$JOB_BUILDTYPE" == "boost" ]; then
echo '==================================> INSTALL'
git clone https://github.com/boostorg/boost-ci.git boost-ci
cp -pr boost-ci/ci boost-ci/.codecov.yml .
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
unset -f cd
fi
export SELF=`basename $REPO_NAME`
export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH"
export BOOST_CI_SRC_FOLDER=$(pwd)
. ./ci/common_install.sh
echo '==================================> SCRIPT'
cd $BOOST_ROOT/libs/$SELF
ci/travis/build.sh
fi

View File

@@ -0,0 +1,185 @@
# Copyright 2016 Peter Dimov
# Copyright 2017 - 2019 James E. King III
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
#
# Generic Travis CI build script for boostorg repositories
# See: https://github.com/boostorg/boost-ci
#
# Instructions for customizing this script for your library:
#
# 1. Customize the compilers and language levels you want in the 'jobs'.
# 2. If you have more than include/, src/, test/, example/, examples/, or
# tools/ directories, modify your Travis CI project and add the environment
# variable DEPINST. For example if your build uses code in "bench/" and
# "fog/" directories, then set DEPINST to the following:
# --include bench --include fog
# 3. If you want to enable Coverity Scan, you need to provide the environment
# variables COVERITY_SCAN_TOKEN and COVERITY_SCAN_NOTIFICATION_EMAIL in
# your github settings.
# 4. Enable pull request builds in your boostorg/<library> account.
#
# That's it - the scripts will do everything else for you.
dist: xenial
language: cpp
env:
global:
# see: http://www.boost.org/build/doc/html/bbv2/overview/invocation.html#bbv2.overview.invocation.properties
# to use the default for a given environment, comment it out; recommend you build debug and release however..
# - B2_ADDRESS_MODEL=address-model=64,32
# - B2_LINK=link=shared,static
# - B2_THREADING=threading=multi,single
- B2_VARIANT=variant=release,debug
install:
- git clone https://github.com/boostorg/boost-ci.git boost-ci
- cp -pr boost-ci/ci boost-ci/.codecov.yml .
- source ci/travis/install.sh
addons:
apt:
packages:
- binutils-gold
- gdb
- libc6-dbg
branches:
only:
- develop
- master
script:
- cd $BOOST_ROOT/libs/$SELF
- ci/travis/build.sh
#
# Default toolsets in Ubuntu
#
# trusty xenial bionic
# 14.04 16.04 18.04
# ------ ------ ------
# clang 3.4 3.8 6.0
# gcc 4.8.2 5.3.1 7.3.0
#
anchors:
clang-38: &clang-38 { apt: { packages: [ "clang-3.8",
"libstdc++-6-dev" ], sources: [ "llvm-toolchain-xenial-3.8",
"ubuntu-toolchain-r-test" ] } }
clang-4: &clang-4 { apt: { packages: [ "clang-4.0",
"libstdc++-6-dev" ], sources: [ "llvm-toolchain-xenial-4.0",
"ubuntu-toolchain-r-test" ] } }
clang-5: &clang-5 { apt: { packages: [ "clang-5.0",
"libstdc++-7-dev" ], sources: [ "llvm-toolchain-xenial-5.0",
"ubuntu-toolchain-r-test" ] } }
clang-6: &clang-6 { apt: { packages: [ "clang-6.0",
"libc6-dbg",
"libc++-dev",
"libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-6.0",
"ubuntu-toolchain-r-test" ] } }
clang-7: &clang-7 { apt: { packages: [ "clang-7",
"libc6-dbg",
"libc++-dev",
"libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-7",
"ubuntu-toolchain-r-test" ] } }
clang-8: &clang-8 { apt: { packages: [ "clang-8",
"libc6-dbg",
"libc++-dev",
"libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-8",
"ubuntu-toolchain-r-test" ] } }
gcc-48: &gcc-48 { apt: { packages: [ "g++-4.8" ] } }
gcc-5: &gcc-5 { apt: { packages: [ "g++-5" ] } }
gcc-6: &gcc-6 { apt: { packages: [ "g++-6" ], sources: [ "ubuntu-toolchain-r-test" ] } }
gcc-7: &gcc-7 { apt: { packages: [ "g++-7" ], sources: [ "ubuntu-toolchain-r-test" ] } }
gcc-8: &gcc-8 { apt: { packages: [ "g++-8" ], sources: [ "ubuntu-toolchain-r-test" ] } }
jobs:
allow_failures:
- env:
- COPY="all the environment settings from your job"
include:
# libstdc++
- { os: "linux", env: [ "B2_TOOLSET=gcc-4.8", "B2_CXXSTD=03,11" ], addons: *gcc-48 }
- { os: "linux", env: [ "B2_TOOLSET=gcc-5", "B2_CXXSTD=11" ], addons: *gcc-5 }
- { os: "linux", env: [ "B2_TOOLSET=gcc-6", "B2_CXXSTD=11,14" ], addons: *gcc-6 }
- { os: "linux", env: [ "B2_TOOLSET=gcc-7", "B2_CXXSTD=11,14,17" ], addons: *gcc-7 }
- { os: "linux", env: [ "B2_TOOLSET=gcc-8", "B2_CXXSTD=14,17,2a" ], addons: *gcc-8 }
- { os: "linux", env: [ "B2_TOOLSET=clang-3.8", "B2_CXXSTD=03,11,14" ], addons: *clang-38 }
- { os: "linux", env: [ "B2_TOOLSET=clang-4.0", "B2_CXXSTD=11,14" ], addons: *clang-4 }
- { os: "linux", env: [ "B2_TOOLSET=clang-5.0", "B2_CXXSTD=11,14,17" ], addons: *clang-5 }
- { os: "linux", env: [ "B2_TOOLSET=clang-6.0", "B2_CXXSTD=14,17,2a" ], addons: *clang-6 }
- { os: "linux", env: [ "B2_TOOLSET=clang-7", "B2_CXXSTD=14,17,2a" ], addons: *clang-7 }
- { os: "linux", env: [ "B2_TOOLSET=clang-8", "B2_CXXSTD=14,17,2a" ], addons: *clang-8 }
# libc++
- { os: "linux", env: [ "B2_TOOLSET=clang-6.0", "B2_CXXSTD=03,11,14,17,2a",
"B2_CXXFLAGS=-stdlib=libc++" ], addons: *clang-6 }
- { os: "osx" , env: [ "B2_TOOLSET=clang", "B2_CXXSTD=03,11,17" ] }
# to enable Intel ICC define INTEL_ICC_SERIAL_NUMBER and the following:
# - { os: "linux", env: [ "B2_TOOLSET=intel-linux", "B2_CXXSTD=11,14,17" ], addons: *gcc-7,
# script: cd $BOOST_ROOT/libs/$SELF && ci/travis/intelicc.sh }
- os: linux
env:
- COMMENT=codecov.io
- B2_TOOLSET=gcc-7
- B2_DEFINES="define=BOOST_NO_STRESS_TEST=1"
addons: *gcc-7
script:
- pushd /tmp && git clone https://github.com/linux-test-project/lcov.git && export PATH=/tmp/lcov/bin:$PATH && which lcov && lcov --version && popd
- cd $BOOST_ROOT/libs/$SELF
- ci/travis/codecov.sh
- os: linux
env:
- COMMENT=cppcheck
script:
- cd $BOOST_ROOT/libs/$SELF
- ci/travis/cppcheck.sh
- os: linux
env:
- COMMENT=ubsan
- B2_VARIANT=variant=debug
- B2_TOOLSET=gcc-8
- B2_CXXSTD=03,11,14,17,2a
- B2_DEFINES="define=BOOST_NO_STRESS_TEST=1"
- B2_CXXFLAGS="cxxflags=-fno-omit-frame-pointer cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=undefined"
- B2_LINKFLAGS="linkflags=-fsanitize=undefined linkflags=-fno-sanitize-recover=undefined linkflags=-fuse-ld=gold"
- UBSAN_OPTIONS=print_stacktrace=1
addons: *gcc-8
- os: linux
env:
- COMMENT=valgrind
- B2_TOOLSET=clang-6.0
- B2_CXXSTD=03,11,14,17,2a
- B2_DEFINES="define=BOOST_NO_STRESS_TEST=1"
- B2_VARIANT=variant=debug
- B2_TESTFLAGS=testing.launcher=valgrind
- VALGRIND_OPTS=--error-exitcode=1
addons: *clang-6
script:
- cd $BOOST_ROOT/libs/$SELF
- ci/travis/valgrind.sh
#################### Jobs to run on pushes to master, develop ###################
# Coverity Scan
- os: linux
if: (env(COVERITY_SCAN_NOTIFICATION_EMAIL) IS present) AND (branch IN (develop, master)) AND (type IN (cron, push))
env:
- COMMENT="Coverity Scan"
- B2_TOOLSET=clang
script:
- cd $BOOST_ROOT/libs/$SELF
- ci/travis/coverity.sh
notifications:
email:
false

View File

@@ -0,0 +1,21 @@
# Copyright 2018 Mike Dev
# 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
cmake_minimum_required(VERSION 3.5...3.20)
project(boost_pool VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
add_library(boost_pool INTERFACE)
add_library(Boost::pool ALIAS boost_pool)
target_include_directories(boost_pool INTERFACE include)
target_link_libraries(boost_pool
INTERFACE
Boost::assert
Boost::config
Boost::integer
Boost::throw_exception
Boost::type_traits
Boost::winapi
)

View File

@@ -0,0 +1,11 @@
# Boost.Pool Library Jamfile
#
# Copyright (c) 2018 James E. King III
#
# Use, modification, and distribution are subject to the
# Boost Software License, Version 1.0. (See accompanying file
# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
# please order by name to ease maintenance
build-project example ;
build-project test ;

View File

@@ -0,0 +1,23 @@
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,34 @@
Pool, part of collection of the [Boost C++ Libraries](http://github.com/boostorg), provides an efficient way to handle memory suballocation for fixed-size items.
### License
Distributed under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).
### Properties
* C++03
* Header Only
### Build Status
Branch | Travis | Appveyor | Coverity Scan | codecov.io | Deps | Docs | Tests |
:-------------: | ------ | -------- | ------------- | ---------- | ---- | ---- | ----- |
[`master`](https://github.com/boostorg/pool/tree/master) | [![Build Status](https://travis-ci.org/boostorg/pool.svg?branch=master)](https://travis-ci.org/boostorg/pool) | [![Build status](https://ci.appveyor.com/api/projects/status/ci0aakleyrgnw7ji/branch/master?svg=true)](https://ci.appveyor.com/project/jeking3/pool-6s5a4/branch/master) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/15800/badge.svg)](https://scan.coverity.com/projects/boostorg-pool) | [![codecov](https://codecov.io/gh/boostorg/pool/branch/master/graph/badge.svg)](https://codecov.io/gh/boostorg/pool/branch/master)| [![Deps](https://img.shields.io/badge/deps-master-brightgreen.svg)](https://pdimov.github.io/boostdep-report/master/pool.html) | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](http://www.boost.org/doc/libs/master/doc/html/pool.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-master-brightgreen.svg)](http://www.boost.org/development/tests/master/developer/pool.html)
[`develop`](https://github.com/boostorg/pool/tree/develop) | [![Build Status](https://travis-ci.org/boostorg/pool.svg?branch=develop)](https://travis-ci.org/boostorg/pool) | [![Build status](https://ci.appveyor.com/api/projects/status/ci0aakleyrgnw7ji/branch/develop?svg=true)](https://ci.appveyor.com/project/jeking3/pool-6s5a4/branch/develop) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/15800/badge.svg)](https://scan.coverity.com/projects/boostorg-pool) | [![codecov](https://codecov.io/gh/boostorg/pool/branch/develop/graph/badge.svg)](https://codecov.io/gh/boostorg/pool/branch/develop) | [![Deps](https://img.shields.io/badge/deps-develop-brightgreen.svg)](https://pdimov.github.io/boostdep-report/develop/pool.html) | [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](http://www.boost.org/doc/libs/develop/doc/html/pool.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-develop-brightgreen.svg)](http://www.boost.org/development/tests/develop/developer/pool.html)
### Directories
| Name | Purpose |
| ----------- | ------------------------------ |
| `doc` | documentation |
| `example` | examples |
| `include` | headers |
| `test` | unit tests |
### More information
* [Ask questions](http://stackoverflow.com/questions/ask?tags=c%2B%2B,boost,boost-pool)
* [Report bugs](https://github.com/boostorg/pool/issues): Be sure to mention Boost version, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well.
* Submit your patches as pull requests against **develop** branch. Note that by submitting patches you agree to license your modifications under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).
* Discussions about the library are held on the [Boost developers mailing list](http://www.boost.org/community/groups.html#main). Be sure to read the [discussion policy](http://www.boost.org/community/policy.html) before posting and add the `[pool]` tag at the beginning of the subject line.

View File

@@ -0,0 +1,126 @@
# Copyright 2016, 2017 Peter Dimov
# Copyright (C) 2017 - 2019 James E. King III
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
#
# Generic Appveyor build script for boostorg repositories
# See: https://github.com/boostorg/boost-ci/
#
# Instructions for customizing this script for your library:
#
# 1. Customize the compilers and language levels you want.
# 2. If you have more than include/, src/, test/, example/, examples/,
# benchmark/ or tools/ directories, set the environment variable DEPINST.
# For example if your build uses code in "bench/" and "fog/" directories:
# - DEPINST: --include bench --include fog
# 3. Enable pull request builds in your boostorg/<library> account.
#
# That's it - the script will do everything else for you.
#
version: 1.0.{build}-{branch}
shallow_clone: true
branches:
only:
- develop
- master
matrix:
# Adding MAYFAIL to any matrix job allows it to fail but the build stays green:
allow_failures:
- MAYFAIL: true
environment:
global:
# see: http://www.boost.org/build/doc/html/bbv2/overview/invocation.html#bbv2.overview.invocation.properties
# to use the default for a given environment, comment it out; recommend you build debug and release however:
# on Windows it is important to exercise all the possibilities, especially shared vs static, however most
# libraries that care about this exercise it in their Jamfiles...
# B2_ADDRESS_MODEL: address-model=64,32
# B2_LINK: link=shared,static
# B2_THREADING: threading=multi,single
B2_VARIANT: variant=release,debug
matrix:
- FLAVOR: Visual Studio 2017 C++2a Strict
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
B2_ADDRESS_MODEL: address-model=64
B2_CXXFLAGS: cxxflags=-permissive-
B2_CXXSTD: latest # 2a
B2_TOOLSET: msvc-14.1
- FLAVOR: Visual Studio 2017 C++17
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
B2_ADDRESS_MODEL: address-model=64
B2_CXXSTD: 17
B2_TOOLSET: msvc-14.1
- FLAVOR: Visual Studio 2017 C++14 (Default)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
B2_ADDRESS_MODEL: address-model=64,32
B2_TOOLSET: msvc-14.1
- FLAVOR: Visual Studio 2015 C++14 (Default)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
B2_ADDRESS_MODEL: address-model=64,32
B2_TOOLSET: msvc-14.0
- FLAVOR: Visual Studio 2010, 2012, 2013
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
B2_TOOLSET: msvc-10.0,msvc-11.0,msvc-12.0
- FLAVOR: cygwin (32-bit)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
ADDPATH: C:\cygwin\bin;
B2_ADDRESS_MODEL: address-model=32
B2_CXXSTD: 03,11
# https://github.com/boostorg/test/issues/144
B2_DEFINES: define=_POSIX_C_SOURCE=200112L
B2_THREADING: threadapi=pthread
B2_TOOLSET: gcc
- FLAVOR: cygwin (64-bit)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
ADDPATH: C:\cygwin64\bin;
B2_ADDRESS_MODEL: address-model=64
B2_CXXSTD: 11,17
# https://github.com/boostorg/test/issues/144
B2_DEFINES: define=_POSIX_C_SOURCE=200112L define=__USE_ISOC99
B2_THREADING: threadapi=pthread
B2_TOOLSET: gcc
- FLAVOR: mingw32
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
ARCH: i686
B2_ADDRESS_MODEL: address-model=32
B2_CXXSTD: 03,11
SCRIPT: ci\appveyor\mingw.bat
- FLAVOR: mingw64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
ARCH: x86_64
B2_ADDRESS_MODEL: address-model=64
B2_CXXSTD: 11,17
B2_DEFINES: define=__USE_ISOC99
SCRIPT: ci\appveyor\mingw.bat
install:
- set SELF=%APPVEYOR_PROJECT_NAME:-=_%
- git clone https://github.com/boostorg/boost-ci.git C:\boost-ci
- xcopy /s /e /q /i C:\boost-ci\ci .\ci
- ci\appveyor\install.bat
build: off
test_script:
- set SELF=%APPVEYOR_PROJECT_NAME:-=_%
- PATH=%ADDPATH%%PATH%
# The definition of B2_TOOLCXX omits B2_CXXSTD= if it was not defined above
- IF NOT DEFINED B2_CXXSTD (SET B2_TOOLCXX=toolset=%B2_TOOLSET%) ELSE (SET B2_TOOLCXX=toolset=%B2_TOOLSET% cxxstd=%B2_CXXSTD%)
# Echo the complete build command to the build log
- IF NOT DEFINED SCRIPT (ECHO b2 libs/%SELF:\=/% %B2_TOOLCXX% %B2_CXXFLAGS% %B2_DEFINES% %B2_THREADING% %B2_ADDRESS_MODEL% %B2_LINK% %B2_THREADING% %B2_VARIANT% -j3)
# Now go build...
- IF DEFINED SCRIPT (call libs\%SELF%\%SCRIPT%) ELSE (b2 libs/%SELF:\=/% %B2_TOOLCXX% %B2_CXXFLAGS% %B2_DEFINES% %B2_THREADING% %B2_ADDRESS_MODEL% %B2_LINK% %B2_THREADING% %B2_VARIANT% -j3)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></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"><a href="appendices/history.html">Appendix A: History</a></span></dt>
<dt><span class="section"><a href="appendices/faq.html">Appendix B: FAQ</a></span></dt>
<dt><span class="section"><a href="appendices/acknowledgements.html">Appendix C: Acknowledgements</a></span></dt>
<dt><span class="section"><a href="appendices/tests.html">Appendix D: Tests</a></span></dt>
<dt><span class="section"><a href="appendices/tickets.html">Appendix E: Tickets</a></span></dt>
<dt><span class="section"><a href="appendices/implementations.html">Appendix F: Other
Implementations</a></span></dt>
<dt><span class="section"><a href="appendices/references.html">Appendix G: References</a></span></dt>
<dt><span class="section"><a href="appendices/todo.html">Appendix H: Future plans</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="faq.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tests.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_pool.appendices.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Appendix C: Acknowledgements">Appendix C: Acknowledgements</a>
</h3></div></div></div>
<p>
Many, many thanks to the Boost peers, notably Jeff Garland, Beman Dawes,
Ed Brey, Gary Powell, Peter Dimov, and Jens Maurer for providing helpful
suggestions!
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="history.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_pool.appendices.faq"></a><a class="link" href="faq.html" title="Appendix B: FAQ">Appendix B: FAQ</a>
</h3></div></div></div>
<h6>
<a name="boost_pool.appendices.faq.h0"></a>
<span><a name="boost_pool.appendices.faq.why_should_i_use_pool_"></a></span><a class="link" href="faq.html#boost_pool.appendices.faq.why_should_i_use_pool_">Why
should I use Pool?</a>
</h6>
<p>
Using Pools gives you more control over how memory is used in your program.
For example, you could have a situation where you want to allocate a bunch
of small objects at one point, and then reach a point in your program where
none of them are needed any more. Using pool interfaces, you can choose to
run their destructors or just drop them off into oblivion; the pool interface
will guarantee that there are no system memory leaks.
</p>
<h6>
<a name="boost_pool.appendices.faq.h1"></a>
<span><a name="boost_pool.appendices.faq.when_should_i_use_pool_"></a></span><a class="link" href="faq.html#boost_pool.appendices.faq.when_should_i_use_pool_">When
should I use Pool?</a>
</h6>
<p>
Pools are generally used when there is a lot of allocation and deallocation
of small objects. Another common usage is the situation above, where many
objects may be dropped out of memory.
</p>
<p>
In general, use Pools when you need a more efficient way to do unusual memory
control.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../appendices.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="faq.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_pool.appendices.history"></a><a class="link" href="history.html" title="Appendix A: History">Appendix A: History</a>
</h3></div></div></div>
<h5>
<a name="boost_pool.appendices.history.h0"></a>
<span><a name="boost_pool.appendices.history.version_2_0_0__january_11__2011"></a></span><a class="link" href="history.html#boost_pool.appendices.history.version_2_0_0__january_11__2011">Version
2.0.0, January 11, 2011</a>
</h5>
<p>
<span class="emphasis"><em>Documentation and testing revision</em></span>
</p>
<p>
<span class="bold"><strong>Features:</strong></span>
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
Fix issues <a href="https://svn.boost.org/trac/boost/ticket/1252" target="_top">1252</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4960" target="_top">4960</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5526" target="_top">5526</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5700" target="_top">5700</a>,
<a href="https://svn.boost.org/trac/boost/ticket/2696" target="_top">2696</a>.
</li>
<li class="listitem">
Documentation converted and rewritten and revised by Paul A. Bristow
using Quickbook, Doxygen, for html and pdf, based on Stephen Cleary's
html version, Revised 05 December, 2006.
</li>
</ul></div>
<p>
This used Opera 11.0, and <code class="computeroutput"><span class="identifier">html_to_quickbook</span><span class="special">.</span><span class="identifier">css</span></code> as
a special display format. On the Opera full taskbar (chose <span class="emphasis"><em>enable
full taskbar</em></span>) View, Style, Manage modes, Display.
</p>
<p>
Choose <span class="emphasis"><em>add <code class="computeroutput"><span class="special">\</span><span class="identifier">boost</span><span class="special">-</span><span class="identifier">sandbox</span><span class="special">\</span><span class="identifier">boost_docs</span><span class="special">\</span><span class="identifier">trunk</span><span class="special">\</span><span class="identifier">doc</span><span class="special">\</span><span class="identifier">style</span><span class="special">\</span><span class="identifier">html</span><span class="special">\</span><span class="identifier">conversion</span><span class="special">\</span><span class="identifier">html_to_quickbook</span><span class="special">.</span><span class="identifier">css</span></code></em></span>
to My Style Sheet. Html pages are now displayed as Quickbook and can be copied
and pasted into quickbook files using your favored text editor for Quickbook.
</p>
<h5>
<a name="boost_pool.appendices.history.h1"></a>
<span><a name="boost_pool.appendices.history.version_1_0_0__january_1__2000"></a></span><a class="link" href="history.html#boost_pool.appendices.history.version_1_0_0__january_1__2000">Version
1.0.0, January 1, 2000</a>
</h5>
<p>
<span class="emphasis"><em>First release</em></span>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

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

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></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 <a href="http://gee.cs.oswego.edu/dl/html/malloc.html" target="_top">http://gee.cs.oswego.edu/dl/html/malloc.html</a>
</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 <a href="ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps" target="_top">ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps</a>
</li>
</ol></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tickets.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_pool.appendices.tests"></a><a class="link" href="tests.html" title="Appendix D: Tests">Appendix D: Tests</a>
</h3></div></div></div>
<p>
See folder <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">pool</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span></code>.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></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 <a href="https://svn.boost.org/trac/boost" target="_top">Boost.Trac</a>.
</p>
<p>
Existing open tickets for this library alone can be viewed <a href="https://svn.boost.org/trac/boost/query?status=assigned&amp;status=new&amp;status=reopened&amp;component=pool&amp;col=id&amp;col=summary&amp;col=status&amp;col=owner&amp;col=type&amp;col=milestone&amp;order=priority" target="_top">here</a>.
Existing tickets for this library - including closed ones - can be viewed
<a href="https://svn.boost.org/trac/boost/query?status=assigned&amp;status=closed&amp;status=new&amp;status=reopened&amp;component=pool&amp;col=id&amp;col=summary&amp;col=status&amp;col=owner&amp;col=type&amp;col=milestone&amp;order=priority" target="_top">here</a>.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="references.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../indexes.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_pool.appendices.todo"></a><a class="link" href="todo.html" title="Appendix H: Future plans">Appendix H: Future plans</a>
</h3></div></div></div>
<p>
Another pool interface will be written: a base class for per-class pool allocation.
</p>
<p>
This "pool_base" interface will be Singleton Usage with Exceptions,
and built on the singleton_pool interface.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></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"><a href="indexes/s01.html">Function Index</a></span></dt>
<dt><span class="section"><a href="indexes/s02.html">Class Index</a></span></dt>
<dt><span class="section"><a href="indexes/s03.html">Typedef Index</a></span></dt>
<dt><span class="section"><a href="indexes/s04.html">Index</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../indexes.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s02.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="id947354"></a>Function Index</h3></div></div></div>
<p><a class="link" href="s01.html#idx_id_0">A</a> <a class="link" href="s01.html#idx_id_2">C</a> <a class="link" href="s01.html#idx_id_3">D</a> <a class="link" href="s01.html#idx_id_5">F</a> <a class="link" href="s01.html#idx_id_6">G</a> <a class="link" href="s01.html#idx_id_8">I</a> <a class="link" href="s01.html#idx_id_10">M</a> <a class="link" href="s01.html#idx_id_11">N</a> <a class="link" href="s01.html#idx_id_12">O</a> <a class="link" href="s01.html#idx_id_13">P</a> <a class="link" href="s01.html#idx_id_14">R</a> <a class="link" href="s01.html#idx_id_15">S</a> <a class="link" href="s01.html#idx_id_16">T</a></p>
<div class="variablelist"><dl>
<dt>
<a name="idx_id_0"></a><span class="term">A</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">address</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">add_block</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">add_ordered_block</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">allocate</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_2"></a><span class="term">C</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">construct</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_3"></a><span class="term">D</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">deallocate</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">destroy</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_5"></a><span class="term">F</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">find_prev</span></p>
<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li></ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">free</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">free_n</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
</ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_6"></a><span class="term">G</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">get_pool</span></p>
<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li></ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_8"></a><span class="term">I</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">is_from</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_10"></a><span class="term">M</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">main</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">malloc</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">malloc_n</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">malloc_need_resize</span></p>
<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li></ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">max_size</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_11"></a><span class="term">N</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">nextof</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_12"></a><span class="term">O</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">ordered_free</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">ordered_free_n</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">ordered_malloc</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">ordered_malloc_need_resize</span></p>
<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li></ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_13"></a><span class="term">P</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">purge_memory</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_14"></a><span class="term">R</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">release_memory</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_15"></a><span class="term">S</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">segregate</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">set_max_size</span></p>
<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li></ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">set_next_size</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">sizeof</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment" title="Guaranteeing Alignment - How we guarantee alignment portably."><span class="index-entry-level-1">Guaranteeing Alignment - How we guarantee alignment portably.</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../header/boost/pool/pool_alloc_hpp.html" title="Header &lt;boost/pool/pool_alloc.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/pool/pool_alloc.hpp &gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.alignment.chunks" title="How Contiguous Chunks are Handled"><span class="index-entry-level-1">How Contiguous Chunks are Handled</span></a></p></li>
</ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_16"></a><span class="term">T</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">try_malloc_n</span></p>
<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li></ul></div>
</li></ul></div></dd>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="s01.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s03.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="id948701"></a>Class Index</h3></div></div></div>
<p><a class="link" href="s02.html#idx_id_22">D</a> <a class="link" href="s02.html#idx_id_24">F</a> <a class="link" href="s02.html#idx_id_31">O</a> <a class="link" href="s02.html#idx_id_32">P</a> <a class="link" href="s02.html#idx_id_33">R</a> <a class="link" href="s02.html#idx_id_34">S</a></p>
<div class="variablelist"><dl>
<dt>
<a name="idx_id_22"></a><span class="term">D</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">default_user_allocator_malloc_free</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">default_user_allocator_new_delete</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
</ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_24"></a><span class="term">F</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">fast_pool_allocator</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">fast_pool_allocator_tag</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_tag.html" title="Struct fast_pool_allocator_tag"><span class="index-entry-level-1">Struct fast_pool_allocator_tag</span></a></p></li>
</ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_31"></a><span class="term">O</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">object_creator</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool/object_creator.html" title="Struct object_creator"><span class="index-entry-level-1">Struct object_creator</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">object_pool</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></strong></span></p></li>
</ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_32"></a><span class="term">P</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">pool</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></strong></span></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">pool_allocator</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></strong></span></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">pool_allocator_tag</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_tag.html" title="Struct pool_allocator_tag"><span class="index-entry-level-1">Struct pool_allocator_tag</span></a></p></li>
</ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_33"></a><span class="term">R</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">rebind</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_34"></a><span class="term">S</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">simple_segregated_storage</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">singleton_pool</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></strong></span></p></li>
</ul></div>
</li>
</ul></div></dd>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="s02.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s04.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="id949226"></a>Typedef Index</h3></div></div></div>
<p><a class="link" href="s03.html#idx_id_40">C</a> <a class="link" href="s03.html#idx_id_41">D</a> <a class="link" href="s03.html#idx_id_42">E</a> <a class="link" href="s03.html#idx_id_48">M</a> <a class="link" href="s03.html#idx_id_50">O</a> <a class="link" href="s03.html#idx_id_51">P</a> <a class="link" href="s03.html#idx_id_52">R</a> <a class="link" href="s03.html#idx_id_53">S</a> <a class="link" href="s03.html#idx_id_54">T</a> <a class="link" href="s03.html#idx_id_55">U</a> <a class="link" href="s03.html#idx_id_56">V</a></p>
<div class="variablelist"><dl>
<dt>
<a name="idx_id_40"></a><span class="term">C</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">const_pointer</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">const_reference</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li>
</ul></div></dd>
<dt>
<a name="idx_id_41"></a><span class="term">D</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">difference_type</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_42"></a><span class="term">E</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">element_type</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_48"></a><span class="term">M</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">mutex</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_50"></a><span class="term">O</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">other</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator/rebind.html" title="Struct template rebind"><span class="index-entry-level-1">Struct template rebind</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_51"></a><span class="term">P</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">pointer</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_52"></a><span class="term">R</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">reference</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_53"></a><span class="term">S</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">size_type</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/simple_segregated_storage.html" title="Class template simple_segregated_storage"><span class="index-entry-level-1">Class template simple_segregated_storage</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/pooling.html#boost_pool.pool.pooling.simple_segregated" title="Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)"><span class="index-entry-level-1">Simple Segregated Storage (Not for the faint of heart - Embedded programmers only!)</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_malloc_free.html" title="Struct default_user_allocator_malloc_free"><span class="index-entry-level-1">Struct default_user_allocator_malloc_free</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/default_user_allocator_new_delete.html" title="Struct default_user_allocator_new_delete"><span class="index-entry-level-1">Struct default_user_allocator_new_delete</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_54"></a><span class="term">T</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">tag</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_55"></a><span class="term">U</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">user_allocator</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/object_pool.html" title="Class template object_pool"><span class="index-entry-level-1">Class template object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool.html" title="Class template pool"><span class="index-entry-level-1">Class template pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/singleton_pool.html" title="Class template singleton_pool"><span class="index-entry-level-1">Class template singleton_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.object_pool" title="Object_pool"><span class="index-entry-level-1">Object_pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool" title="pool"><span class="index-entry-level-1">pool</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.singleton_pool" title="Singleton_pool"><span class="index-entry-level-1">Singleton_pool</span></a></p></li>
</ul></div>
</li></ul></div></dd>
<dt>
<a name="idx_id_56"></a><span class="term">V</span>
</dt>
<dd><div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">value_type</span></p>
<div class="index"><ul class="index" type="none" compact>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator.html" title="Class template fast_pool_allocator"><span class="index-entry-level-1">Class template fast_pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/fast_pool_allocator_void__UserAllocat_id378528.html" title="Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template fast_pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator.html" title="Class template pool_allocator"><span class="index-entry-level-1">Class template pool_allocator</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../../boost/pool_allocator_void__UserAllocator__M_id378014.html" title="Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;"><span class="index-entry-level-1">Class template pool_allocator&lt;void, UserAllocator, Mutex, NextSize, MaxSize&gt;</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../pool/interfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator" title="pool_allocator"><span class="index-entry-level-1">pool_allocator</span></a></p></li>
</ul></div>
</li></ul></div></dd>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></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"><a href="pool/introduction.html">Introduction</a></span></dt>
<dt><span class="section"><a href="pool/usage.html">How do I use Pool?</a></span></dt>
<dt><span class="section"><a href="pool/installation.html">Installation</a></span></dt>
<dt><span class="section"><a href="pool/testing.html">Building the Test Programs</a></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"><a href="pool/interfaces.html#boost_pool.pool.interfaces.interfaces">Pool Interfaces</a></span></dt></dl></dd>
<dt><span class="section"><a href="pool/pooling.html">Pool in More Depth</a></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"><a href="pool/pooling.html#boost_pool.pool.pooling.simple">Simple Segregated Storage</a></span></dt>
<dt><span class="section"><a href="pool/pooling.html#boost_pool.pool.pooling.alignment">Guaranteeing Alignment
- How we guarantee alignment portably.</a></span></dt>
<dt><span class="section"><a href="pool/pooling.html#boost_pool.pool.pooling.simple_segregated">Simple Segregated
Storage (Not for the faint of heart - Embedded programmers only!)</a></span></dt>
<dt><span class="section"><a href="pool/pooling.html#boost_pool.pool.pooling.user_allocator">The UserAllocator
Concept</a></span></dt>
</dl></dd>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../pool.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="introduction.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_pool.pool.conventions"></a><a class="link" href="conventions.html" title="Documentation Naming and Formatting Conventions">Documentation Naming and
Formatting Conventions</a>
</h3></div></div></div>
<p>
This documentation makes use of the following naming and formatting conventions.
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
Code is in <code class="computeroutput"><span class="identifier">fixed</span> <span class="identifier">width</span>
<span class="identifier">font</span></code> and is syntax-highlighted
in color.
</li>
<li class="listitem">
Replaceable text that you will need to supply is in <em class="replaceable"><code>italics</code></em>.
</li>
<li class="listitem">
Free functions are rendered in the <code class="computeroutput"><span class="identifier">code</span>
<span class="identifier">font</span></code> followed by <code class="computeroutput"><span class="special">()</span></code>, as in <code class="computeroutput"><span class="identifier">free_function</span><span class="special">()</span></code>.
</li>
<li class="listitem">
If a name refers to a class template, it is specified like this: <code class="computeroutput"><span class="identifier">class_template</span><span class="special">&lt;&gt;</span></code>;
that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">&lt;&gt;</span></code> to indicate that it is a class
template.
</li>
<li class="listitem">
If a name refers to a function-like macro, it is specified like this:
<code class="computeroutput"><span class="identifier">MACRO</span><span class="special">()</span></code>;
that is, it is uppercase in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code> to indicate that it is a function-like
macro. Object-like macros appear without the trailing <code class="computeroutput"><span class="special">()</span></code>.
</li>
<li class="listitem">
Names that refer to <span class="emphasis"><em>concepts</em></span> in the generic programming
sense are specified in CamelCase.
</li>
</ul></div>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
In addition, notes such as this one specify non-essential information that
provides additional background or rationale.
</p></td></tr>
</table></div>
<p>
Finally, you can mentally add the following to any code fragments in this
document:
</p>
<pre class="programlisting"><span class="comment">// Include all of Pool files</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pool</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="usage.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="testing.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_pool.pool.installation"></a><a class="link" href="installation.html" title="Installation">Installation</a>
</h3></div></div></div>
<p>
The Boost Pool library is a header-only library. That means there is no .lib,
.dll, or .so to build; just add the Boost directory to your compiler's include
file path, and you should be good to go!
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

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

View File

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

View File

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

View File

@@ -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"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="introduction.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../pool.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="installation.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_pool.pool.usage"></a><a class="link" href="usage.html" title="How do I use Pool?">How do I use Pool?</a>
</h3></div></div></div>
<p>
See the <a class="link" href="interfaces.html" title="Boost Pool Interfaces - What interfaces are provided and when to use each one.">Pool Interfaces</a>
section that covers the different Pool interfaces supplied by this library.
</p>
<h6>
<a name="boost_pool.pool.usage.h0"></a>
<span><a name="boost_pool.pool.usage.library_structure_and_dependencies"></a></span><a class="link" href="usage.html#boost_pool.pool.usage.library_structure_and_dependencies">Library
Structure and Dependencies</a>
</h6>
<p>
Forward declarations of all the exposed symbols for this library are in the
header made inscope by <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pool</span><span class="special">/</span><span class="identifier">poolfwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
</p>
<p>
The library may use macros, which will be prefixed with <code class="computeroutput"><span class="identifier">BOOST_POOL_</span></code>.
The exception to this rule are the include file guards, which (for file
<code class="computeroutput"><span class="identifier">xxx</span><span class="special">.</span><span class="identifier">hpp</span></code>) is <code class="computeroutput"><span class="identifier">BOOST_xxx_HPP</span></code>.
</p>
<p>
All exposed symbols defined by the library will be in namespace boost::.
All symbols used only by the implementation will be in namespace boost::details::pool.
</p>
<p>
Every header used only by the implementation is in the subdirectory <code class="computeroutput"><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span></code>.
</p>
<p>
Any header in the library may include any other header in the library or
any system-supplied header at its discretion.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

@@ -0,0 +1,55 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Pool C++ Reference</title>
<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="index.html" title="Boost.Pool">
<link rel="up" href="index.html" title="Boost.Pool">
<link rel="prev" href="boost_pool/pool/pooling.html" title="Pool in More Depth">
<link rel="next" href="header/boost/pool/object_pool_hpp.html" title="Header &lt;boost/pool/object_pool.hpp&gt;">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
<td align="center"><a href="../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../more/index.htm">More</a></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"><a href="header/boost/pool/object_pool_hpp.html">Header &lt;boost/pool/object_pool.hpp&gt;</a></span></dt>
<dd><dl></dl></dd>
<dt><span class="section"><a href="header/boost/pool/pool_hpp.html">Header &lt;boost/pool/pool.hpp&gt;</a></span></dt>
<dd><dl></dl></dd>
<dt><span class="section"><a href="header/boost/pool/pool_alloc_hpp.html">Header &lt;boost/pool/pool_alloc.hpp&gt;</a></span></dt>
<dd><dl></dl></dd>
<dt><span class="section"><a href="header/boost/pool/poolfwd_hpp.html">Header &lt;boost/pool/poolfwd.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="header/boost/pool/simple_segregated_storage_hpp.html">Header &lt;boost/pool/simple_segregated_storage.hpp&gt;</a></span></dt>
<dd><dl></dl></dd>
<dt><span class="section"><a href="header/boost/pool/singleton_pool_hpp.html">Header &lt;boost/pool/singleton_pool.hpp&gt;</a></span></dt>
<dd><dl></dl></dd>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2006 Stephen Cleary<br>Copyright &#169; 2011 Paul A. Bristow<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</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>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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"><a href="../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="boost_pool/pool.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
<div class="article">
<div class="titlepage">
<div>
<div><h2 class="title">
<a name="boost_pool"></a>Boost.Pool</h2></div>
<div><div class="authorgroup"><div class="author"><h3 class="author">
<span class="firstname">Stephen</span> <span class="surname">Cleary</span>
</h3></div></div></div>
<div><p class="copyright">Copyright &#169; 2000-2006 Stephen Cleary</p></div>
<div><p class="copyright">Copyright &#169; 2011 Paul A. Bristow</p></div>
<div><div class="legalnotice">
<a name="boost_pool.legal"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></div>
</div>
<hr>
</div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="section"><a href="boost_pool/pool.html">Introduction and Overview</a></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"><a href="boost_pool/pool/introduction.html">Introduction</a></span></dt>
<dt><span class="section"><a href="boost_pool/pool/usage.html">How do I use Pool?</a></span></dt>
<dt><span class="section"><a href="boost_pool/pool/installation.html">Installation</a></span></dt>
<dt><span class="section"><a href="boost_pool/pool/testing.html">Building the Test Programs</a></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"><a href="boost_pool/pool/pooling.html">Pool in More Depth</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="boost_pool_c___reference.html">Boost.Pool C++ Reference</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="header/boost/pool/object_pool_hpp.html">Header &lt;boost/pool/object_pool.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="header/boost/pool/pool_hpp.html">Header &lt;boost/pool/pool.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="header/boost/pool/pool_alloc_hpp.html">Header &lt;boost/pool/pool_alloc.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="header/boost/pool/poolfwd_hpp.html">Header &lt;boost/pool/poolfwd.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="header/boost/pool/simple_segregated_storage_hpp.html">Header &lt;boost/pool/simple_segregated_storage.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="header/boost/pool/singleton_pool_hpp.html">Header &lt;boost/pool/singleton_pool.hpp&gt;</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="boost_pool/appendices.html">Appendices</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="boost_pool/appendices/history.html">Appendix A: History</a></span></dt>
<dt><span class="section"><a href="boost_pool/appendices/faq.html">Appendix B: FAQ</a></span></dt>
<dt><span class="section"><a href="boost_pool/appendices/acknowledgements.html">Appendix C: Acknowledgements</a></span></dt>
<dt><span class="section"><a href="boost_pool/appendices/tests.html">Appendix D: Tests</a></span></dt>
<dt><span class="section"><a href="boost_pool/appendices/tickets.html">Appendix E: Tickets</a></span></dt>
<dt><span class="section"><a href="boost_pool/appendices/implementations.html">Appendix F: Other
Implementations</a></span></dt>
<dt><span class="section"><a href="boost_pool/appendices/references.html">Appendix G: References</a></span></dt>
<dt><span class="section"><a href="boost_pool/appendices/todo.html">Appendix H: Future plans</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="boost_pool/indexes.html">Indexes</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="boost_pool/indexes/s01.html">Function Index</a></span></dt>
<dt><span class="section"><a href="boost_pool/indexes/s02.html">Class Index</a></span></dt>
<dt><span class="section"><a href="boost_pool/indexes/s03.html">Typedef Index</a></span></dt>
<dt><span class="section"><a href="boost_pool/indexes/s04.html">Index</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"><p><small>Last revised: December 15, 2011 at 11:24:47 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="boost_pool/pool.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1,473 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="770"
height="233"
id="svg2">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<image
xlink:href="data:image/png;base64,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
TkSuQmCC
"
x="0"
y="0"
width="770"
height="233"
id="image10" />
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1,640 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="784"
height="323"
id="svg2">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<image
xlink:href="data:image/png;base64,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
"
x="0"
y="0"
width="784"
height="323"
id="image10" />
</svg>

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,762 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="794"
height="402"
id="svg2">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<image
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxoAAAGSCAYAAABkPLfOAAAABHNCSVQICAgIfAhkiAAAIABJREFU
eJzsvV1oW1mW6P/zTF2G21xXhWnb5EGZ5G9MXVoSuXRsLsRQ8SncBJKHmSZIguTF17Se2nmp8msb
b6HAPLmqH+J5cuEWNDbIwl01TCcQMBy5QIY7TtGdSGq6MCFun4eM5bmVjO7DcIuU/g/nHOlIOkdf
li05Xj8wls7ZH2uvtSTtj7X3GSiVSiUEQRAEQRAEQRC6yF/1WgBBEARBEARBEN49ZKAhCIIgCIIg
CELXkYGGIAiCIAiCIAhdRwYagiAIgiAIgiB0HRloCIIgCIIgCILQdWSgIQiCIAiCIAhC15GBhiAI
giAIgiAIXUcGGoIgCIIgCIIgdB0ZaAiCIAiCIAiC0HVkoCEIgiAIgiAIQteRgYYgnHt2iA0MMDAQ
Zt1wux1joNH9HmOshz1lM+8NENs5TtkDhPux4X2LwXpsnXY0thMb6KqexW5uNPmc9zVnWXZBON/I
QEMQzj3XWSxlUKT49qD23g6xSQWhNQ5KG9z19UC8JvjufooK3eEjF9l8dz9Fobh5vdOyNzhYCxG8
0puGG+vrtDJGMtbDDIRb69y3k7Z9DNbDl9j88CPa0dj1xQwKxaddcrBe2+00aNU3Klxn8WCNkMdn
pXl93fGbzsq5zmJGQYeyC4LQO97rtQCCIPQBOy/JhoCXBlyv/JLvxD4jG4LQnfY6jqfKzhOyd37h
Lt/OE5S6yWLHhRt8vRnk5kbHBXSOsc4n316hlap9dzco3W2t2HbStoc5yLiXCrH2eZvecmw71cvS
M7udBm34RlW2rzfhzucdfZa75TedlrPzRKE+LfXv95AgCK7IioYgCOy8hDvB2osxnnx4B1Ih7jin
EcuhVFZoirFOeGDAnKW0XjuvV4WvOPKWZzXt/AMxdsqva0JpdmIes6AG659lucMXVp5Y1SzvzhOF
ci5nuNVvl2SF21SFWhlfsxm8yXUM1sMD9feb5fessyYUxE5jZdyJDTBw6R4pNekoy84zQHh9nVht
3vA6RpNy20pb0+bG4XMG6+FP4NPGM+buOjJY/8yyU40MdaFvxjrhgRg7zWRvYDenDJX064Td2lbn
m440tZ+DOnvH2HH4rXdbvMtzk9XVN7xkcfhMbGeHL+4Fm64auerH1W8GKu1s0IYqqsrxqMuVHZ6o
zlcmBUHoHTLQEIRzzw4v+YiPPgyRKsdO7RB7cpNfsEnK0XE01sMMPLlJqVSidLAG3x6A7y4bGQVB
+PoL+HQtROrbL4h9Ap9nVLnMndgAA599yEGpRKlUIhO8xxc7VPIrePLJtwRDikypxMGaQ57ri2Tu
uIhufM1mCjYxZcooxRNHx/xJdo1fWJ0Tz/qte5e+/dRsV0Y5it8kePM6cMC3wYx5v1RisabD45Xf
u05HGMtBzNTpwRqh7EsMKqFEGbuunRgDA5/x4YFZzudsotSnZijb9V+wFgL16V18TcptPa0VAnXn
wGrzAWuhEGsHbuFz1iDj8w0+erlJKnjFddbZS0emDRU3L60TdsqwE+MTPmUt5Ey6SUrd5HqTdnrb
zeDrTViz9FiyDem7y4ZbaGCdbwa54vP4HGBdn4RMqUSpdJMnk8pcDWzYFq/y3GWt9Q0vWWp95uaT
SZRVnzce+nH6zQ7ctPR5sBZCZRYbtKGGKv/zqMsNa8VLxhmCcAYpCYJwvsmsldYOSqVSRpUIrZXM
l6qUKR2U1kKUQmsHZrqDtVJIZSqvCZXsWxlFKRRSpbWDUimjQqVQSJUy1nWVsdOb18rV2ves19Tc
L2VUCUd9a1U37cuhchm1ZZYyqlp2r/oP1kohq901pZfWQqqUyah62aqFcM/fpM0Ha6FSSKmyTg/W
QhV5nW0vZUqqppyqdtfU07DcltPW1Ompg4PSWsj2A9NflJuiPHVs1olSJWXd95a3unxv2ZvYzenH
LVDnm16fg1p7N3zvaEuDz5WrrDWfi5ZkKdV/Vjxxq9OjvFa+GxqW06Itqj7XgiCcKWSgIQjnnMya
1QG0O4MZZf2oV3c2D9ZCJcD8q+o0ZkqKUEllDsqvazs7VZ0Su65yZ6S+I11OYw981hoMBKrkcHbk
Kp2dRvXX3auqP1QKqTXvDrRb2V7Xq9psdjQreqyVvaZDXVdOzWCh0jNtUG77acv29hpoZZQjjXda
Tx3bg9nQmpXH4T81+Q7WQg5ZG8jeit2cg9CGuA/y3D4Hrrp1VO7VFu/PlZus9b7RXJZSg4GiV7Or
9VNbntv7hm3wksulLhdh3L8fBEE4E0jolCCcZ4x1nuDY6J26x6UnN62QjM9QoQ+55EgeWrNCaTY+
4uuwFW++8wSlPmXxuq/8+q6vOjSkmh1il+7B2udmqEqTsIiD9TBPrtytD8fZ+YLNO7+w8hmshyfB
CuPA+JpN7vDRwbrLnoKa+mv0Ebb3URx8C3c+Z2PxLh/dCaGsmKyd9QYn5jjzN6rT+JpN1jjYsNrl
1IEdSmQp5ODbVOX0pJ2YFZ9/s9zurzep7KFpVG5bacF3JYjKWGEtpUV3+1xfLIcllTIKVMY7rZuO
LBk+37hr5nH4D+zwxT1L3p0Yn2w6DiVoJLun3WLEwtZ+gksfwubXzU8+8vBNt89BxU47xAasTfF2
3F6jtriWZ7DuJmuNbzSXxQ7nUtBC2JRrnTV+Y6yH+YTP2bjrA2OHHcNbjtryK+V41eUi1fpnEjYl
CGeZ3o1xBEHoKY7Z6HK4jBnLYc7G1s1QZkqqPGtdHTZVCYGqvg72veoyPcOdqgUsKWgw2+ksszpU
ozzDWokv8qzfXCGon411tsWZpk5Wj/yN6qyd2bV1FTJjz6rb5Fw1UJly20LmcoxVt/vqTFW57aR1
vG80Q+2kYXiLh45ak9dst/Neo3zednP6b3WInVcb3dvk/jmo2EmVMrWhYg3a4l5eA1k907nJUtGX
q+96toua0Dyr/LWaFawm3w1VVPmfR10N5GltBUoQhH5joFQqlY47WBEEQeg+O+zsXOe6TGWeOjux
AZ7ctDaiG+uEL90jFXKsILxT7BALv+QXXWxb1ay/IAjCOUZCpwRB6CN2iJWPyX2CxEv0gJ0Yk47T
uswTmTKoXsp0Yhish59ws6sDqNaOkRUEQTgPyEBDEIT+InWPS5/A581i/YWT4foimeA9LlU9K6Hb
nfF+wcfdjS762U6MgYFJFIrJhs+F6BE1z6lp7RkpgiAInSOhU4IgCIIgCIIgdJ33ei2A0DtisViv
RRAEQRAEQeiYH374QfozfYyETgmCIAiCIAhnjh9++IHf/e53vRZDaICsaJxj/vqv/5q3b9/y4sUL
vvnmm16LI5xjfv7zn/OXv/xF/PAMIrYTjov4kNAJP//5z/n973+P7ADob2SgIfD8+XOeP3/eazGE
c8yDBw/ED88oYjvhuIgPCZ3w4MGDXosgtICETgmCIAiCIAiC0HVkoCEIgiAIgiAIQteRgYZwfqg6
Qz7GDgbrsXW6dXT8TswuVzgJ3kX9Guthhz+avIvt7DXuOt0hZn0feD7yYifW+L4HYtfzTAt+1Uop
J+wv4qPCaSEDDeGcsEPs0j2CmRKlUolS6SZPBi5xL3ucMg3W1+Ur+d2gN7b03f2ctdCpV9sF3gXf
v84vmin/+k0UipttPtFP7Pqu0Y5eWvCrPkB8VDgtZKAhnA+Ml2SB7Et7/eI6i6UD1oLHKHL9E+59
W3l/fbFESZ5mfWKcpH5rbdlLzoIf9ZO+WsFLp74rHl8A1kpG+SnfXZihFrueXdrVi6dftUEv/EV8
VDgJZKAhnA98H3EnBKl7lxwdBh93F+/is9M4Q6ucPYq6kCtzifnSvRSoSQYGYqy7LENXlqYHCK+b
AxxzaXqAgXCMWLi2LoN1+9rAeV3CdtdB3TJ/uSPo+LP16GVHD6ptWVu3HQYRJmzJFQ7X27p5nTXt
8pDLLZzB6UfO/I18qXwvtl6uN7ZTuW77o5fszcp2+v5BUw13m0poSnjdMGUNmyGQbp+5ep1WbBF7
4lHF9UVKpRIH1pSvslZCF+t6YO+uXXvy3VP+XIdZN2w7W7J4fMYqbVrH2IlV6cO+1trn1f27x1Uv
TfJ7+lUdp/F99+766Ol/9wgdURLOLfF4vKSUKv30pz/ttSinRKakoITjL7R2YN46WCuFoKQylXTO
16G1g3Ka0FqmdJAxX2MmKpVKB6W1ECVQJTObKmGX4XxdliFUWjuoyVMu/8BKZ10/B8TjcdMPPXVQ
q9+1kmk6dx3W29GLg3pbWmUQWisdWO/XHHZEZcqvnX7RsE6HD2SUQ95a+T38yNSHdc+WqwVfMu9V
/F5lrNeOtjXy+/qy6/VVtt0pcrAWcug/U8oclBp85qp1Y+et2MLDRzLKytPAj95hu54mTh+ybQKq
lLFt4NUeh/6ddi23M7RWOmj1O8L1u8f7+6E2f8t+5eQ0vu/eYR+1/SYYDDb1MaF3yIqGcI64zmKp
RKl0UI5NTd37hHUDOPiWFKAmB6xwCVBPdmDnCQoIXvGB7y4bpRIbd6/ju9S4JuNlFgjx4SXg0oeE
cIZtAaE7fOSryeRcdYnBYp8vYZ8Irerg+l3u+qxl9FSItQMrnZcdvSust6XvLp+vhSB1jy92YOdr
+MghROjDS2Wbpr49aK1Oa4b85pMBJhVAlpednkKQ+rZ6Js/Nl2zUp9y174XW+MX1S3zojMtuJntd
2S766gG+j+6U9b/z9Usu+Vr4zFkcfJsqp7t+U3lXcn3RCiMxvzfqVzMQu54Y1mfatoFHe3aeKMo2
bxUv3bh+97joxSN/y37l5DS+78RHhR4jAw3hfGCsEysv2fq4u1GidLBGiBTfHtidFAitHVibxUuU
HD0Ltw5L97Hkyqjehi/0lDZ0sBPj0r0UobXPzR9hw2hqx5alsDqy6kkMrjjC61xorU4zDOTJzRIZ
1YYg1xc5WAtZIX+XqjsZXaBb+jp1rA4a2Se8vPJRQ/ucLGLX06Bxe4JcacMBvMtq7bunu7o9je87
8VGht8hAQzg3ZO9dqo4PPfiWlHWiTHmGdPNr87hbe2Biz1zf+8L6Adgh1kLcv7kZ0BzE2DM3wWa/
hjsxMxbV+oI/1szTWaVlHewQm1QQWuNzc6qPT7448LZju/ju8qkCFLj+slo2DX14qaU6jfXPUOYr
XrZ10pnB15tBMvYPcWmjMkvYBbqmr1PHx0d3QpBSfGsNM1r9zF36MFRJd0zErqeDV3tMWzb7njzg
21Tzslr97mksS5t+dQrfd+KjQs85nQgtoR85V3s0DtZKau2gHEdLOQbUmcRxrxyLWqrE5uMWz2rG
i7rldV6z94JU4o9DpTU73tQR96+Uo64exEr3inKMtocOavW7VtZj/X4bTzt6Um3LyuW1Usj5vsoP
nL7QQp3lvKGSUiFPv8nUlnPg8JEav23kS1X31ipyh0KV8ish5/WyN/TTGn31Yo+GJXgpVLOPye0z
V98+h/zH/ay9w3Y9TZyff6/PkftnrH7fnS26s62hmna5luX5/VuvF3dZOvCr0/i+e4d9VPZonA0G
SqVSCeFc8uDBA96+fctXX33FN99802txhHPMgwcP2Nzc7C8/NNZZP7jLXXtFYyfGwKQitHbARjen
9hoLwXr4EvdSNZdVpm/CDPrSdn1P/9v1NOmGDxnrYS7dS6EyHvtphDbpfx+1/eb777/n+fPnvRZH
8EBCpwRBEBzsxMzjFI2DK1WbwHsjzBfcC2YqMcwlM5471NbuV6HvELsK/Y74qNAlZKAhCMK7TdVz
UGr/wriGBatJPnl5qWqTsXnCjXO/zilw/Saq9vkeT26e4oqKcCKIXbvMDl9YU++NT5k7ZTr57ukX
xEeFLvFerwUQBEE4UXx32SjdbTn59cUSpcXWr58s1tGqp12tcMKIXbtLn+qzze+e/qJPdSqcOWSP
xjnG3qNxeHjIyMhIr8URzjEDAwP827/9m/jhGURsJxwX8SGhEwYGBvjyyy9lj0afIysaAv/30SO2
/9t/67UYgiAIgiAILfHzoaFeiyC0gAw0BJ7/6Ec8z7Z1wLYgCIIgCELPePCrX8Hvf99rMYQmyGZw
QRAEQRAEQRC6jgw0BEEQBEEQBEHoOjLQEATh3LEODFh/XodhOtP08ymU3SSM2e6TztMOMetPEARB
OHvIQEMQhHPHXSBjvX7ikWbT+l8C3rWT49067jGg9iHArZTTbp52WbT+uokMXARBEE4H2QwuCMK5
5BKwBtwDfkH1YGIHuNMLoU4Br9WHRaDdIyE6ydNrTnL1RRAEQahGVjQEQTi3XAEU8EXN9SfARy7p
w5ihVGHHNTv8yr5uuKQBcxbdDsVydnbt0KOBmr8dx323EC87n7PcZvWtYw6slEv6Zu1sdL1Zva3I
W9v+cE2+45Rh49V+L5md2HXbOoi53HNeb1SmU0ZnWJ6bfg2P9F7XBUEQ+gkZaAiCcK75BWbH09mB
u+mSbh1zlaMEBKl0eAE+s64DfOJ4vePIi3U9g9nZ3aESenTPulcCQpY81608n2OuvNjvqcl301Hf
es3/2vruWmUrR55a7ll12vftNrq1v5ZW2ukmb8xqYwk4sK5tUB2a1WkZTtza7yWzE2fdn1vlK5e2
lTBXeRqVGbaulage5Hrp9wtHertdja4LgiD0EzLQEAThXOOjusP3BdWdeptNzA7jgJX+W8xOZQj4
1JHu07qcZt4PrdfXrTwvHfnXHGk/p3rg8wVmB9mJM58ta6iF+lphjUoY2adUQqPc2l9LK+10k/dD
3Fl0pOu0jGa0oitn3T4qPvMEdxt6lWk4rtnlLjryuOn3JjCJOUCx6250XRAEoZ+QgYYgCOeem1Rm
qBt1WO0ZZHvmulXa2TDtw+y0foHZMe2kA31SG7Sbtb/Teu9idrQHMPfOZBon72oZx9GVl20aldno
npt+r1NZ5XCG0HldFwRB6CdkoCEIwrnEGW5izzpPUlk9OKC6U3gHM0TKpp2TixTmbLVNCvc9IDZ2
iM+lJum6VZ8Xn1FZoWml/Z3WG6MSrlXCfUXppMpQtC6zcxVHNUjnVaYP08+cYWe2Hr30a6ddxByI
vGxyXRAEoa8oCeeWeDxeUkqVfur3l0ogf/J3bv7WKPdHS8q6lnG8dt4HSgfW9ZDjmjOdqnl9UJOu
Nm/GpZ4M1TI65Wkkf6bmvZusmZpya2VzK9dNJq/2O9O20s5aeWvrrdWp/b6TMmrb6NZ+L115tb0V
GzYq00vHtfot1bS7levyJ3/n5S/+q1+VfvrTn5aCwWCvu1NCAwZKpVKp3cGJ8G7w4MED3r59y1fJ
JN/k870WRxAEB+tUZsHfdXaoX4EIU7+Z+6TLaEQYc9Whdr+MIAi94cGvfsXm73/P999/z/Pnz3st
juCBhE4JgiD0Id9yPgYZBtUhQ/a14CmXIQiCIHQfeWCfIAhCn7CDuU8E8Dx+9l3Dh7lS4HyuRYj2
ViK6UUYj7CNsU5jPXulkD4kgCMJ5RFY0BEEQ+gT7JKHzMsiwuQtVGw46GSB0owwvFh3lyiBDEASh
dWRFQ+D6X/0VMaV6LYYgCIIgCEJLDPzwQ69FEFpABhoCuR//mO3USZ28LwjNuXbtGvv7+/z7v/97
r0UR2kRsJxwX8SGhE65du9ZrEYQWkIGGwHfffUcoFGqeUBBOkD/84Q/ih2cUsZ1wXMSHhE6Q06b6
H9mjIQiCIAiCIAhC15GBhiAIgiAIgiAIXUdCpwRBEKow0NUeY0orP8fC0BV7Ywqt9sEWxSzJpTz+
+QjBwVOUL/ma8UiQU6uyI4pkk0ukXJ4F6g9F8edXyve0qFO37vn8oXkiXVZyMZtkqSIEamwPHQ3N
Z6CrFYi62LzzykguHTHp8CuXRI62+wk19Cvx007oP5s75DqaRDWsXGwunD1kRUMQBKGMga4yDM07
OgbFLBndI+1SCpd+dItV6ehGJxl9aLfgsdLpKPupMUgwoohq5iBBKWX+zYcY4QOCkXlC/tpBhke+
qEY+teSurw71aOiKpdQIUVuusT3Uio7Z2V9Bb7/IRrW15CvF7FO4ZcoT1fKkHmcpepUnfto2/Whz
qBn8NCpPbC6cQWSgIQiCYGHoKxCtngE09sGvuaX2oc2H8HdUU5FsRu8oJwCDQSJRWOmsN9BbBoNo
7U6x+sYJ+UHfq21vh3osZsnofkLOTptPQ0U1zIFOFK39UhvQmq8MBrWy7/nGQ/jzR7xxSSd+2gF9
anOAwWCE+VDjlGJz4awioVOCIAhgdkQOQ9zSHNcMnb0LGmNHKY4a5X2TJWnNIJohPm/QlT1DqhFV
Gr6incaP358nnwfyCl2LmuESxdoyBi2xHLOd/hDzdliCb5xQ5jHZ4mmGRhwTI0v2g2D78hb3yefB
7//AebESZuTUI4ZD9+7hR8X9PHlGmKyVw6fVdDYddfhDzEcu8FStoJfLteuy3mOHq0xytGTJUJbL
UaptU6c93fAP8UHtNfHTjjgzNncVXmwunF1koCEIgoDVERmZJFK5Qvb1GFoQjL1GOfOkMn7mlSJS
zJJcWkK/oNDmQxwupRiJWjOog0FuhY7wX9bKnZVKPHiR7OM8/nlFZNBAV4/JXjY7NU9TI0RVBB9Q
NJyzhINcGMmz9wb6PSA6n1pCpcDs+Ac7yIfZeavqtZiz0Ee1ekya75XPDJVZWdK5UBMj/+YoD35/
fSe+Bn3lMaF5hbpldib3ixHLrnZQis/xvhKukl8yw3M0Q0etZMiOR3C2evBCs/0XwJsj8I/XmVb8
tDPOhM09EJsLZxkZaAiCIFj4hxzdEGMfLrfSKfYTumXN5A0GmdRSZF4XwRfkVijPUiZrbY40eHpk
dg7qKO6Tz+fJ5xXlfvUbYNDHmLbCitKtmcTqWdIPhvwcvi6Cr79/zcuzoEaWbCf5WqW4Tz7vx3/L
fOsbD+HX89Sq6IMhPxw2L04rh6pcYIQ8R2/Au6da6YD67fCcD4bwV1V0SCapyI9EUVqjmg30zBC3
Iu5tFz9tn/63eWPE5sJZRQYagiAILhh7KVJ6qvzjiq44bLPjOxi8RSi/xFMjyPjrPYbGtQaprTCG
mqs+TaE0A10toVLuac4MviCtr2d0wJsjM7yjSbLBCyOQz7NfrAnjKmbR9y+7d7i6xMiIn/zha4r4
PCd7DX2PsYjW0mSw+Glr9LvN20FsLpwlZDO4IAiCRf6osvXWp6nySUlRzTwdqekPeTFLRteYLKcb
JDipoa8olvJDXPbKPngZv18nk7XOGCqf+mKQzRYBH5pSRLVDXjuOIXpzlGfkwjs0Y9jxaTcWvjE0
8qSeWoW8OSLv99fr3aeZpzotOU/HMdAfw3gzGw86ZrrtOloWcIQxLUJ0JMXjrPt5UsVskr0xq8NW
zKK7pBM/7YA+tnkriM2Fs8pfK6VUr4UQesP29jalUok//elP/OQnP+m1OMI5p9d++Df/tcThH/+T
vwuM8Dc19/7jpc7/+VuNK+/XZaJ0+M+k/llH13X0nRH+oXZW7/0rjKHz/v+I8N/L+d/nPXQ2N3V0
xtCuDDPyd0PkvviCDV1Hf/9n/K+r7wP/Qf6flvmNbpb/zZV/IFIupMhf/vcbfhQMMFIr8Cnjbrsi
2eQ/8tt/hUJ+x2rn+4575obbl99YutN19G+u8LO//zF/8cxXS60efVwZH+Jw/bemHr+5QnTufzLs
lvOKxhi/YeU3dv3v8zMrraF/xuZLePnNIUPjAf7fjv0exrSr/K1dp66j/+eP8BfypHcOOXyTJl8o
kN+BMe3H/OWrL0gXCuTfAHuP+NfCS75hjL8fe5+N366j6zCmXcFunaErlh8VKjrZgYlb16rs+676
6Wl8/vvR5gAYOv/423+Fl9+4+vu7avNu8Oc//5kffviBX/7ylydbkdAxA6VSqdRrIYTe8ODBA96+
fcvm5iZ37tzptTjCOacf/NDz4VfHokhW3+ey1uWHWBk6am+syQO+Tod+sN154l30U/GhxryLNu8G
X331Fd9//z3Pnz8/8bqEzpDQKUEQBAufFoWVJMeIcKjHeMrRWJd/yItZkisQ7YNBhnD6iJ+eP8Tm
wllFBhqCIAhlfGjqFjw+/pNtDd2Ko94b6/IspIG+dMSkbLw8x4ifnj/E5sLZRE6dEgRBqGKQYEQ7
dinmiSzHLsatZDQlP+OC+On5Q2wunD1kRUMQhL7g0qVLvRZB6BCxnXBcxIcE4d1EVjQEQegL3nvv
PVKpVPOEQl/x8ccfi+2EYyE+JHTCxx9/3GsRhBaQgYYgCH3B/v4+Dx8+7LUYQptsb2/z9ddfi+2E
jhEfEjphe3u71yIILSChU4IgCIIgCIIgdB0ZaAiCIAiCIAiC0HVkoCEIglBFjoSWIOe8ktBI5FyS
FrZY1BbZKpyWbAA5EotbnGqVHVFga1FD0+r/FrdyVfeqdeueb/EElFzYWqzUkchBLmHJkiNRJ9ex
K2Oxxq8ay9TMr8RPO6H/bO70d7G58O4hAw1BEIQyORJaEt/GDAH7UmGL5KpH2nCcdMdVJTrs1ASY
uQ8PW+i09pZhpmM6y7MwtbCBruvm38YCo4wwHdtgYQpml3VmAk3yLc+Sjofd9dWhHnMJjXB8lGVb
roldtLlVzI7fHK4m75gWfaWwxSPuo+s6GwsQf+TVMPHTTuhHmxe2HsF9U57l2TTxh14ddbG5cDaR
gYYgCIJFLjEHyzGmhx3XnsGNWbfUAWY2FpjqqKYCW+49hNYYnia2DHNdnX49JYanmXEquBUCt1mY
gtXd2vZ2qMfCFsnVKRacnbbADPryLOZAZxlXk3dMi77i0M3wxVGmfCOuycRPO6BPbT48PVO2Y+D2
AlNpg0OXdGJz4awiAw1BEAQwOyIvFrjtnF3PJdi9OM3FZnkPt1isCvExwzDMcAhrdq9gp1lkcTFM
PA2rc1b4RtX96jChqlAPZ1hC4DYLL5KnHBpxTHJbnclbeMZ2mpqOd4EtNz1W6d49dKTwbJs0o1ys
He8EZmpWVxxhLYtbFMpl2+XWvC+HqzhkcOlwlW3qGWZSYOvVBDG3AZnWS6gbAAAgAElEQVT4aUf0
v80tpnzUDS/F5sIZRgYagiAIWB2R0YtU+iFmZ6+6E+JGmngS7lthQcTDJHKVGcXZZWsGdXia+wuz
LGzEiFmzp7PLOvpMwKzr4TY3NnR0fZnR+MNyp+aRI9RjI+LsVgxzcTSN4Tb92Wek42GzMzLX3nGU
5XzhOOnZ5ZqOd2UWukqPi3Ow7AhFCdeHcRwaafcOXQ2rcw/NsJaNBabS2zwr1M4UO9/b4Spp4uFd
JqyQL1brO1zDF2+wsKGjx6apH0rkSGhh4vE5130p4qed0d82LwsJN67W3RebC2cZGWgIgiBYVM2Y
557B1aa/5MAUC/etzsPwNJFZePGqYP14T7GatGf6cjwyJnCNGio8YzudJh7W0LQ5VrF/pANMzK4y
Z80kDgcCVZ2QEd+UWVefU9lrcaOzfLrd6WlC4Rnb6SlsMwZuLzDFC2pVNOJrLahk1g5VGb7IKM06
TnYHzhGeM+KrCV95QXJRQ9u96O4Hdjm6zsbCFOn4I9dYd/HT9ulvmwPkSCR93PdIJDYXzioy0BAE
QXAhtxu3flw15lbNUIJ2Tz4anr7PAnEe5aCwtYvvdqPOwWxlk6pe2SAdmLFnEsOVUIezSmC6SWfr
mBwaLW2AHb44CultntWas7BF4oTjPUZHp+DFq6Yn8wxPR1raMyB+2hr9bvNcYpeJRqsdzrRic+EM
IQMNQRAEi7Rj+tL8EbVDcMxQAteYeSeFLZKrs0TK6YaZjsyyOqcR3vZx1Sv78FVuTK2StDsLjiM3
t7YK2LPcy7PVs/OHRprRuqDzM0zHp91YBCaYJV05renQID11o17vgRmXsKociYdwu5mNa2e6Wxzc
mIwyMRNjeTTOw2Ydw9wuq7MTuHX/xE87oI9tXthaZHfCWhHxGPiIzYWzynu9FkAQBKEfGL56g6nt
VxQItDSraGXixpQ5uxgHzJm/merOYWCG5dlVdiecs5UBJmZhbk5jdXYZfSbA9P0FtsNhtDgwu4w+
Y6Y04tY1rOvlQgq8ejGF73anLT5pKpu1IYxmLDvCnxz30prjWNFZlvVG+Wqp1+PMxgIvwnNoq3Z5
7rPEgRmdZTTmNLt203bDmCf8rALMLeLbiHHxkf0+wYQ+U6kTYGqKKdLEw4tsT6VJA+lwgov6bV49
NI8YTT9MYLBqvk5MoE/Mkp4Lo8Wr/aWwtUg4bnVhZ93bLX7aOf1o81zCXJUA+3MwxcLGdJXcYnPh
LDNQKpVKvRZC6A0PHjzg7du3bG5ucufOnbbyFrNJllJ5840WRY3toaOh+Qx0tQJRhebrkqDFLMml
IyaVRreKPD4n0M5yuXuMWW0tZpMsHU2i6iopkk0ukcqDVitDMUtyKY9/PkJwsJuyNZE7+ZrxSJBO
q/zyyy/59a9/3VWp2iWX0NidqH2uw3EpsJV4xtWZ1sIiWiaXQNudaG3vwgmyvb3N5uZmz213nnjX
/FR8qDnvms27wfb2Nr/73e/4/vvvef78+YnWJXSOhE4JbWPoiqXUCFGlUEqhxvZQKzpm53cFvbu1
oS+lyHe1zA4xdHTDfuNDUycxyMgwNO8YZKTcWm6gqyVSI1FUnQzH1FdVG9vBh3YLHiudjrL3CYGZ
ZZjr8tN0c48wJrr8Q17YYnEOlns8yBB6g/jp+UNsLpxVZKAhtEcxS0b3E5p3rC74NFRUAwYJRqJo
Xa3QhzYfwt/VMjuhSDajn2gNhr4C0coqxGAwwnyotuXmYO4wNO+yygHH09cx2zgYJBKFlc5GKn1C
gBn9Pjw8/sbGXMI6X363lWMo2yqZRNggUhsGIZwjxE/PH2Jz4WwiezSEtiju58kzwmRtfIxPqxlg
VEJ78IeYj1zgqVpBx09oPkJw0Aw9Kr/HDveZ5GjJWhXRonWd6fIsvz/EfCQIzll/61qtaEWvNMUs
SWv23x+aJ2L38A3dWqGx019m325LXqFrUdT465rwJLs9QLmNOMKYGreLYpbMYYhb1Up0MwD5vMbI
yBJKeZRl86a2fW8cMmpElYavrAM/fn+evLONms9TR5469Y0TyjwmWzzNsK1uM8x0bObYpQRm9HIs
c3cJMKPLz7ggfnr+EJsLZw8ZaAht8eYoD34/HzRJp688JjSvULfMjvZ+MYI2H+JwyQ7q8TneV8J9
8ktmSJZm6KiVDNnxCEFHuYMXHJ14DPTUCFEVMUONDLeZdIOnrmmKZB/n8c8rIoMGunpM9rI14FmB
qFL4rMHDU0OhRaIclfdkGOjK6pzbZZmZUD4ztGxlSeeCGmOvUbscHfHifp78yCSRJnot7ufJayNM
jim08SzJpRX0MbcQrjypjJ95pYgUsySXltAvKEvnKUai1orUYJBboSP8l7Xy4K+y78RDR4NeOgUY
5MJInr030O5mjUAggK7r7WUS+gKxnXBcxIcE4d1EBhpCW3ww5IcWnvaplUOALjBCnqM34D06qQw6
/HZI1gdD+KsqOiSTVORHoiitkm9MW2FF6dZsu3sokWua4j75fJ58XpGyZX4Dxdd5CN2ywsLMfRiN
5K2U5cd/y7o7HsKv53ld1FpoVwX/ULPhm51uHJ8PIMikliLzugi+2l69n9Ata5Vh0JkuyK1QnqVM
1tq4bfD0aAwtWFeNp44YbKz3D4b8HLrK1BjDMPjjH//YVh6h91y7dk1sJxwL8SGhE65du9ZrEYQW
kIGG0BaDF0Ygn2e/GKwOjSlm0fcvu3dYu8TIiJ/84WuK+MqT5T5NoTRzc7RKWeFANfm809SnL76G
/FGb0/FvjszQos6b1hZty1fDYPAWofwST40g46/3GBrXGqRuV6ed89133xEKhY5ZitAL/vCHP4jt
hGMhPiR0gpw21f/IZnChPXwaUS1Pasl5upCB/hjGmwXlDzpWN6DcQW+NEca0CNGRFI+zxXK92WwR
e+Uhqh3yulibzyPN4GX8fp2MXZZ12tLgZT9+PUO5imIWPVtXaDW+MTTypJ4alXb5/VxucyyQLyvG
m2r5DPZ0P/5mFRWzZHSNybJ9BglOaugriqX8kLecHjpqpvc3R3lGLpzZDRqCIAiCIHQJWdEQ2san
KaIoVpRuXTFntAcxT07SAVaSDM1HuPDUfq8zpjTGNFhZUeY1vx8/eVJLSfL+vLWXQeeCGuf1Y2tv
w2OdI3TztT6GGtPIr9iz6GMcpZZQ5bieKMqlf+ueZpDgrRD5JeueZodkBYlEj1BLdriQRlQFgcGK
7FqI0KEtX5bLkaAVIrWCqRIzzyBFsnY76tpl5it3/S/78eerV2swdGvDdR6FtTl7sFo+LarqN10P
XsbvT5GqakPNioNPI6rp7I05N8/7HG0063PXkZdOAYq8PvQzNF5vB0EQBEEQzhfywL5zzHEe2Cd0
H0NX7I11+9kcXhTJ6vtc1jp/wJ4rho7aG/M+CasB/eOH1Q9NhAa2OaMPR+w27rZznDxXgz8UxZ9f
ofLMT6du3fNVnQzXJfr5waPNvw/eLT89rc9/P9q8IpPzsBM33i2bd4OvvvpKHtjX50jolCD0CT4t
CitJmkVqdQXjKUdjXf4xKFondp3OSOmEqH5oImCFnnmklYcjNmCQYEQR1cxBgrIf8DkfYoQPCEbm
Cfldnmzvli+qkU8tueurQz329YNHPX3OUZ74adv0pc2LWZ5yC6UU8yEqIbhu5YnNhTOIDDQEoW/w
oalb8PjkvqQN3fqB3Rvr/lPN25it7VdqH5oIYOyDX3NLLQ9H7IjBIFq7U6y+cUJ+0Pdq29uhHvv8
waPePmfdFz9tn361uePzMHhhxPP0QbG5cFaRPRqC0FcMEoxoJ1a6eVrUiZSMps7yEAP3hyYaOnsX
NMaOUhw1yisPR2wNI0v2g2D78hb3yefB73d2whwhVk49ej08s6q4/nrwaJUYzXxO/LQj+trmdr2v
x9zDA8XmwhlGBhqCIAi4PTTR/OHXgmDsNcp59h6OeNrky4cH+AnNt34Gdr720IGqXos5C31Uq0fX
h2dWr7T114NHnTT3OfHTzuhfm4NzcJynfi+S2Fw4y0jolCAIgkVV2IKxD5dbWaWpfTgi5gMLB4Pc
CvnRM1nMbTfmwxFdOxrWwxFTSwqlVtDLx0D7GNN0VpQimS0y6PNV/W6XH47Y51T2WrQXzFG1t6OV
WD/r4Zm2GX3jIfzUH3v9wVBrcpQfPFp7NLcrdriKIzzng6Ga8BXzwaNq74K7H7Toc+Kn7dO3NrfL
UYr5kJ986qlr6KzYXDiryIqGIAiCC8ZeipSeKj8VHV1x2ObJR/36cMSe4Qtygs/0bPnhmf324FGb
TnxO/LQ1+tXmVTIGJ9FSDZcoALG5cLaQFQ1BEAQL50MTfZoqz6ZHNfN0pKY/5PJwxOPR8Wk3Fq0+
PLOvHjzqFKs1nxM/7YA+tXkVxh66NubaWRebC2eVv1ZKqV4LIfSG7e1tSqUSf/rTn/jJT37Sa3GE
c06v/fBv/muJwz/+J38XGOFvau79x0ud//O3Glfer8tE6fCfSf2zjq7r6Dsj/EPtrN77VxhD5/3/
EeG/l/O/z3vobG7q6IyhXRlm5O+GyH3xBRu6jv7+z/hfV98H/oP8Py3zG90s/5sr/0CkXEiRv/zv
N/woGGCkVuBTxt12RbLJf+S3/wqF/I7Vzvcd98wNty+/sXSn6+jfXOFnf/9j/uKZr5ZaPfq4Mj7E
4fpvTT1+c4Xo3P9k2C3nFY0xfsPKb+z63+dnVlpD/4zNl/Dym0OGxgP8vx37PYxpV/lbu05dR//P
H+Ev5EnvHHL4Jk2+UCC/A2Paj/nLV1+QLhTIvwH2HvGvhZd8wxh/P/Y+G79dR9dhTLuCW+u8fO5d
9dPT+Pz3o82L2ST/+E8bZrnv/8w1RPBdtXk3+POf/8wPP/zAL3/5y5OtSOgYeWDfOUYe2Cf0E/3g
hyfz0MT+ezhit+kH250n3kU/FR9qzLto824gD+zrfyR0ShAEweJEHpooD0cUuoz46flDbC6cVWSg
IQiCUKZ7D02UhyMKJ4f46flDbC6cTeTUKUEQhCq689BEeTiicLKIn54/xObC2UNWNARB6AsuXbrU
axGEDhHbCcdFfEgQ3k1kRUMQhL7gvffeI5VKNU8o9BUff/yx2E44FuJDQid8/PHHvRZBaAEZaAiC
0Bfs7+/z8OHDXoshtMn29jZff/212E7oGPEhoRO2t7d7LYLQAhI6JQiCIAiCIAhC15GBhiAIgiAI
giAIXUcGGoIgCFXkSGgJcs4rCY1EziVpYYtFbZGtwmnJBpAjsbjFqVbZhIGB79la1NC0+r/FrVzV
vWo9FlzzLZ6uQptzLDvnSNhtq3WiqnLNdK5+1nZ94r9eFLYWK76WyEEuYemmW/qvqozFGls0wtNO
lRRiW+HMIQMNQRCEMjkSWhLfxgwB+1Jhi+SqR9pwnHTHVSU67NQEmLkPD9vowJw0pdJ/YTqmszwL
Uwsb6Lpu/m0sMMoI07ENFqZgdllnJuDMOVyfb3mWdDzsrpuOdXYcjmPnAluLSXwbpi6mVpOOjl9t
uQFm9Fr9uInTSAfiv43IJTTC8VGWbf+c2EWbW8W00xyuauq8tvb062knR3liW+EMIgMNQRAEi1xi
DpZjTA87rj2DG7NuqQPMbCww1VFNBbYa9yoaMzxNbBnmTr/X3R7D08w4ldkKgdssTMHqbm3bjqmz
jjmGnQvP2LZ7e8PTxHSnb3VSbmMdiP82oLBFcnWKBWdHPTCDvjyLOeBdxlVNHdOefr3tZN0X2wpn
FBloCIIggNkRebHAbeeMci7B7sVpLjbLe7jFYlXYjyNcxp7dK9hpFllcDBNPw+qcI5ymUFuGfdkR
6uEMSwjcZuFF8pRDI9ogt9WZbFbnfMo34rzIlpvOqvTcIEzETbfl0BKv0CZHWFfT2WEXOQpbLIbj
pEkTD7uETbnKWGlDvd29dFDJL/7rTeHZNmlGuVg77g3M1KwiOey+uEWhrIvqELcqOzf0I6tUWw9u
oUXN7CS2Fc4wMtAQBEHA6oiMXqTSDymw9WqieSgLaeJJuG+FChEPk8hVZhRnl60Z1OFp7i/MsrAR
I2bNns4u6+gzAbOuh9vc2NDR9WVG4w/LnZpHjlCPjYizWzHMxdE0xmFX1XBs0vGw2fGYa+/oyXK+
cJz07DKxqpWQyoxzlc4W52DZ1M3ybJp42C1kw023dmhJmnh4lwkrZAtHaFMuESY+ulwO5/LGQ47h
aWIbC0wxxcKGLbMXtaEubnZ304FDCvHfhhwaaZjyMdIk3ercQ7hvhbqlt3lWqF0dcL5v7kc2wxdv
mH4Qm6Z6rNPcTmJb4SwjAw1BEASLqln03DO42vSXHJhi4b7VeRieJjILL14VrB/vKVaT9kxfjkfG
BK6RRIVnbKetmW9tjlXsH+kAE7OrzFkzicOBQFUnZcQ3ZdbVR1T2WtzoLJ/erFNuUXjGdnoK22SB
2wtM8YI6dbjq1u5sOUJpRnyOzmSO3dUpFuwp5Kp7HcrRkPrObCO7eyH+682Ir7VAolk7PGn4IqM0
6yw38yOAFyQXNbTdi+66a9FOYlvhrCIDDUEQBBdyu3Hrx1VjbtUMJWj3NKTh6fssEOdRDgpbu/hu
N+oczFY2qTo2BQdm7JnEcCXU4SwQmHbvuHSLQ6ONza7uuvWk8IoXHp3MXMJxQlYi15YcdXkbcFy7
i/9WM3xxFNLbPKsbiG6ROOEYn9HRKXjxyvU0pk7sJLYVzhIy0BAEQbBIO3qW5o+oHQ5jhhLEmvWc
C1skV2eJlNMNMx2ZZXVOI7zt46pX9uGr3JhaJVmJ2ykfubm1VcA+kWh5tnqm/NBIM1oXdH5GOO4J
UoEJZkkTf2QVcmiQnrpRr2NP3TZg+Co3pnDM+DqqdfiFPhNoXQ63vJ40trsX4r8NCMy4hNflSDyE
2830Uru60dYgd5SJmRjLo3EeugwGWrWT2FY4q7zXawEEQRD6geGrN5jafkWB1sJUrEzcmDJnF+OA
OfPnONUGrA7OKrsTztjsABOzMDensTq7jD4TYPr+AtvhMFocmF1GnzFTGnHrGtb1ciEFXr2Ywne7
0xZ3D/s5GvE0QBjNWHZ0pCubmElrjiNEZ1nWHffq8tVSr7OZjQVehOfQVu3yauPfAYZddFtga9Hc
E5EOJ7io3+bVQ+v9wy2uxqatPHHCWhymppjC7KRerLUvXnJU9l2kwxpG3dG+BbbsOsOLbE+lHfVf
9LB7vQ7KrTzL/vvvrQp8PAIzOstozGm2F5rtHcY81WkVYG4R30aMi4/s9wkm9JlKe8HhDw671flR
AoNV83ViAn1ilvRcGC3uouMmnGnbCueegVKpVOq1EEJvePDgAW/fvmVzc5M7d+70WhzhnPPll1/y
61//uqcy5BIauxMthNa0RYGtxDOuzrh1go9BLoG2O9HafoYTZHt7m83NzZ7bTji7/is+1JyzatuT
ZHt7m9/97nd8//33PH/+/ETrEjpHQqcEQRAsAjPLMNflp+nmHmFMdPmHvLDF4hws93iQIfQX4r/v
LmJb4awiAw1BEIQyAWb0+/Dw+Bsbyxt/d1s5hrKtkkmEDSJthl8I5wHx33cXsa1wNpE9GoIgCFUM
Mx2bOXYpgRm9HMvcXQLM6PIzLngh/vvuIrYVzh4y0BC4dOlSr0UQBAKBALqu91oMoQPEdsJxER8S
hHcTGWgIvPfee6RSqV6LIZxjPv74YwzD4I9//GOvRRHa5Nq1a2I74Vhcu3aN3/72t70WQziDfPXV
V70WQWiCDDQE9vf3efjwYa/FEM4x29vbfPfdd4RCoV6LInTAH/7wB7GdIAiCUIdsBhcEQRAEQRAE
oevIQEMQBEEQBEEQhK4jAw2h/FRfTav+W2zpwO4cCU0jcdzz9s40pg5q9actblHWYGGLRe0YZ6AX
tljUWj3WMEeiJm0u4WGj48rVETkSTt30HQa60jGcV3SFbrgkLWZJqiTZ4mnJBmCgJ7OcapVtUSSb
VChV/Zc8XSUdn2PZ1kC3217rOFXlmulcfavt+sRnBUHoP2SgIVAq/RemYzrLszC1sIGu6+jLs6Tj
4RYGEAFm9BafVppLHH9A0o0yul5/gBl9g4UpmF3WTf3pGywQJ5zIYZ4tHifdeaVt5M+R0JL4Nhzn
mBe2SK4et1y37J3aIsDMfXjY8sDpNDHQVYaheQ2ffamYJaN7pF1Kke+4Kr3DDqYP7RY8rulY9g+D
BCOKqAb+0LzZ2Y5q5FNLlfa20/aO9XQcjmPbItlkhqF5hZoP4dczjk59bbk+NKXQfK4FOcRppAPx
WUEQ+hcZaAjuBG6zMAWru93qChbYcu/tnnIZp1X/MNP3F5h68YoCAWY2FpjquN7W8+cSc7AcY9rx
qNfcM7gxe7xy6zmmLYaniS3DXJ8thRn6CkQjBAcd1/bBr7ml9qHNh/B3VFORbEbvKCcAg0EiUVg5
/R54Z/jGCflB3zNor+3H1FPHHMO2xX3ydk9+MEhEOf2pk3Ib60B8VhCEfkYGGoI7hWdsp2HKN2Jd
cIYHOUJtnKE35deOtIkcUGBrMUw8Datz9jU7fU2Yll3GVgKtKiTLowwvuara4iWX875TjkI5lCyR
M/MsbuU86vcm9yhOevQiw+53veXOJdzDr8riLrrfK2yRfLHA7UB1WbsXp7nYTNjDWh045bNWHsp6
WmSxVXs65a2VOXCbhRfJUw7bakAxS+YwxLhzdtnQ2bsQ5EKzvG+yJKtChByhM/YsbtFOkySZXCKV
B33FEVpTrC3DvpyshCA5w09844QOM6ccAtMhVufbPwTZ2rbboTxZHVUVRlSsTwtU67ZBCJCbPsth
Q16hTY6wr6Yz/y5yFLMkl1LkyZNacgmbcpWx0oZ6W3vpoJJffFYQhH5GjrcVqkjHw2hx683sMvr0
MGbHew6WdfSAGe8/F05wUZ9gNxwnzRQ3HGE46fAoy7rOTC6BNpdk63aM6dgyhmaWYYZZFdh6uM2N
DZ3YcI6E9pCtqxEMuwwjgl716NJh9zJc5XKEDTWTa9hNDlveJL6REVhYZmY6ANO19dezOqdRnuef
XUZ3TdhA7sIW5i2dADkS2hyPctPMjFRyD1+8wcJG9aoFQOHZNunRCDFnPa8mmJmG3G5DqxNP3mBD
14kVtlgMh0lc1JnZWOBFOM7osqXP4WnuLxjcuDrD9LApW2N7xpgezvEoPsqyHiMAFHLOAdowF0fT
7B7C/9dIvFOiuJ8nPzJJpHKF7OsxtCAYe41y5kll/MwrRaSYJbm0hH5Boc2HOFxKMRK1QloGg9wK
HeG/rBEcNNDVCkTtsJki2cd5/POKyKCBrh6TvRwhOGjwNDVCVEXwAUXD2dEc5MJInr03wGC9VP1A
PrWEsh/Ro0VRQR8EoxyV226gK7NDnz+aRCnNkXuQYMSZFsyBgPle+cx9CCtLOheUI2wIK12dPic5
sgYP+aURokqhGTpqJUN23FwRMPQlUiNRVMQHho5aOfRombcckXlILuXxz1evMtRjhzH5rRUGN1u7
6cAhhfisIAh9jqxoCFWU92joeqWTXHjGdnoKe3EjcHuBKV7wquAMvbFfT7Fg7w8Y8XmH5RSesZ1O
Ew9raNocq6QxDh1l3PboydeV4SaXM1ETuVzlsPPdYDv8EK62sgHFpLJHQ2eZucpqQItyF55tw8Jt
a6BUu//lBclFDW33Yt0gw6ayAoUZM9WS7FMs3J82V16Gp4nMwotXBWtgMcVq0l6FyPHImHCvu4Ee
J2ZXmbNWOYYDgaoVnhHflFlXn+Af+qDyxtiHy82C5wH8hG4FzX7TYJBJDQ5fF61Omh89Y8/oGjw9
GnPvfBb3yeetWXC1gk6eozcAPsY0nRVrxnjQ56vqn30w5Dfr6lPKezSUQrluRLBDefyExlvQdXGf
fN6PbSbfeAg/h9SpwFWfjrrs/QwfDDnCiAz2dIccVfc6lKMhtWFMjW3thfisIAj9jKxoCM05NEgD
N7pe8CzLVasP0NZRRF2Ty0UOgENgKs32swLTXj37BgRuLzC1Gmc3N0PA0f9vJnfaOASPgKvR0SnS
1r6PZhLlduPEV+PYC1SsarxY2CDWRluGp++zsB3mUW6a26928d2eaZDaXY+BGR19JkdCC6PFPXTd
hxh7KVJ6CntCHl1xGJon0niauorB4C1C+SWeGkHGX+8xNK41SK0RrZuZB5+mUJqBrpZQKfc054Y3
R+ShxT0GLrpq1L8tvuaQPLjMthu6YkW3i42ixlqXoy7vuHfa49pafFYQhH5DVjSE5gQmmCVN/JE1
N39okJ66wdX2+94Vhq9yY2qVpB2g38kJRt2Qy0uOwhaLuxeJxTa4sf2wo30EuUdmWJlzkaGZ3MNX
bzC1mqzaA5MovxllYibG8michx4CmYMUq5oZx+rKrLna0nSQUdgiuTpLpJxumOnILKtzGuFtn7du
Pe2ZY2urgL06szxbveJ0aKQZvXgcR+oueXNKFrA6S9ZsfFQDLaqad9iKWTK6xmQ53SDBSQ19RbGU
H+KyV/bBy/j9Ohk7eL18uo9BNlvEPp0oqlXPmr85yjNy4RzFoPjG0MiTemqF47w5Iu/31+vVU58N
GLyM349jNt9RrcMXlOZrXQ63vJ40trUX4rOCIPQzsqIhlJ+jEU8DhNGM2r0FAStefw5tFcyZ62mG
KbD10Nr/8DCBwaq1FyLBRf02r8r3trgam2ZiFubmNFatvQvT9xfYDlt7QmaX0WcKbC3GHWXUznwH
6spwl8uJQ0YPuTzlGF0uhwSl06Y8tfWbmPsVVgHSjj0awOyytQ+kpl2ecg9PE1s20MKatRIxy7J+
tZI/MYE+MUt6rn51YPjqDaa2W1vtKDN8lRtTceJV9dXoPTDD8uwquxNO3dbbol6PZkqjdt9PuZAC
r15M4bsN/HurAp8cg5f9+POvKdJayIqVCb8/RWpJWbPILrO3Po2oprM3FnSU62NMg5UVha5FUZqP
4K0Q+SVrT4MWxd6ucFS7z6FcSJHXh36GGsyQ94bKBmZYQh1Fa//knI8AACAASURBVDrYzraHCB3a
+ybc9lrU68ncR7CC0sHUd9DFXoMu+iySTTrrGuf1Y+v94yyXI0ErT4ollQK/Hz95Uh5yuctROT42
v6Q4itbuqyiStetcSpL35x31X/Cwdb0Oyq0UnxUEoc8ZKJVKpV4LIfSGBw8e8PbtW7788kt+/etf
91ocoQvkEhq7Ey0+16RlCmwlnnF1pnYQd0xyCbTdCfSZANvb26RSKe7cudPNGtrG0BV7Yy0816At
imT1fS5rbh3iY2DoqL2xJrPkp8Pm5mbPbXdeeVd8dnFxsZs1CeeEa9eu8f333/P8+fNeiyJ4IKFT
gvAOEZhZhrkuP+k79whjosuDDPt0re6OiI6NT4vCSpefmmw85Wisyx22YpbkCkT7YJAh9BbxWUEQ
+hkZaAjCO0WAGf0+PDz+U7dzCevZF7sTXV4hyZEIG0T6clO4D03dgsfHf4KxoVvx8ntjXZ5tNtCX
jpiUDbYCID4rCEI/I3s0BOGdY5jpWKPToVrDPC2qC+LUl8yM3n9DjAqDBCPasUsxT945djFuJaMp
6a4JTsRnBUHoT2SgIRAIBNB1vddiCOecS5cu9VoEoUPEdoIgCIIbMtAQMAyDP/7xj70WQzjHXLt2
jffee49UKtU8sdBXfPzxx/zLv/xLr8UQBEEQ+hAZaAh89913hEKhXoshnHO+/PJLHj582GsxhDbZ
3t7utQiCIAhCnyKbwQVBEARBEARB6Doy0BAEQRAEQRAEoevIQENoHUM3jz5USbLFIlk9i3l0u4Gu
FPpxz1ZsXDm6so5ePNmKvOt1/iXttmOeD6+OcY59MUtStXo0pYFek9bQPXR/XLk6wkB36qafKWyx
qGloWrPnjuRIaNXHBecSGgm384MLWyw2La/b5EgsbnGqVQqCIAhCC8hAQ2iNYpbkyiGheYVSt+Dx
EqlD+6YPTXX7ybRVlZNNZhiaV6j5EH49czKdZ0N36bD70NQ8IT9oUXugMU+IFEu6gXk+fIp855W2
kd9AVxmG5h1n0RezZPTjluuW3U0XreBDuwWPWx449YocifA2NzZ09I0bbIe9njuSI6El8W04nvlR
2CK56lVmnHTHIiXcBy9NCTBzHx5qx392iiAIgiB0ExloCG0wwoVBMM9snyc0ckrVFvfJ2z3mwSAR
FSHY1UfWAhTJZvQW0w4SvBXCf/iaIj60+RD+juttPb+hr0C0uu3GPvi145VbTzu6cGEwSCQKK6e6
8tQmuV1WZyNMDwPDV7kxtcquSy89l5iD5ZiZzr72DG7MuhUaYGZjgamOBCqw5T56aY3haWLLMNfZ
SEUQBEEQTgQ5dUpojcHL+P0pVtQhofkIwcFBglrQvFfMklzK45+PEHyjo1b0Sj4titJ8Vhpzht0f
mifiOlIw0NUKZm6/WQ+VfPklRcouz6Zc9yRHS1ZeZ5q6eiGbXCKVBy0ahZUVDkNR/PkVUnkgr9Br
63CT9GmK/EiUiPvd+nbYzTUc+vGHmI8EcWqimE2ylMrX3ytmyRyGuKU5q9HZu6AxdpTiqJGwb2p1
8MYhn0ZUafjKevLj9+fNgZ1TFx72K8tb2x7fOKHMY7LFkxgUHp/CqxfAhPVumIujsP2qAAHHiKKw
RfLFAvedDy3MJdi9OMOEEW+8YnO4xaK1ujG1sEFs+pCENoc5lJhlWZ8hULDTTDE1lSadBtIaq7PL
6DMBMwyrqoxhS6xFwnFr3WRqgY3YNMMAgdssJB+yVageGAmCIAhCr5CBhtAi5ioGySVSS4qU3UEt
h+j48QNFxphXGoMY6GqPMc0HFMk+zuOfV0QGDXT1mOzl2g5okWxyBaIK5TP3Haws6VxQGma11kCm
Kk8lPCi/NEJUKTRDR61kyI5HCA561BuJcqQyDH3wAYSiaEEfBKMcKbN+rzGGvqKszjnVg5kqvNvh
K2YxbylTb2qFp0YQ7QOHli/UDEzsUvfz5EcmHQObItnXY2hBMPYa2S1PKuNnXikixSzJpSX0Cwpt
PsThUoqRqBWGNRjkVugI/2WN4KApW0UXXvYzeJoaIaoi+ICi4ex6D3JhJM/eG6APBxoAU77GS3KF
Z9ukRyPEKlfYejXBzDTkdhvlTBNP3mBD14kVtlgMh0lc1JnZWOBFOM7oshWGNTzN/QWDG1dnmB7O
kdDmYFlnJmDV9dAM7YoN50hoD9m6GmN6OMej+CjLeowAUMg5VzCGuTiaZvcQkIGGIAiC0AdI6JTQ
BoMEIwqlomjorCgdoyZEZ9DnYxA7zMfqxBb3yefzpJYUSq2gk+foTU3RxX3yeT9DVqfbNx7CzyGv
G+7FsOv2E7L3LXwwVAkX8qzXhzbvJ7/0GC63vrGkskdDEWUF5bYPoUE7ivt5CI1b+ytq97Uckkkq
1N4FzxUA/5BjRGLstyi7n9Ata5VhMMikBoevi9bAwo+eqWzof3o05l53Az2OaTorSpHMFsu2t/lg
yG/WdYapGozknsHVgHfiSi4W7lurDMPTRGbhxauCNbCYYjVpb9zO8ciYcF99KDxjO50mHtbQtDlW
SWMcAgSYmF1lTtNY3CowHAhUjSlGfFNmXYIgCILQB8iKhtAaxSz6/mW04CD2Bumh5BJ7hobvg5q0
hs4KUVRVP9heAfHgzZEZltN1wT3qfQP48+T3iwQ7iO3xjYfw66n69jdpR/7Ie4p/ZMRP3tr30Uwi
Yy9FSk9Rfo62rjj0DElzZzB4i1B+iadGkPHXewyNaw1Su+vRpymUZqCrJVSqiY37iOGLo6TLU/8F
Xr2A0YnGywC53Tjx1Thx+8KqxgtHSFNL9U7fZ2E7zKPcNLdf7eK7PdMgtRViVXM1MKOjz+RIaGG0
uHsaQRAEQegHZEVDaJnD1GPHaU9vOHLM3Fcw0FcOCY2b3c1isWjt79DJ2JndTjTyjaGRJ/XUuvHm
iLzfz+XjhN141VvMkty7QCQyjz//uKMTrIynZrhYXfsbtGPwsr/6xKxiFr38ZoQxLUJ0JMVjD4Hy
jmUgn+ZYXdHM1Zamg4xiloyuMVlON0hwUkNfUSzlh7x17Wk/g2y2iL06E9WqV6DeHOUZudCncVOB
CWZXk+YxtIVnbLPAbZfeeto4rGSZ0dF18295FmaX9eaDjMIWydVZIuV0w0xHZlmd0whv+7jqld3a
oJ60z8ktn0iVY2urAASY0XWWZ1/gXMA4NNKMXpS4KUEQBKE/kBUNoWVGQpPwWKGsvb9aVJn7IJLW
PonHWRhJmfsYlpQ5227tZQjeCpFfWkKl7Gu1pfusfQMrKB3MGfSgudfDsRn8KOoMNyqSfWzf07mg
xnn9uCLL5UjQpV5L3pFoOSQonzf3UIxpsLJSuxncsbE779ijAWjRSHX7rb0Y7u3AOo3pCGXrBo2o
ulzJr4+hxjTyK/WrA4OX/fjzra12lLE28Keq6qtZcfBpRDWdvTHnpnRfnS687HeUsq5hXa/sXuf1
oZ+h8VaFPW0CzGzcYDGsEWeKhY1Y3baG4as3mNp+RYFA61sehq9yYypOPKxZKx8uKw6BGZZnV9md
mHaUG2BiFubmKpvBp+8vsB0Oo8WB2WV0a/HDiFvXsK6XCynw6sUUvtttqEEQBEEQTpCBUqlU6rUQ
Qm948OABb9++ZXNzkzt37vRaHKEJhq7YG+v280qKZPV9LmvB7u7ZNnTU3ljT07ucfPnll/z617/u
phTHJpfQ2J2wN2h3iwJbiWdcnZnu7p7tXAJtd8I8seoU2d7eZmFh4VTrFARBgP+fvfcLbSPb93y/
PqeH4W5GO2G2bfJQnuQG05cjiVw6MRdi6LgaHwLJw8wmlATJi6/ZejrOS7df22gJBeZJu/eDPU8O
PoKNDbLI7h7OTiAgKLlBhjtOszuRdDiNCe12PeRY3reT0X0YTkjXfagqqVSq0v9/tr4fEJar1p/f
+q2fpPVb67dWAdevX8f79+/x6tWrYYtCPGDoFCFnBEmOAJs9ftK39gKnsz12MqzTtfr3BMeBEVja
AFZ6/KTvwlNocz12MkoZRFeAjQE7GYQQQkgj6GgQcmaQIIs7wLPun7qtqeYej8PZHq+QaFATp5g/
I5vCmxPAkvoQWO/+qduFpAxZliEfzPV4haSAZEhDmJvCCSGEjBjco0HImcKHYFjuuhTjtKiui3Er
GbI4Hy5GlSksxhqdDtUaxmlRPRCnvmQsqXQxCCGEjB50NAhmZmaGLQIhCAQCUFV12GIQQgghpEfQ
0SD4TaGA9NHRsMUgBN9///2wRSAdkE6nmycihJAe8tvJyWGLQFqAjgbBq1/9Cq/y+WGLQQghhBDS
Eo++/BL485+HLQZpAjeDE0IIIYQQQnoOHQ1CCCGEEEJIz6GjQQgZO3YATJiv/RbSdHuc8FkhBKPd
/c7TDjHzRQgh5OxBR4MQMnbcB5Az3z/3SPPE/KsD5+SZIFXcBu4xAO1u6e4kT7tEzVcvoeNCCCGD
gZvBCSFjyQyAbQAPAPwOtc7EPoB7wxBqAHitPkQBtHskRCd5hk0/V18IIYTUwhUNQsjYcgWAAPDY
cf05gE9d0odghFKFbNes8CvruuaSBjBm0a1QLPtg1wo9mnC89m333UK8rHz2cpvVtwPDsRIu6Zu1
s9H1ZvW2Iq+z/SFHvm7KsPBqv5fMdqy6LR3EXO7Zrzcq0y6jPSzPTb+aR3qv64QQMkrQ0SCEjDW/
gzHwtA/gbruk24GxyqEDCKI64AWA35vXAeBz2/t9W16Y13MwBrv7qIYePTDv6QAUU56bZp6vYKy8
WP/Dke+2rb4dx19nfffNsoUtj5MHZp3WfauNbu130ko73eSNmW3UARyb13ZRG5rVaRl23NrvJbMd
e91fmeULl7bpMFZ5GpUZMq/pqHVyvfT72Jbealej64QQMkrQ0SCEjDUSagd8j1E7qLd4AmPAOGGm
/wHGoFIB8IUt3Rd1OY28H5vvb5p5frTl37al/Qq1js9jGANkO/Z8lqxKC/W1wjaqYWRfoBoa5dZ+
J620003ej+FO1Jau0zKa0Yqu7HVLqNrMc7j3oVeZmu2aVW7UlsdNv7cBzMNwUKy6G10nhJBRgo4G
IWTsuY3qDHWjAas1g2zNXLdKOxumJRiD1scwBqadDKD7tUG7Wfs7rfc+jIH2BIy9M7nGyXtaRje6
8uqbRmU2uuem35uornLYQ+i8rhNCyChBR4MQMpbYw02sWed5VFcPjlE7KLwHI0TKop2TiwSM2WqL
NNz3gFhYIT4zTdL1qj4vfo/qCk0r7e+03hiq4Vo63FeU+lWGQOsy21dxRIN0XmVKMOzMHnZm6dFL
v1baKAxH5Mcm1wkhZKTQydgSj8d1IYT+id+v6wBffI3NaxuV8aguzGs523v7fQD6sXldsV2zpxOO
98eOdM68OZd6cqiV0S5PI/lzjv/dZM05ynXK5laum0xe7benbaWdTnmd9Tp1av3fSRnONrq130tX
Xm1vpQ8blemlY6d+dUe7W7nOF1/j8op/+aX+ySef6MFgcNjDKdKACV3X9XadE3I+ePToET58+IBv
Uil8VywOWxxCiI0dVGfBzzv7qF+BCKF+M3e/y2hECMaqg3O/DCFkODz68ks8+fOf8f79e7x69WrY
4hAPGDpFCCEjyA8YDydDQ23IkHUtOOAyCCGE9B4+sI8QQkaEfRj7RAB4Hj973pBgrBTYn2uhoL2V
iF6U0QjrCNs0jGevdLKHhBBCxhGuaBBCyIhgnSQ0Lk6GxX2gZsNBJw5CL8rwImorl04GIYS0Dlc0
CG7+zd8gJsSwxSCEEEIIaYmJX34ZtgikBehojDH/9m//hp9++gkvACDdr5P3CSGEEEJ6z/Xr1/Hd
d98NWwzSAIZOjTE//fQTXrx4MWwxCCGEEELa5rvvvsP169eHLQZpAI+3JYQQQgghhPQcrmgQQggh
hBBCeg4dDUIIIYQQQkjPoaNBCCGEEEII6Tl0NAghhBBCCCE9h44GIYQQQgghpOfQ0SCEEEIIIYT0
HDoahBBCCCGEkJ5DR4MQQgghhBDSc+hoEEIIIYQQQnoOHQ1CCCGEEEJIz6GjQQghhBBCCOk5dDQI
IYQQQgghPYeOBiGEEEIIIaTn0NEghBBCCCGE9Bw6GoQQQgghhJCeQ0eDEEIIIYQQ0nPoaBBCCCGE
EEJ6Dh0NQgghhBBCSM+ho0HIWKFhJ7YDzXl1J4SJiQlMxPaHItW4sh+bMPReecXAHmgdy27Pi9me
38/hPmITE5iYCGHH+eVDCDnX0NEgZIzQdj7HA1yBVHMthJkfvoCu5yDyP2J/Z4eD3S7QWtWftoPn
Hx9D13XjdbwNsf073Oy3gJXqq3JqOyFMhOod0FFHuv8FBARuD0ppLrTc303Lqf0cjnJftN/mm4ge
b0NR7uFTqXnq+vrOpn0SQoCPhi0AIWRA7Mfw+RNAuTdTvabt4PMHQeR0Y6QW/epHhB5fwe6QRDzz
aDv4/IcW9SfdR/R+9d/9b4Hf3e9gFNYJDjml+7vQ7zfMMZrsP4cQtxEdVv3t9Hezcuyfw90hek7N
6LDN2rdPgHtfoRMLP7P2SQgBdELIGJDThcjpx9uKrmwf67qu68fbig5AB6Ar28d6TqDyv8hZ2URN
Gv14W1cAHRB67nhbV6DoZnEVrHIrZRxv6wqEnnPUiUqCDuppdN9ZVl0dQs/lhA5lWz9uIq9XeW7t
cOrPs62u3SP0RknsZdWks8lmtUfXc7oAdFg6sdJ4yFm5X8l/rG8r1TSwldWOrqrldWgTDv249WlO
eOujxo6Ubf3YfG+/7m4f1vX29NhuO5z2V2evZ8DGG8pS0R90kcvpwl6fB646rLHPapmVdjZoAyFk
+DB0ipAxYD/2HLejxixp8Ioxpyjd38XxtgJl+xi79yXcjOYgIJDTdURvmuEKz29XwnrwwzEg3cdu
TgACeP75DwgqQVyRairC5/gC20r1kvbtE6TFbdyEhm+fANvHZqiQKU9H9Xjcdy3LqmMeyOk6dP02
ns8LKPc+hdRQXq/y3NtRqz/3NB69g9jz2/BKsh+bMENqdOg5UXN94vcf49gMvcoFH+DxPlATpnIc
M+Q/3oZihuM4+xk3f4dtBRBf3IcEDTuhGTy5Z4V0HWNbUbB9vIv7x4115SlPBzZhx6tPgX08z2/j
dzcbpLPsJAh8+xj4YltB+ofHiH0OfJUTSNvto66OdvTYvB1e+nF+DiuMvI036Jv9GCYmfo+Pzfy3
n89DmPV546FDu33uA7dN/R1vKxC5aIM2EEJGgoG5NISQoVAzS1gzI36sbyuOWVLr5vG2rtjf22ZT
jVnNBrOTNbOlxux4zUyqfba3i3rq7nuV5Zy9bfi/Td4GstW1w6k/rzQuHG+LulWhmjJsKwM11x26
sc/uH28ruiJEpX77SparnJWyHDPPOVGvYy9dNZCnLZtwttOrD3Ki2qYmdqQoho5zQtEVxZCjIl+D
vG3rsVE7PPXj+Bw60oysjbcqi6m3Fj4K7nV6lNdK3xNChg8dDULOM8fbuqiOHGoHNA0GfzXOSc1A
t3kIRF14lnOgbBsgdl5P/X2vsmoGJVZYkG0w4yWvt2z17agbPLumcaGmf9xuK675667XDLDMNtaE
UnkM8l3KqnVMvQd4Tl15y9OeTTjb6d4Htbbc2I4UXeSOK++dg+HGdbSux2bt8NSPy0C6Kvvo2nhr
suj1zmozHDp0s09Pe3VrAyFkqDB0ipDziraD0OfODcbVECR7+AS0b/EkXXt6j7Jths/sfopvQ+YR
oubmW+8QiH08fgDc+1SybT7/1AzJMY9unfkYePJt5QSZjurxuO9W1vEPaTNcbB+xiRk8SCvYtuJt
POX1Ks+jHTX6825rXTMe/4DbrW4A13YQcj15Zx+xmQfA9le4L5myYBvHu/eNdth1VdfPRrjKPdtR
QNKVIETODF/RozYdN9aVpzwd2IQdV/vQvsUT3MOnxzuV41K97egLRG9Klff3JYftN6yjFT223t9u
+nHKUk02yjbeiixWOJcAWgibctdhrX1qOyF8jq+MEDNtH/uN+p4QMhoMx78hhPST6iyfOZNY2Vha
3dxaE9pS2UhpzRLbN13WhqE0DIGw1yNylc2jyvZ2zSbOahmd1eN+372smg2yzlAkT3mPPcrLubej
Rn8eaeob0TycxC6f22y7Sx3OGd+aNjn7uVK+M2TNZXa4oa685WnfJmqU5NqnFfuudkBTO8qJ+jYa
97zraE2PrfS3t368bH20bbwVWYw66jaiu+JRp90+t6vl1tqnhxyEkJFgQtd1vX33hBByttlHbOI5
btfMWJ9/amZESR37sQk8v21uEtd2EJp5gLRim9UnPab3n0PaOCFklGDoFCFjhLYTQmhHg7bze+QH
+HC40WAfjx8E8QUHYO7sxzBvO8UJ0n3s6jmIYcp0Tunf55A2TggZLehoEDJGSFeCSD+YwcwPX4zX
jOd+DBMT8xAQmGcAtzs3o8gFH2BmYgITlddz3OZqRs/py+dw1G1c20Goxrbsr1Blrw0h5HzB0ClC
CCGEEEJIz/lo2AKcR2Kx2LBFIIQQQgghI8Qvv/wydmNEhk4RQgghhBDSR3755Rf86U9/GrYYA4cr
Gn3gb//2b/Hhwwe8fv0a33333bDFIWPMb3/7W/z000+0wzMI+450C22IkNHgt7/9Lf785z9jHHcr
0NHoI69evcKrV6+GLQYZYx49ekQ7PKOw70i30IYIGQ0ePXo0bBGGBkOnCCGEEEIIIT2HjgYhhBBC
CCGk59DRIN1Tcz56DPvQsBPbQa+ORd+PWeWSfnAe9avthGz2aHAe2zls3HW6j5j5feD5OIf9WOP7
HrBfyejTgv23Ukqf7ZqfJTIo6GiQLtlHbOYBgjkduq5D12/j+cQMHuS7KVPDzg6/6s4Hw+lL6f5X
2FYGXm0POA+2fxO/a6b8m7chIHC7zUdis1/JcGin/1qw/xGAnyUyKOhokO7QfkQeQP5Ha/3iJqL6
MbaDXRS58zke/FD9/2ZUh65H0eaYhLRIP/Xr7MthchbsaJT01QpeOpWueHwBmCsZlSdY92Dml/1K
+k27/edp/20wDLvmZ4n0AzoapDukT3FPAdIPZmwDBgn3o/chWWnsoVX2EUVdyJWxdDvzIA2IeUxM
xLDjsrxbXfKdQGjHcHCMJd8JTIRiiIWcdWnYsa5NjOvSsLsO6pbPKwNB28vSo1c/elDbl866rfCC
EEKmXKFQfV83r9PRLg+53MIE7HZkz9/Ilir3YjuVemP71euWPXrJ3qxsu+0fN9Vwr6mGfIR2NEPW
kBEC6faZq9dptS9izz2quBmFrus4NqdShbkSGq0b2Zzffh2/7542qHz/hLCjWfZo6szju6Cq+x1o
+7GafrOutfa94v4d6dp/TfJ72n8dg/he5meJDBmd9Jx4PK4LIfRPPvlk2KIMiJwuAB22l7J9bNw6
3tYVQBe5ajr7e2X7uJJG2c7pxznjPYxEuq4f69sKdEDoRjahwyrD/r4ig6JvHzvyVMo/NtOZ18eA
eDxu2KGnDpz63daNrnPXYX0/enFc35dmGVC29WPz/21bP0LkKu/tdtGwTpsN5IRNXqf8HnZk6MO8
Z8nVgi0Z96p2L3Lme1vbGtl9fdn1+qr03QA53lZs+s/puWO9wWeuVjdW3mpfeNhITph5GtjROe7X
QTIMG+oWy3YAoecsW/HSu81O7PZX6Q9lWz9u9bvM9TvS+3vMmb9l+7cziO9lfpZGAuuzGAwGhy3K
wOGKBukBNxHVdej6cSXmM/3gc+xoAI5/QBqAmJ8wwyUA8Xwf2H8OASB4RQKk+9jVdezevwlppnFN
2o95AAo+ngEw8zEU2MO2ACj38KnkyGRfdYkB0RFfGu4Lrerg5n3cl8zl6bSC7WMznVc/eldY35fS
fXy1rQDpB3i8D+x/C3xqE0L5eKbSp+kfjlur05whv/18AvMCAPL4sdNTCNI/1K4iuNmShfgC9617
yjZ+d3MGH9vjnZvJXle2i76GgPTpvYr+97/9ETNSC585k+Mf0pV0N28L70puRs3wDON7o341A+zX
scf87rFsxUPv+88FKrbZKl596Pod6dJ/Hvlbtn87g/he5meJDBk6GqQ7tB3EKkuhEu7v6tCPt6Eg
jR+OrUEKoGwfm5vFdei2kYXbgKX3mHLlxBgvubahg/0YZh6koWx/Zfy4aVrTfmxZCnMgK57HgCu2
8DoXWqvTCK94fltHTrQhyM0ojrcVM+RvpvbHuwf0Sl8Dxxz4IP8cP175tGH/9Bf2K6nSWO9BXGnD
UL3Lau07src2MIjvZX6WyHCho0G6Jv9gpjbu8vgHpM0TZSozpE++NY67tRwTa+b6wWPzi3UfsRbi
/o1NdoYTY82IBJv9yuzHjBhP84uzqxmds0rLOthHbF4Ayja+MqbQ8PnjY+9+bBfpPr4QAATg+otl
9qny8UxLdWo7v4cw3uHHtk460/DtkyBy1g+cvludfesBPdPXwJHw6T0FSAv8YLoZrX7mZj5Wqum6
hP1K7Hjp3bC5Zt/nx/gh3bysVr8jG8vSpv0P4HuZnyUydAYToTVejNUejeNtXWwfV+JTUYmttCex
3avEeOrV2Hy4xYkacZhuee3XrL0g1bheRd+24jhtcf9C2Oo6g/GdnVKJ0fbQgVO/2xU91u+38exH
T2r7snp5W1fs/9fYgd0WWqizklfRhVA87SbnLOfYZiMOu21kSzX3tqtyK0q1/Good73sDe3Uoa+h
xdcfb+uKYx+T22euvn02+bv9rJ3jfh0kZ26Phv27wPF5d/8uqN8faKnY3ieKQ/+uZXn+TtT3n7ss
Hdj/IL6X+VkaCcZ5j8aErus6SE959OgRPnz4gG+++QbffffdsMUhY8yjR4/w5MmT0bJDbQc7x/dx
31rR2I9hYl5A2T7Gbi+nzBoLgZ3QDB6kHZdFbmSW70ey70ae0e/XQTJONqTthDDzIA2R89j3Q9qE
n6VeYn0W379/j1evXg1bnIHC0ClCyEDYjxnHFGrHV2o2jj9UaAAAIABJREFUgQ9HmMd4EMxVY4N1
I05aaWtXKRk52K+E9AZ+lkiPoKNBCOmMmuegOF8huIbbinl8/uNMzSZj4+QY+36dAXDzNoTz+R7P
bw9wRYX0BfbrmLKPx+bUe+PT8AZMJ9+RowI/S6RHfDRsAQghZxTpPnb1+y0nvxnVoUdbv95fzKNV
B10t6TPs1/FkRPu9ze/I0WJEdUrOHNyj0QesPRonJyeYnp4etjhkjJmYmMC//uu/0g7PIOw70i20
IUJGg4mJCXz99ddjuUeDKxp95P97+hR7/+E/DFsMQgghhBAyJH47OTlsEYYGHY0+8upXv8KrfFsH
VxNCCCGEkHPEoy+/BP7852GLMRS4GZwQQgghhBDSc+hoEEIIIYQQQnoOHQ1CyNixA2DCfHkdhmlP
M8qnUPaSEIx29ztPO8TMFyGEkLMHHQ1CyNhxH0DOfP/cI80T868O4LydHO82cI8BcD4EuJVy2s3T
LlHz1UvouBBCyGDgZnBCyFgyA2AbwAMAv0OtM7EP4N4whBoAXqsPUQDtHl3RSZ5h08/VF0IIIbVw
RYMQMrZcASAAPHZcfw7gU5f0IRihVCHbNSv8yrquuaQBjFl0KxTLPti1Qo8mHK992323EC8rn73c
ZvXtwHCshEv6Zu1sdL1Zva3I62x/yJGvmzIsvNrvJbMdq25LBzGXe/brjcq0y2gPy3PTr+aR3us6
IYSMEnQ0CCFjze9gDDztA7jbLul2YKxy6ACCqA54AeD35nUA+Nz2ft+WF+b1HIzB7j6qoUcPzHs6
AMWU56aZ5ysYKy/W/3Dku22rb8fx11nffbNsYcvj5IFZp3XfaqNb+5200k43eWNmG3UAx+a1XdSG
ZnVahh239nvJbMde91dm+cKlbTqMVZ5GZYbMazpqnVwv/T62pbfa1eg6IYSMEnQ0CCFjjYTaAd9j
1A7qLZ7AGDBOmOl/gDGoVAB8YUv3RV1OI+/H5vubZp4fbfm3bWm/Qq3j8xjGANmOPZ8lq9JCfa2w
jWoY2Reohka5td9JK+10k/djuBO1peu0jGa0oit73RKqNvMc7n3oVaZmu2aVG7XlcdPvbQDzMBwU
q+5G1wkhZJSgo0EIGXtuozpD3WjAas0gWzPXrdLOhmkJxqD1MYyBaScD6H5t0G7W/k7rvQ9joD0B
Y+9MrnHynpbRja68+qZRmY3uuen3JqqrHPYQOq/rhBAyStDRIISMJfZwE2vWeR7V1YNj1A4K78EI
kbJo5+QiAWO22iIN9z0gFlaIz0yTdL2qz4vfo7pC00r7O603hmq4lg73FaV+lSHQusz2VRzRIJ1X
mRIMO7OHnVl69NKvlTYKwxH5scl1QggZKXTSc+LxuC6E0D/x+3Ud4IsvvkbstY3KeFQX5rWc7b39
PgD92Lyu2K7Z0wnH+2NHOmfenEs9OdTKaJenkfw5x/9usuYc5TplcyvXTSav9tvTttJOp7zOep06
tf7vpAxnG93a76Urr7a30oeNyvTSsVO/uqPdrVzniy++Ru8V//JL/ZNPPtGDweCwh6gDZ0LXdb1d
54Q05tGjR/jw4QO+SaXwXbE4bHEIIWeQHVRnwc87+6hfgQihfjN3v8toRAjGqoNzvwwhhDTj0Zdf
4smf/4z379/j1atXwxZnoDB0ihBCRpAfMB5OhobakCHrWnDAZRBCCOk9fGAfIYSMCPsw9okA8Dx+
9rwhwVgpsD/XQkF7KxG9KKMR1hG2aRjPXulkDwkhhIwjXNEghJARwTpJaFycDIv7QM2Gg04chF6U
4UXUVi6dDEIIaR2uaPSRm3/zN4gJMWwxCCGEEELIkJj45ZdhizA06Gj0kcJvfoO9dL9OtCekOdev
X8fR0RH++te/DlsU0ibsO9IttCFCRoPr168PW4ShQUejj/z8889QFKV5QkL6yF/+8hfa4RmFfUe6
hTZEyGgwbqdNWXCPBiGEEEIIIaTn0NEghBBCCCGE9Bw6GoSQAaFBFSo0+xVVQNVckpbzSIkU8uVB
yQYAGtRUHgOtcqxg/5P2GC37cKJBFR7yDZqR0Ach7tDRIIQMAA2qyGFyVa4+hK6cR071SJtIo9hx
VWqHP/4S5DvAM8dgmPQC9j9pk5GzDycSZCEgD/2pml3qg5A+Q0eDENJ3NHUTiIQR9NmuHQF+2S21
BHlVgb+jmsrI59SOcgIAfEGEI8DmSExTnh/Y/6RdRtI+RpJu9EFI/+GpU4SQ/lLOI3ei4I5su6ap
OLwoY/Y0jdNGed/lkTJn6/zKKsLBd1DFJlQAgIyIkCGVrTR++P1FFIsAigKqHIGQJSOsoKYMnylW
Com0OQ/oV7AaDsIHANINKLlnyJdrB8akQ9j/pF1G2T4synmkEkX4V8MIwno/j9OEWb9VfrVRpmx+
KKthBH3O/xvU6SFjd/ow/3e2J+JHcdMoQ46YKzbWPWUa6bRqXtdsZVfbYPWf2FRrRPMrqwhfPqor
Z/ZQoJLU0pmmQuQmEfEXsZkuwq+s4g6eIWG+92w/GUnoaBBC+kr5qIji9DzC1SvIv52FHAS0w0Y5
i0jn/FgVAuFyHqlEAupFAXlVwUkijemI+SPpC+KOcgr/Zbny442IFdJQRv5ZEf5VgbBPgyqeIX/Z
+JF/kZ5GRIQhAShr9hlsHy5OF3H4DgB/z7qG/U/aY9TtA6iGK/nht4UuFRPTiAgBWVMhNnPI37A7
q5IpW9Hjf686vWTsXh9VN8jWBrOMO/kUEpsqZsUsDq17p/MQQjZkShl6FJKxl2YzoeKikCFBg7p5
AmVVVJ2n03nT6XGUU84jdaJgVQThK+eRShxCk4FD0/PI+VchVv1IJRJ4pljvX0AL2mUnow5Dpwgh
fcc/eaH6j3YEXG7lZ8IP5Y45o+cLYl4GTt6WzR9KP9SctXFXw4vTWffZ5/IRisUi0gkBITahoojT
dwAgYVZWsSkEUvkyfJJUM6a8MOk36iI9gf1PWuYM2EdtuJL13g/F2oN0YbKDUCaPOj1l7KU+bG0w
y/AF5yFDxaFmu3dDsunND+tjLd1Q4McJjI/MBUy6Nt6lHF8Q4XAQPk2FqOwzsdLJmK8IaX9Pzhpc
0SCEDBTtMI20mkbauqAKnLS5HO4L3oFSTOCFFsSNt4eYvCE3SO0IETCRZAEha1BFAiLtnob0HvY/
acQ424d3nd3V354+7FSdiRrenRrhWe61IXjHj1RCmH0oIyK8JDfDr+QIhJiFKhouYZEzClc0CCF9
p2ibgpNkASGMV0Q24oCbDiLKeeRU+6yWD8F5GeqmQKI4icte2X2X4feryFnnPlZOnNGQz5dhnRwT
ka3ZOIN3p0VMX+QMWq9g/5NWOQv20TG+i5i2r0iYA3azcvc6PWVsQKf6sMumHUL1+93TSrOQUUT6
hVZtRyWtBvUZcEdY/ejtIJXzuepeGXJu4YoGIaSv+C774S++RRnO8IOGmeD3p5GumRVz/GBJMiKy
isNZ+yZNCbMysLlZ3ewZvKOgmEhApGFuNjRSnqbNazCvVwop4+2JH5M3OmsvqYX9T3rOUO0DMPZN
mPsNnqk4hWru0VBxUdzA28q9PC6HPeoHAL8ffhSRTqi4KGY96vR5yti9PupRLdkgIyKC8NnbWtmH
Ye0v2YRQ7WkB4AImsYlEpSFWc1YxmXOUc9kPf9oqw6w/BcimPqe1G3hr5pnWZFx4W0QRRRTVWTon
Z4gJXdf1YQtx3nj06BE+fPiAJ0+e4N69e8MWh4w5o2CHmipwONvrM+fLyKtHuCw3/uFsG02FOByN
H7JR6LtewP4fHufFhtqnT/ZxZmmiD/spWl0prAxNAyTJVkg5j9SLiwifk89Up3zzzTd4//49Xr16
NWxRBgpDpwghfUeSI8Bmj59cq73AaZPZubYp55HaBCJj/oPYa9j/ZOD0wz7OMgPSRzn/DLm3jmtH
RUzP8jM1rjB0ihAyACTI4g7yKRVauLtNlZpqnrvuFkLQFRrUxCnmuSm4D7D/yWDon32cTVrTh/2I
Xis8qjN8wTvwp2whYDCfocEP1djC0Kk+wNApMkrQDs8u7DvSLbQhQkYDhk4RQs4lMzMzwxaBdAj7
jnQLbYgQMkwYOkXIOeejjz5COp1unpCMFJ999hn7jnQFbYiQ0eCzzz4btghDg44GIeeco6MjrK+v
D1sM0iZ7e3v49ttv2XekY2hDhIwGe3t7wxZhaDB0ihBCCCGEENJz6GgQQgghhBBCeg4dDULIgCgg
KSdRsF9JykgWXJKWMojKUWRKg5INAApIRjMYaJVjBft/mJQyUciyDNlLr0PRuZMCkrKHTQyakdDH
KFD7uS1lopC9OmjcdVZp//n+LmkXOhqEkAFQQFJOQdpdQsC6VMogteWRNhRHtuOqkh0OVAJYegis
OwbDpBew/4dKKYOneAhVVbG7BsSfOls4LJ07CWBJVbEUaJ6yv3Spj3ND7ee2lIkiFPfSyqjY0LCw
t/8cf5d0AB0NQkjfKSRXgI0YFqds114Ct5bdUgewtLuGhY5qKiHjPnptjalFxDaAlbP9izdysP+H
zNQilkzlT126igVp2pFgiDofSbrRx/nB+bmdWoxhd81LK+NuQ472n9fvkg6go0EI6S+lDFKv13DX
PktZSOLg0iIuNct7kkFUliHLMqKZEqzQCiMExJwtKllpoohGQ4hnga0Vubq8X3KWYV22QklkyPZl
7sBdrL1Oje/yf69h/48QJWTezCFm9/icDEPn1QTV0Bt7GIqVp27QZt2zwnWc/zeo00PG7vThmMG2
2lColpEsOO5lkrbr9rIdIUiFZLUddnlcyikkbemsCgtJyNEMCqY+oplSRTeu7Xf73LZKH23IbEzj
fve0nX7YSwmZqJneuaJzrr9LWoeOBiGkr5Re7iF79RKqQxtjsNM8PCKLeAp4qKpQd9eAeAjJQnXW
aHnDDMOZWsTDtWWs7cYQi21gGcDyhgp1KWDUtb6HW7sqVHUDV+PrlR+Yp/Gr2FBVI5wkbB/yTuHS
1Sy0k56qYWxh/48KBSTlEOLxlQYD62Hp3JSvMlCz3mcRDx1gTlWhbiwDW85Bm3MW3fm/V51eMnar
D1tooL0NZhm7awvYWkmiYL+nzUFVVSwFSshEV4ANQ9aN5SziIctxKSC58hpru2Y71haA5Q3EFk/q
y5k2HIRdU+aFrQOjvpUtIBtHCg8rbVmvvH9aF+JT/7ltlX7aUCv93sh2em8vhWQI8asbUK16ajiv
3yXtQUeDENJ3akI1Ci+Ba61Mky1g7eGi8UM3tYjwMvD6Tcn8gVrAVsqabSrgqTYH10na0kvsZbOI
h2TI8gq2YH3pBzC3vIUVc3ZqKhCo+UGdlhaMukhPYP+PAsb+h921BWRdBpYGw9N57aDPer9QHbxP
Sx2E5XjU6SljL/Vha4NZxtRiGMvYwkHBds9aMii9xF52AdZHJXB3DQt4DcMMpyG5Nt6lnKlFxGKL
mCokbTPsVrplhCtC2t+7Ux9i1wr9tKFW6MZ22rWXAg62bLp3qed8fpe0Bx/YRwgZKIWDOOJbccSt
C1syXq/tNg7ncDC1+BBreyE8LSzi7psDSHeXGqRexoZqn2k0CCypUJeMWV457p6G9B72/3CZWgxj
OX7QQb6zqXPvOrurvz192Kk6EzWcaMgCuOVeGxYf3kI0JJufm2VsqF6SF5CUV7C1vAFVnUNSbr+v
+0UvbKjftGUvpTd4jSxwAnSw9DM2cEWDENJ3srbpqMCSsSxthAcYy+VNB5mlDFJb9hm4KSyGl7G1
IiO0J+GaV/apa7i1sIVUdZ27EgudyZRgzfJuLFszhwYnWhZXL/GXo1ew/0eIwgG2lueaD+AGrPOO
mbqEq/YZb3PAblbuXqenjA3oVB922QoH2Fq45Z42MIdlZKsngp1oyFbSFpBcN8ORVBVqgwF4KZMy
nIweHN2V7Tbmp+c2ZE/TqN8b0Et7mbqGWwuwrdLUc66/S1qEKxqEkL4yde0WFvbeoARnqETDTLi1
EEe8ZgbP8eMaWMLG8hYO5hZt5QYwtwysrMiVH9vFh2vYC4UgxwEsb0A1J9G0uHkN5vVKISW8eb0A
6W6nLSZ22P/Dp+ZYUq9B6FB1Dhhx8EaoT3Y9CQ1bxvtQEpfUu3hTuZfBtZhH/QCwsIAFGPsbLqlz
HnVOecrYvT7q2bJkwzI21EVM2dsaSuKSuoSAGfLzOrQCecueFgCmIWEFoUpDrObsQko5yrl2Cwtx
qwyz/iiwbOrzauEu3ph5rhaWMP1mD1lkkU3O1diF6+e2kDTtKAsZLnY0ABuCWx7A1u9R7C1kG9pO
7+zFuh43+qamrCUE7N8lf3U1jbFgQtd1fdhCnDcePXqEDx8+4MmTJ7h3715becv5FBLpovGPHIGY
PYQKGbKkQRWbQERAlnokaDmPVOIU80JGr4rsnj60s1LuIWbNtpbzKSRO5yHqKikjn0ogXQRkpwzl
PFKJIvyrYQR9vZStidypt7gRDqLTKr/++mv84Q9/6KlU7VJIyjiY6/X5+CVkki9xbanxj3zbFJKQ
D+Z6MiPYDXt7e3jy5MnQ+64XsP+HQ+9tqE86P7M00Ucpg2hoD7d2Y+57Edqop1AAAgFbIaUMok8v
IdZHOz1Tn9tRxPZdsre3hz/96U94//49Xr16NWzJBgpDp0YITRVIpKcREQJCCIjZQ4hNFcbgdxNq
b2uDmkij2NMyO0RToWrWPxJk0Q8nI4fJVZuTkXZruQZVJJCejkDUydClvmra2A4S5DvAM6Gio+wj
QmBpA1jp8RNjC0+hNZlJbJtSBtEVYOMcDDJHCfb/OaEfOj/LDEgfpcw6Um8c117u4epcf+30zHxu
RxF+l1SgozEqlPPIqX4oq7bVBUmGiMgAfAiGI5B7WqEEeVWBv6dldkIZ+Zza1xo0dROIVFchfMEw
VhVnyw1n7kRZdVnlALrTV5dt9AURjgCbnXkqI0IAS+pDYL37J6VWzog/aOWI1LZKRjKkITwmm4IH
C/v/LNM/nZ9NWtOH/ZjV7ux+avEhbu2Fap6hsY6HA+iLs/C5HUX4XWKHezRGhPJREUVMY94ZHyPJ
DgejGtoDv4LV8EW8EJtQ4YeyGkbQZ4QeVf6HFe4zj9OEuSoiR+oG05VZfr+C1XAQsM/6m9ecopW9
0pTzSJmz/35lFWFrhK+p5gqNlf4yjqy2FAVUOQJx460jPMlqD4BKG2ELY2rcLpTzyJ0ouFOrRLcO
QLEoY3o6ASE8yrJ452zfO5uMMiJChlTRgR9+fxFFextlyVNHnjqVbkDJPUO+PMiwrV4zhcVYqyez
eGOcCtIDcepLxpLnSS6ke9j/Z5X+6fxs0po+jA3FvVHbFBZjKhZ7UlYndY/y53YU4XeJHToaI8K7
0yLg9+NCk3Tq5jMoqwLijjHQPiqHIa8qOElYQT2S7f9quE8xYYRkyZoKsZlD/kYYQVu5vou2QTw0
qOlpRETYCDXS3GbSNbxwTVNG/lkR/lWBsE+DKp4hf9l0eDaBiBCQTOfhhSYghyM4rezJ0KAKc3Bu
lWVkgpCM0LLNhIqLYhaHjdplG4iXj4ooTs8j3ESv5aMiivI05mcF5Bt5pBKbUGfdQriKSOf8WBUC
4XIeqUQC6kVh6jyN6Yi5IuUL4o5yCv9lueL8VfedeOjI56VTAPDh4nQRh++AdjdrBAIBqKraXiYy
ErDvSLfQhgghw4SOxohwYdJvnMXcBLkSAnQR0yji9B3g7Z1UnQ6/FZJ1YRL+mopOkEsJFKcjEHI1
36y8iU2hmrPt7qFErmnKRygWiygWBdKWzO+A8tsioNwxw8KMfRiN5K2W5Yf/jnn3hgK/WsTbstxC
u6r4J5u5b1a6G5AkAAhiXk4j97YMSM5RvR/KHXOVwWdPF8QdpYhELm9u3Nbw4nQWcrCuGk8dwddY
7xcm/Thxlakxmqbh+++/bysPGT7Xr19n35GuoA0RMhpcv3592CIMDToaI4Lv4jRQLOKoHKwNjSnn
oR5ddh+w9ojpaT+KJ29RhlSZLJdkASEbm6NF2gwHcuTzTlOfvvwWKJ62OR3/7tQILeq8aW3RtnwO
fME7UIoJvNCCuPH2EJM35Aap29Vp5/z8889QFKXLUsgw+Mtf/sK+I11BGyJkNBi306YsuBl8VJBk
ROQi0gn76UIa1GfAjWZB+T7b6gZQGaC3xjRm5TAi02k8y5cr9ebzZVgrDxH5BG/LznweaXyX4fer
yFllmact+S774VdzqFRRzkPN1xVaizQLGUWkX2jVdvn9uNymL1CsKMabWvk0HKp++JtVVM4jp8qY
r/SPD8F5GeqmQKI46S2nh46a6f3daRHTF8/sBg1CCCGEjBlc0RghJFkgAoFNoZpXjBltH4yTk1QA
2ExhcjWMiy+s/1XMChmzMrC5KYxrfj/8KCKdSKHoL5p7GVRcFDfw9pm5t+GZilOoxnt1FmJWRnHT
mkWfxWk6AVGJ64lAuIxv3dP4ELyjoJgw78lWSFYQ4cgpRMIKF5IREUEAvqrssgLlxJIvj8vhoBki
tQlDJUYeH8rIW+2oa5eRrzL0v+yHv1i7WgNNNTdcFyFgbs721conR0T9pmvfZfj9aaRr2uBYcZBk
RGQVh7P2zfOSrY1Gfe468tIpAJTx9sSPyRv1/UAIIYQQMorwgX19oJsH9pHeo6kCh7O9fjaHF2Xk
1SNcljt/wJ4rmgpxOOt9ElYDRscOax+aCDTomzP6cMRe4953tpPnHPiVCPzFTVSf+WnXrXu+mpPh
esQoP3i0+ffB+bLT0fn8jwajaJtVmeyHsrhxvmxz3Pjmm2/4wD5CziOSHAE2U2gWqdUTtBc4ne3x
l2zZPLFrMJ5Sn6h9aCIAM/TMIy0fjtgAH4JhgYhsOAnCesDnqoJpXEAwvArF7/Jke7d8ERnFdMJd
Xx3qcaQfPOppc7byaKfnlpG0zXIeL3AHQgisKqiGCruVR9skZxA6GmQMkCCLO8Cz/n35aar5w3U4
2/unmrcxWzuqOB+aCADaEeCX3VLz4Ygd4QtCbnfqUroBxQ+oh872dqjHEX/wqLfNmfdpp+eXUbVN
2+fWd3Ha85RE2iY5q3CPBhkTfAiG5b6VbpwW1ZeSIYuz7GLA/aGJmorDizJmT9M4bZSXD0dsDS2P
/IVg+/KWj1AsAn6/fXBjC7Gy69Hr4Zk1xY3Wg0drxGhmc7TTc81I26ZV79tZ9zBG2iY5w9DRIIT0
lfqHJho/qHIQ0A4b5Tx7D0ccNMXK4QF+KKutn4FddB46UDMaMGZ3T516dH14Zu1K22g9eNROc5uj
nZ5vRtc2AbsTX0T9ninaJjnLMHSKENJ3asIBtCPgciurNM6HI8J4YKEviDuKH2ouD2PbjfFwRNcf
cPPhiOmEgBCbUCvHQEuYlVVsCoFUvgyfJNX8HlYejjjiVPdatBckUbO3o5VYP/PhmVY3SjcU+FF/
7PWFydbkqDx41Hk0tytWGIgt7OXCpCMsxHjwqDi86G4HLdoc7fT8MrK2aZUjBFYVP4rpF64hvrRN
clbhigYhZKBoh2mk1XTlqehQBU7aPPloVB+OODSkIPr4TM+WH545ag8etejE5min54tRtc0aGYPz
kNMNlygA0DbJ2YIrGoSQvmN/aKIki8psekQ2Tkdq+gPJhyN2R8enyJi0+vDMkXrwqF2s1myOdnqO
GVHbrEE7hCrPug7WaZvkrPK3QggxbCHOG3t7e9B1Hf/8z/+Mv/u7vxu2OGTMGbYd/vv/TcfJ9/8L
/ykwjX/vuPc/f1Tx//5HGVd+XZcJ+sl/R/q/q1BVFer+NP6Lc7bs11cwCxW//j/D+D8q+X+Nj6Di
yRMVKmYhX5nC9H+aROHxY+yqKtRf/z3+72u/BvA/UfxvG/hH1Sj/uyv/BeFKIWX89P+8w6+CAUw7
BR4w7n1XRj71X/HH/wGUivtmO39tu2dsZP3xO1N3qgr1uyv4+//8G/zkmc+JU48SrtyYxMnOHw09
fncFkZX/C1NuOa/ImMU/YvMfrfp/jb8302rq7/HkR+DH704weSOAf9u3/gdm5Wv4j1adqgr1f/0K
/lIR2f0TnLzLolgqobgPzMq/wU/fPEa2VELxHYDDp/gfpR/xHWbxn2d/jd0/7kBVgVn5Ctxa52Vz
59VOh/35HyVG0TbL+RT+63/bNcr99d+7hjKeV9scN/7lX/4Fv/zyC/7hH/5h2KIMFD6wrw/wgX1k
lBgFO+zPQxNH7+GIvWYU+m6cOI92Shs6H5xH2xw3+MA+QgjpE315aCIfjkh6DO2UjCq0TXJWoaNB
CBkAvXtoIh+OSPoH7ZSMKrRNcjbhqVOEkAHRm4cm8uGIpL/QTsmoQtskZw+uaBByzpmZmRm2CKRD
2HekW2hDhJBhwhUNQs45H330EdLpdPOEZKT47LPP2HekK2hDhIwGn3322bBFGBp0NAg55xwdHWF9
fX3YYpA22dvbw7fffsu+Ix1DGyJkNNjb2xu2CEODoVOEEEIIIYSQnkNHgxBCCCGEENJz6GgQQgZE
AUk5iYL9SlJGsuCStJRBVI4iUxqUbABQQDKawUCrbMLExHtkojJkuf4VzRRq7tXqseSaLzpYhTan
q34uIGm1zWlENeUa6VztrO36aL9nnVImWv1MJAtAIWn2Ya/spKYyRB020whPe6qmoA2SMwcdDULI
ACggKacg7S4hYF0qZZDa8kgbiiPbcVXJDgcLASw9BNbbGBj0G13/d1iMqdhYBhbWdqGqqvHaXcNV
TGMxtou1BWB5Q8VSwJ5zqj7fxjKy8ZC7bjrWWTd0088lZKIpSLuGLha2UrYBlbPcAJZUp37cxGmk
A9rveaCQlBGKX8WG9TmaO4C8sgXDnlbg2p2d19aeHXjak6082iA5g9DRIIT0nUJyBdiIYXHKdu0l
cGvZLXUAS7trWOiophIyjX+tGzO1iNgGsDL4UXd7TC1iya7MVgjcxdoCsHXgbFuXOuuYLvq59BJ7
1ihqahEx1W5bnZTbWAe033NAKYPU1gLW7AP1wBIzO0xfAAAgAElEQVTUjWUYjvkGXLuzY9qzA297
Mu/TBskZhY4GIaS/lDJIvV7DXfuMciGJg0uLuNQs70kG0ZqwH1u4jDVrVrLSRBGNhhDPAlsrtnCa
krMM67IthMK+3B+4i7XXqQGHHLRBIdOZbObgfEGatl9Exk1nNXpuEH7hpttKyIZXaJMtrKvprKuL
HKUMoqE4ssgiHnIJm3KVsdqG+n730kE1P+337FN6uYcsruKS0z8PLDlWu2z2Gc2gVOmz2lC8Gnts
aO9mqVZ/uYUWNbMn2iA5w9DRIIT0ldLLPWSvXkL1972EzJu55qEsyCKeAh6aoUKIh5AsVGfqljfM
mcmpRTxcW8babgwxc1ZyeUOFuhQw6lrfw61dFaq6gavx9cpg4akthGI3bP+5nsKlq1loJz1VQ9dk
4yHjB32lvWMSK/lCcWSXNxCrWQmpzuTW6Cy6AmwYutlYziIecguFcNOtFbKRRTx0gDkzZAu20KZC
MoT41Y1KOJc3HnJMLSK2u4YFLGBt15LZC2cIiVu/u+nAJgXt91xwomWBBQnTTdJtrawDD82QvOwe
XpacqwP2/5vbu8XUpVuGvcYWUevrNLcn2iA5y9DRIIT0nZpZ9MJL4FrTX0gAC1h7aP4oTy0ivAy8
flMyfxQXsJWyZtAKeKrNwTWSqPQSe1lz5ltewRasH78A5pa3sGLO0E0FAjU//tPSglHXCFHda3Gr
s3xqs0G5Sekl9rILsLoscHcNC3iNOnW46tYaxNhCVKYl2yCtgIOtBaxZU7M19zqUoyH1g8RG/e4F
7ffsMy21Fki0bIUnTV3CVTQbLDezdwB4jVRUhnxwyb2PW7Qn2iA5q9DRIIQMlMJB3PzRkrGyZSzR
t3sa0tTiQ6whjqcFoJQ5gHS30Y/ucnXzp21TcGDJmqELVUMIzgKBRfcBQa840drYROquW09Kb/Da
Y/BWSNpOyEoW2pKjLm8Duu132u/ZZOrSVSC7h5d1DnMGyT7H+Fy9ugC8fuN6GlMn9kQbJGcJOhqE
kL6TtY0sjR8nKxzGWKKPNRs5lzJIbS0jXEk3hcXwMrZWZIT2JFzzyj51DbcWtpCqxu1UjrLMZEqw
TiTaWK6dKT/RsrhaF8x9Ruj2BKnAHJaRRfypWciJhuzCrXode+q2AVPXcGsBtplUW7U2u1CXAq3L
4ZbXk8b97gXt9xwQWHIJAywguQ7cbdZ/ztWNtpzxq5hbimHjahzrLs5Aq/ZEGyRnlY+GLQAh5Hwz
de0WFvbeoITWwlTMTLi1YMzaxQEYM2q202IAc+CwhYM5e8xzAHPLwMqKjK3lDahLASw+XMNeKAQ5
DmB5A+qSkVKLm9dgXq8UUsKb1wuQ7nba4t5hPUcjngWAEGRtwzaQrm5iRla2Hc25jA3Vdq8un5N6
nS3truF1aAXyllWeM64cAKZcdFtCJmrsiciGkrik3sWbdfP/9QyuxRbNPHGE5DiwsIAFGIO/S87+
hZcc1X0X2ZAMre5o3xIyVp2hKPYWsrb6L3n0e70OKq08y/b711YFHg8CSyo2IGNFtj4tRr9MwTjV
aQsAVqKQdmO49NT6P4k5danaL4DNbm32VWfvSWjYMt4n56DOLSO7EoIcd7GFJpxpGyRjz4Su6/qw
hThvPHr0CB8+fMCTJ09w7969YYtDxpyvv/4af/jDH4YqQyEp42CuhdCatighk3yJa0tug+AuKCQh
H8y1tp+hj+zt7eHJkydD7ztydu2XNnR+OKs2SAz29vbwpz/9Ce/fv8erV6+GLc5AYegUIaTvBJY2
gJUeP6W28BTaXI9/IEsZRFeADf5AEhu0XzJsaIPkrEJHgxAyAAJYUh8C691vGKxs/D1o5XjHtkpG
MqQh3GZYAxkHaL9k2NAGydmEezQIIQNiCouxpa5LCSyplRjh3hLAksqfR+IF7ZcMG9ogOXvQ0egj
MzMzwxaBEAQCAaiqOmwxSAew70i30IYIIcOEjkYf+eijj5BOp4ctBhljPvvsM2iahu+//37YopA2
uX79OvuOdMX169fxxz/+cdhiEEIAfPPNN8MWYSjQ0egjR0dHWF9fH7YYZIzZ29vDzz//DEVRhi0K
6YC//OUv7DtCCCFnFm4GJ4QQQgghhPQcOhqEEEIIIYSQnkNHo49YT/WV5dpXtKWDsAtIyjKS3Z5j
d6YxdODUnxzNoKLBUgZRuYuzxUsZROVWjwssIOlIW0h69FG3cnVEAUm7bkYODapQodmvqAKq5pK0
nEdKpJAvD0o2ANCgpvIYaJVtUUY+JSBE7Ss1WCV1T1d9q0G12u40nJpyjXSuttV2fbRZQgjpFDoa
fUTX/x0WYyo2loGFtV2oqgp1YxnZeKgFByKAJbXFp4AWkt07JL0oo+f1B7Ck7mJtAVjeUA39qbtY
QxyhZAHGmd1xZDuvtI38BSTlFKRd2/ngpQxSW92W65a9074IYOkhsN6y4zRINKgih8lVGZJ1qZxH
TvVIm0ij2HFVaocDTAnyHeCZY2A5OvgQDAtEZMCvrBqD7YiMYjpRbW87be9YT93QTd+WkU/lMLkq
IFYV+NWcbVDvLFeCLARkybUgmziNdECbJYSQbqGjMWgCd7G2AGwd9GooWELGfbQ74DIGVf8UFh+u
YeH1G5QQwNLuGhY6rrf1/IXkCrARw6LtEaqFl8Ct5e7KrafLvphaRGwDWBmxpTBN3QQiYQR9tmtH
gF92Sy1BXlXg76imMvI5taOcAABfEOEIsDn4EXhnSDeg+AH1UEN7be9STx3TRd+Wj1C0RvK+IMLC
bk+dlNtYB7RZQgjpHjoag6b0EntZYEGaNi/Yw4NsoTb20JvKe1vaZAFACZloCPEssLViXbPSO8K0
rDIyScg1IVkeZXjJVdMWL7ns9+1ylCqhZMmCkSeaKXjU703haRzZq5cw5X7XW+5C0j38qiJu1P1e
KYPU6zXcDdSWdXBpEZeaCXvi1IFdPnPloaKnKKKt9qddXqfMgbtYe50acNhWA8p55E4U3LDPLmsq
Di8GcbFZ3nd5pGpChGyhM9YsbtlKk0IqlUC6CKibttCasrMM63KqGoJkDz+RbkA5yQ04BKZDzMG3
fxLIO9tuhfLkVYiaMKJyfVoAtbptEALkps9K2JBXaJMt7KvpzL+LHOU8Uok0iiginXAJm3KVsdqG
+r720kE1P22WEEK6h8fbDohsPAQ5bv6zvAF1cQrGwHsF2FChBox4/5VQEpfUORyE4shiAbdsYTjZ
0FVsqCqWCknIKylk7sawGNuAJhtlGGFWJWTW93BrV0VsqoCkvI7MtTA0qwwtDLXmkaBT7mW4ymUL
G2om15SbHJa8KUjT08DaBpYWA8Cis/56tlZkVOb5lzeguiZsIHcpA+OWigAKSMoreFpYxNJ0NffU
pVtY261dtQCA0ss9ZK+GEbPX82YOS4tA4aBhryOeuoVdVUWslEE0FELykoql3TW8DsVxdcPU59Qi
Hq5puHVtCYtThmyN+zOGxakCnsavYkONIQCgVLA7aFO4dDWLgxPgf28k3oAoHxVRnJ5HuHoF+bez
kIOAdtgoZxHpnB+rQiBcziOVSEC9KCCvKjhJpDEdMUNafEHcUU7hvywj6NOgik0gYoXNlJF/VoR/
VSDs06CKZ8hfDiPo0/AiPY2ICEMCUNbsA00fLk4XcfgOgK9eqlGgmE5AWI/okSMQQQkIRnBaabsG
VRgD+uLpPISQbbl9CIbtaQHDETD+F5KxD2EzoeKisIUNwUxXp895nJrOQzExjYgQkDUVYjOH/A1j
RUBTE0hPRyDCEqCpEJsnHi3zliO8CqQSRfhXa1cZ6rHCmPzmCoNbX7vpwCYFbZYQQnoCVzQGRGWP
hqpWB8mll9jLLsBa3AjcXcMCXuNNyR56Y71fwJq1P2Ba8g7LKb3EXjaLeEiGLK9gC1loJ7Yy7nqM
5OvKcJPLnqiJXK5yWPluYS+0DlxrZQOKQXWPhooNrFRXA1qUu/RyD1i7azpKzv0vr5GKypAPLtU5
GRbVFSgYMVMtyb6AtYeLxsrL1CLCy8DrNyXTsVjAVspahSjgqTbnXncDPc4tb2HFXOWYCgRqVnim
pQWjrhHBP3mh+o92BFxuFjwPAH4od4LGuMkXxLwMnLwtm4M0P9ScNaOr4cXprPvgs3yEYtGcBReb
UFHE6TsAkDArq9g0Z4x9klQzPrsw6TfqGlEqezSEgHDdiGCF8vih3GhB1+UjFIt+WN0k3VDgxwnq
VOCqT1td1n6GC5O2MCINh6pNjpp7HcrREGcYU+O+9oI2Swgh3cMVjWFyoiEL4FbPC17GRs3qA9DW
UUQ9k8tFDgA4AbCQxd7LEha9RvYNCNxdw8JWHAeFJQRs4/9mcme1E8Aj4Orq1QVkzX0fzSQqHMQR
34rDWqDClozXa7uItdGWqcWHWNsL4WlhEXffHEC6u9QgtbseA0sq1KUCknIIctxD1yOIdphGWk3D
mpCHKnCirCLceJq6Bl/wDpRiAi+0IG68PcTkDblBahmRupl5QJIFhKxBFQmItHuaseHdKYpAi3sM
XHTVaHxbfosTFAGX2XZNFdhUrWIjELOty1GX94Z32m77mjZLCCGdwRWNYRKYwzKyiD815+ZPNGQX
buFa+2PvKlPXcGthCykrQL+TE4x6IZeXHKUMogeXEIvt4tbeekf7CApPjbAy+yJDM7mnrt3Cwlaq
Zg9MsvLPVcwtxbBxNY51D4EMJ8WsZsm2urJsrLY0dTJKGaS2lhGupJvCYngZWysyQnuSt249+7OA
TKYEa3VmY7l2xelEy+LqpW4MqbcUjSlZAOZgyZyNj8iAHBHNB2zlPHKqjPlKOh+C8zLUTYFEcRKX
vbL7LsPvV5Gzgtcrp/toyOfLsE4nisi1s+bvTouYvjhGMSjSLGQUkX5hhuO8O0XR76/Xq6c+G+C7
DL8fttl8W7U2WxCy1Locbnk9adzXXtBmCSGke7ii0Ues52jEswAQgqw59xYEzHj9FchbgDFzvYgp
lJBZN/c/rCehYcvcC5HEJfUu3lTuZXAttoi5ZWBlRcaWuXdh8eEa9kLmnpDlDahLJWSicVsZzpnv
QF0Z7nLZscnoIZenHFc3KiFB2awhj7N+A2O/whYAZG17NAAsb5j7QBzt8pR7ahGxDQ1ySDZXIpax
oV6r5k/OQZ1bRnalfnVg6totLOy1ttpRYeoabi3EEa+pz6H3wBI2lrdwMGfXbX1f1OvRSKk59/1U
CinhzesFSHcB/LVVgfuH77If/uJblNFayIqZCX5/GumEMGeRXWZvJRkRWcXhbNBWroRZGdjcFFDl
CIQsIXhHQTFh7mmQI7C2K5w69zlUCinj7Ykfkw1myIdDdQMzkIA4jTgG2Pa2K1BOrH0Tbnst6vVk
7CPYhFABQ99Bl/7yueizjHzKXtcNvH1m/v8sj8vhoJknjYRIA34//Cgi7SGXuxzV42OLCYHTiHNf
RRl5q85ECkV/0Vb/RY++rtdBpZW0WUII6QkTuq7rwxbivPHo0SN8+PABX3/9Nf7whz8MWxzSAwpJ
GQdzLT7XpGVKyCRf4tqS04nrkkIS8sEc1KUA9vb2kE6nce/evV7W0DaaKnA428JzDdqijLx6hMuy
24C4CzQV4nC2ySz5YHjy5MnQ+25cOS82G41Ge1kTIaRDrl+/jvfv3+PVq1fDFmWgMHSKkBYILG0A
Kz1+0nfhKbS5HjsZ1ulavfWIukaSI8Bmj5+arL3A6WyPB2zlPFKbQGQEnAwyXGizhBDSPXQ0CGmJ
AJbUh8B690/dLiTNZ18czPV4haSAZEhDeCQ3hUuQxR3gWfdPMNZUM17+cLbHs80a1MQp5rnBlgCg
zRJCSPdwjwYhLTOFxVij06Fawzgtqgfi1JeMJXX0XIwqPgTDctelGCfvdF2MW8mQBYdrxA5tlhBC
uoGORh8JBAJQVXXYYpAxZ2ZmZtgikA5h3xFCCDnL0NHoI5qm4fvvvx+2GGSMuX79Oj766COk0+nm
iclI8dlnn+Gf/umfhi0GIYQQ0jF0NPrIzz//DEVRhi0GGXO+/vprrK+vD1sM0iZ7e3vDFoEQQgjp
Cm4GJ4QQQgghhPQcOhqEEEIIIYSQnkNHYxTQVOPoQ5FCvlxGXs3DOLpdgyoE1G7PVmxcOVRhHr3Y
34q867W/UlbbYZwPL7o4x76cR0q0ejSlBtWRVlM9dN+tXB2hQbXrZpQpZRCVZchys+eOFJCUa48L
LiRlJN3ODy5lEG1aXq8pIBnNYKBVEkIIIecIOhrDppxHavMEyqqAEHeAZwmkT6ybEmTR6yfT1lSO
fCqHyVUBsarAr+b6M3jWVJcBuwRZrELxA3LEcjRWoSCNhKrBOB8+jWLnlbaRX4MqcphctZ1FX84j
p3Zbrlt2N120ggT5DvCsZcdpWBSQDO3h1q4KdfcW9kJezx0pICmnIO3anvlRyiC15VVmHNmORUq6
Oy9NCWDpIbAud//sFEIIIWQcoaMxEkzjog8wzmxfhTI9oGrLRyhaI2ZfEGERRrCnj6wFgDLyObXF
tD4E7yjwn7xFGRLkVQX+juttPb+mbgKR2rZrR4Bf7q7cetrRhQu+IMIRYHOgK09tUjjA1nIYi1MA
pq7h1sIWDlxG6YXkCrARM9JZ114Ct5bdCg1gaXcNCx0JVELG3XtpjalFxDaAlc48FUIIIWSs4alT
w8Z3GX5/GpviBMpqGEGfD0E5aNwr55FKFOFfDSP4ToXYVKv55AiELJlpjBl2v7KKsKunoEEVmzBy
+416UM1XTAikrfIsKnXP4zRh5rWnqasXyKcSSBcBORIBNjdxokTgL24iXQRQFFCddbhJ+iKN4nQE
Yfe79e2wmqvZ9ONXsBoOwq6Jcj6FRLpYf6+cR+5EwR3ZXo2Kw4syZk/TOG0k7DunDt7Z5JMRETKk
ip788PuLhmNn14VH/1XkdbZHugEl9wz5cj+cwu4pvXkNYM78bwqXrgJ7b0pAwOZRlDJIvV7DQ/tD
CwtJHFxawpwWb7xic5JB1FzdWFjbRWzxBEl5BYYrsYwNdQmBkpVmAQsLWWSzALIytpY3oC4FjDCs
mjKmTLGiCMXNdZOFNezGFjEFAIG7WEutI1OqdYwIIYQQ0hg6GkPHWMVAKoF0QiBtDVArITp++AGU
MYtVIcMHDao4xKwsASgj/6wI/6pA2KdBFc+Qv+wcgJaRT20CEQEhGfsONhMqLgoZRrWmI1OTpxoe
VExMIyIEZE2F2MwhfyOMoM+j3nAEpyKHyQsXACUCOSgBwQhOhVG/l4+hbgpzcI5aZ6YG73ZI5TyM
W8LQm9jECy0I+YJNyxcdjolV6lERxel5m2NTRv7tLOQgoB026rci0jk/VoVAuJxHKpGAelFAXlVw
kkhjOmKGYfmCuKOcwn9ZRtBnyFbVhVf/aXiRnkZEhCEBKGv2obcPF6eLOHwHYAQdDQBYkBovyZVe
7iF7NYxY9Qoyb+awtAgUDhrlzCKeuoVdVUWslEE0FELykoql3TW8DsVxdcMMw5paxMM1DbeuLWFx
qoCkvAJsqFgKmHWtG6FdsakCkvI6MtdiWJwq4Gn8KjbUGAIASgX7CsYULl3N4uAEAB0NQgghpGUY
OjUS+BAMCwgRgQwVm0KF5gjR8UkSfLDCfMxBbPkIxWIR6YSAEJtQUcTpO0fR5SMUi35MmoNu6YYC
P07wtuFeDKtuPxRr38KFyWq4kGe9EuRVP4qJZ8Dl1jeWVPdoCESwCeG2D6FBO8pHRUC5Ye6vcO5r
OUEuJSAOL3quAPgnbR6JdtSi7H4od8xVBl8Q8zJw8rZsOhZ+qLnqhv4Xp7PudTfQ46ysYlMIpPLl
St9bXJj0G3WdYWqckcJL4FrAO3E1F9YemqsMU4sILwOv35RMx2IBWylr43YBT7U599WH0kvsZbOI
h2TI8gq2kIV2AgABzC1vYUWWEc2UMBUI1PgU09KCURchhBBCWoYrGsOmnId6dBly0Adrg/RkKoFD
TYZ0wZFWU7GJCETNONhaAfHg3akRltNzwT3qfQfAX0TxqIxgB7E90g0FfjVd3/4m7Sieek/xT0/7
UTT3fTSTSDtMI62mUXmOtipw4hmS5o7v/2/v/kGjWPcwjj855QFBuBpOseJFwimSIBjTGLg6EBC0
ukg2oE0IJ50219saMmHT5mhx0kVCGoW4BG/hCQjCmCJpkoAnyRYHkaNuISaFkk7JmVvMTPbdyczu
ZjO7s7rfDwxu3n3nnfedtXh/8/6Z3msaKkxrvdiri59e69RFq0Lu6PuYsWzZVlGOPS07X+U3biGn
fzqnlweP/nf04Y10rr/yMMD2Wk65uZxyQcKcpTfGlKaarjt4R+PLWf2+PajrH9aUuT5SIbc/xSqU
2jPiyBnZ1ryVlZWLzgMAAGrHiEYL+JhfMnZ7+qxd48l9SVHO7EcNXfS6m3t7e/76DkcrwclROxpl
umSpoPy6/8XnXRW6u3X2ONNu4q67t6WF1yc1PPxfdReW6trBqrjuTRc71P4K7Thxtrt8x6y9LTkH
f3SqyxrWWGdeSzEVKhjDQBnLGF2xvNGWqkHG3pZWHEsDB/lOqHfAkjNra7pwKv5ex/5+RW1t7SkY
nRmzykegPu8W1HmyRedN9fRrdG7B24Z25w8ta1zXI3rrL4sfS6eMOHIc75gZlUZnnOpBxs4LLcyN
avgg32kNDo9q7ral7HJG5+NO9xeoLwT75B7sSLWtFy92JPVoxHE0M/pG5gDGx+JLnfuJeVMAABwF
IxotoHNoQFqyZftrf60x21sHseCvk1jakjrz3jqGadt72u6vZei9NqTC9LTsfJAWLj3jrxuYle1I
3hP0Xm+th7EYfHfMnG60p62l4DtHJ+2L+rRUqsvZ4d6I6/r17Rw7mBJUKHhrKLosaXY2vBjcWNhd
MNZoSLLGhsvb76/FiG6H/N2YdmUH90aWxuyzpfOdLtldlgqzh0cHTpztVnehttGOA/4C/nzZ9UIj
DhlLY5aj113movTMoXsR9/vt5v00+eml1ev69LFbpy7WWtlm69HIk8uayFrK6YrGn0weWtZw+vxl
XVn+oB311L7k4fR5Xb6SUy5r+SMfESMOPSOaGZ3TWv+gUW6P+kel27dLi8EH74xrOZuVlZM0OiPH
H/wo5vw0+ekHhezow5srylw/wm0AAADqcF3XTbsS35upqSnt7+9rcXFRN27cSLs6qKLo2HrdlfT7
Sva05bzVWas32TXbRUf2666qu3eZnj59qgcPHiRZi2Pbnre01h8s0E7Kjl7M/6HzI4PJrtnenpe1
1u/tWNVEy8vLGh8fb+o1AQCN0dfXp69fv2pzczPtqjQVU6fQ9jLWmDSb8Ju+i+va7Uo4yAh212rc
GxybpmdkRrqd8Ju+t39XsT/hIGPnhSZuSzNNDjIAAPgeEGgAysiyr0lLx3/rdtHx13i87kp4hKQo
Z3pXA9/IovDqejTi3JF+O/5bt7fnLVmWJWutP+ERkm3NZ4saZlE4AAB1YY0GIMnbYtg6dineblHH
LiaqZFn29xFilJzW4GSl3aFq4+0WlUB1DpesEYcQAwCAehFoNNCZM2fSrgKgnp4eOY6TdjUAAECb
IdBooH9sbyv/9m3a1QD06tWrtKuAOuTz+eqZAAAt7d+nTqVdhdQQaDTQ5o8/anNrK+1qAAAAICVT
9+5Jz56lXY1UsBgcAAAAQOIINAAAAAAkjkADQNt5LKnDP1ZryHPcbY+/FVl57W70OUcx6R8AgG8P
gQaAtnNT0or/+XlMnkX/X1f6Tt5dUhLVcZ+UdNSl5/Wcc1QT/pEkAhcAaA4WgwNoS2ckPZJ0S9Iv
Kg8mViXdSKNSTRA3+jAh6ahbV9RzTtoaOfoCACjHiAaAtvVPSbakh6H055L+FZE/K28qVdZIC6Zf
BenFiDyS9xQ9mIpldnaDqUcdoWPV+D5qildwnllutes9lhdY2RH5q7WzUnq169ZS33D7s6HzjlNG
IK79cXU2BdcO7sFkxHdmeqUyzTqa0/Ki7m8xJn9cOgC0EgINAG3tF3kdT7MDdzUi32N5oxyupF6V
OryS9KufLkn/MT6vGufKT1+R19ldVWnq0S3/O1fSkF+fS/459+WNvAR/K3TeVeN6j0P/hq930y/b
Ns4Ju+VfM/g+aGNU+8NqaWdUfSf9NrqS3vtpT1Q+NaveMkxR7Y+rs8m89n2/fDuiba68UZ5KZWb9
NFflQW7c/X1o5A/aVSkdAFoJgQaAtpZReYfvoco79YFFeR3GDj//n/I6lUOS7hr57h460zv3Z//z
Jf+cv4zzHxl576s88Hkor4NsMs8L6jpUw/Vq8UilaWR3VZoaFdX+sFraGVXfnxVtwshXbxnV1HKv
zGtnVPo/81zRv2FcmUUjLSh3wjgn6v5elTQgL0AJrl0pHQBaCYEGgLZ3VaUn1JU6rMET5ODJda2O
smA6I6/T+lBex7SeDnSjFmhXa3+9170pr6PdIW/tzErl7ImWcZx7FffbVCqz0ndR9/eSSqMc5hS6
uHQAaCUEGgDakjndJHjqPKDS6MF7lXcKb8ibIhU4ys5Ftryn1YG8oteABIIpPmeq5EvqenF+VWmE
ppb213vdSZWma7mKHlFqVBm2aq+zOYpjV8gXV2ZG3v8zc9pZcB/j7m+Qd0JeIPJXlXQAaCkuEpfL
5Vzbtt0L3d2uK3FwcLTY8UgH/VHX9tNWjM/m95Lc9376kJFm5rNDn9+H8oXPXYm4zorK62jWp1L9
V0J/R9V1JVRuuG5R5UbVKa79Zt5a2hmub/i64Xsa/F1PGeE2RrU/7l7Ftb2W37BSmXH3OHx/3VC7
a0nn4OBovSN375574cIFt7e3N+0uatN1uK7rHjU4QWVTU1Pa39/X/xYWtFEopF0dAN+gxyo9Bf/e
rerwCERWhxdzN7qMSrLyRh3C62UAoJqpe/e0+OyZvn79qs3NzbSr01RMnQKAFvSn2iPIKKp8ylCQ
1tvkMgAAyeOFfQDQIlblrRORFLv97PcmI+hhnc4AAAEDSURBVG+kwHyvxZCONhKRRBmVBFvY5uW9
e6WeNSQA0I4Y0QCAFhHsJNQuQUbgplS24KCeACGJMuJMGOUSZABA7RjRaKBLP/ygSdtOuxoAAABI
Scfff6ddhdQQaDTAly9f9O7dO61LUr5RO9oDAADgW9DX16eNjY20q9F0TJ1qgHfv3ml9fT3tagAA
AKAFbGxsqK+vL+1qNB3b2wIAAABIHCMaAAAAABJHoAEAAAAgcQQaAAAAABJHoAEAAAAgcQQaAAAA
ABJHoAEAAAAgcQQaAAAAABJHoAEAAAAgcQQaAAAAABJHoAEAAAAgcQQaAAAAABJHoAEAAAAgcQQa
AAAAABL3f36fGJh7bneAAAAAAElFTkSuQmCC
"
x="0"
y="0"
width="794"
height="402"
id="image10" />
</svg>

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -0,0 +1,187 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="461"
height="219"
id="svg2">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<image
xlink:href="data:image/png;base64,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
5wQAAAAASUVORK5CYII=
"
x="0"
y="0"
width="461"
height="219"
id="image10" />
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -0,0 +1,187 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="463"
height="227"
id="svg2">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<image
xlink:href="data:image/png;base64,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
evP5sX5OnaeN3zNthePqqxNtbbV0PjbWn1zFt481Qjyd2Pz7ZL7dn9/f2mqpNdk2/CQSrkt8Mrk6
id/PTb5X4l5ubP+Muk2SNsqbO62Rdo8i2Q7RFMzxS7McGWWYapMTXWWmnVbPZPvnHdeCNs7cL5xm
sUxrxr7z3fXBSu1fokxp6wuPd7l+ll/3GetnnIPT551tOcI+n1WvRJphmaz7RqwC+nC8qcfhBbHK
NcZ6n3mcr1c6+XC/xIxYVj5lzu8tbdlc19Laysh9+efH2jz+MPPocz5P267d174udWjM3Y7/fKd7
z9PucY513vpdenWhi4sLXfQOpMOmTs7P1Xp5LOlSh81g/dG+dPxSW1vm+zdG4zf17nHPT+eipwMd
qtk619i4n3j88oPuX1zo4qKtdrung01p/yicNlnT/f1NHfQS0yjJKdXk+/G5fn/3WL0Lvw69g/Af
Y2XUbXLubenl54PJfkeZ89np9yiOXybbIZqC2T+60MXFntayynCS1ib39SEz7aCeh9JBL0gr1v5p
lrVdto0Nk7wvLnS0f6nD5omubNIaV+k733kfDPuZVfsXlMlYP3qekmZmfln9zKbus9TPv7/m532h
3sGmtHmgXqVyRH3enMKM6pXok2GZrmz7RrIKH3Sse/ohvCBWucaU2WfO5+vVyQfdt4ucFc7vi0m9
Cq9rVxltFavmD7qnY32YMXrO6U9V1vTUn7sNDtSV/ji8p/uprf+HDi8vddiMj74+6+fJHPn+UVvb
y5L+vZL6PkpnX8+3w964rO1XB9q8PNQf2jMa3+wE/ig5mmK+0ofM0XGBy0M1g6i4vL3t55FVt7/H
/kj8eFMHr6IPFGtPs+4JpN+jSG2HpKwyrDxNaZOCtJe31b7wl1+dbGkr7wGBCfs2nuQtaW3vSPuT
jl4yLeP+Svm+cwP6YJX2zyvTVbBeB3oaFmhtTxdBHlb5Vap7xfqN/9ZnbWrl38FuPz/W5uVI/1Qq
R7l7flPH+9+WfWyqCp8LckyRdo3JM+/zdXyuv+/b36+d+fyW8q+tUqm2mmxb0dz+Jdny9nPtH77U
4R9X2r7/QZ8Pnmova+PNA/XSnrwtVbdLjf4JO+O9RCF+0D0FjfTvjN3XnupATf1xta09fZCe79k/
Aby8rXZPajVfautY0v6RLsJPYxl1G5+/06Xu6Xltjxv77ZBaz5na10h72Z8OaR5e+p8A759o62WJ
i0ANbfz577G0tlzP8ZoI6iXdmD5o2/5FZRrrs/L+hXjZ/CrXvUp+yz/r8eah3v051vb2svTPSJeb
K3pVYzny5ZxrWdvOep7nXWNyzPN8vfrjUIfHhzqMLb1Uc+tQ+0dlHm6MVDq/s85ZVWsrW3MaeUrm
6LP15nM0t58m/NQ4g+Uf7kkZQ/F7P+T13GX9/HhTx29OdPJG6aPjUgXYVvsimrqZ3FrIqJtf3s+a
8cNPOTW0ryTp6kTNw3s6KvXUr2mGNg5GGVH/qel4Jd2EPlih/YvKtPzDvey6W+RXve5V8vNHKJeH
TX/U8VI6Ci6itZRjAfxy2u6UcY3JMufzdW0vmDK9SE6fW+Q3y/mdd86WaKtZ+8Mcg2cwnaJLXd57
PhmmT1l7qoPNY700b+pfnUw9WFNoLXjK92V0c3h8/kbHm8aUVFY5t59r//JYx/fu50wpGZ9e5d/D
nTzcMz7XeZjp2p6O9sNPUjl1C+8L1/TYdKa62lfhp/oo4NtMPZVq4+kcdf77oS734/2nWlo5bkgf
rNT+RWVau699HcefPhyf6+R8bJffDHW3r1/4Jx7hhduYOqyhHAuxdl/7yQ/PVa4xOfss/ny1NcP5
nXfOZrXVJNu/9Vn7M3/wbnie51XZcWNjQ5LkOI62ttZ03mrqMDxqxnD66mRLH+77n0TCKYSJyXaJ
P9TdP9LFnmLL9g8O9Pkweho1/n5TB722tpfHGeWIp582pTA+P9GfP+9lB/mgLuFtg839fen4WJfa
11FvRW/MJ2Vj0wRpdctYZ4iXMWu7TR0cPda7l2Y7vJJ+D9tgP/gbshLte3ShvTVzu7S0n2vUjPaJ
2iBLeFz8d2XaONlHNg96aqfskJ/WVYW+cxP6YDyN8u2fVab0dLPKbOa3f9TTyptkP6te9/L1m+6H
UbHDvmJTjkSfj50/iXxj50Ncub6RqO3Jlt6sxPt3lWtM5j6xh6Hmc76axuctNd89zphKNbapdH6b
xzTvurY2/YUMiWnb8XlLzdHzybJXwb8kcxxHrVYrt47fvn3TeDzW0tJSXcFzq0oS35ErnbT+1lO+
8WiO6mzj23i8bmOd5mWs8/N/tL1tRODxuVrNkZ4v/AsHZnGlk603WkkJrNfvOvvjPPO+0kniG52q
Bs+5TtveFOPzN1Lqn9GgLnW28W08XrexTvMyPv9dh+/+jj3LNf7znXTjvnBgTXu9x3rXrO8r4+py
nf1xfnn7I1XlPfFt4U4Hz/APaZuj55Y31FFWnW18G4/XbazTvC1vv/L/dtP44//f9Sp1+u+7t7yt
9sVzjeb97ENJ19kf55t3OOK0fXgqG9O2AIA7i2lbAAAWhOAJAIClWr5haHNzq45kAABYsPVKezHy
BADAEsETAABLBE8AACwRPAEAsETwBADAEsETAABLBE8AACwRPAEAsETwBADAEsETAABLBE8AACwR
PAEAsETwBADAEsETAABLBE8AACwRPAEAsETwBADAEsETAABLBE8AACwRPAEAsETwBADAEsETAABL
BE8AACwRPAEAsETwBADAEsETAABLBE8AACwRPAEAsETwBADAEsETAABLBE8AACwRPAEAsETwBADA
EsETAABLBE8AACwRPAEAsETwBADAEsETAABLBE8AACwRPAEAsETwBADAEsETAABLBE8AACwRPAEA
sETwBADAEsETAABLBE8AACwRPAEAsETwBADA0v81Gm0NrrsUAADcIEue17ruMgAAcKMwbYvadZtS
o+G/2jnTGqNutF2jKY0WV8Tvy0hqFrRVu2B91XQBVEPwRO12epLX9393f8sOiu/fBtv0Ja8nrSyk
dN+ZkdRclU5zNmk3JHcO6QKojuCJuXFdSafS67SRz0DaXa8QFG6bFak3lJycTVoF66umC6A6gifm
54nUcdJHn4MzqfPiWkoFADMjeGKudn6VdCq9N6PnSPrto/QoY57WvGfa7AYLB/777shY305s385O
J3ZP1bgX2A7zMbYNB8rtxHuzHJP7ucn3StzLNfZPLk+WN1nmbs5N4NQ2ypGWbrdsnRNtllrGlDYN
08g8Don2jLVZRnqZbVihfwAz8SpaX1/31tfXPdd1Pc8TL17xV1+e2/d/dyVPbrRu2ImvC3/3PHkd
R15nGLwfynMkz+34PxW8OkM//bT34b4dR57TiacrR97Q2E+S1/fi25hl6btGWcxXWK5+yvuhPMeR
NzTq2je2maRnlncY1S9c33eN8iXyS22jfnY5M9MtW+dEm02lVdCmqcfBmz7+w07BMcpqw759/+DF
K3zFY1m+r1+/esPh0Pvy5YvHyBNz96IjyY1GKa93pScPUjYcSLun0u5qMFIIHnj5qOj+nduXdlYk
raa/N9P5dSdKeue/knMqvZbkGWmZxdj5NT7FfJYzOs51Kq0Go5yVnSCPFann+WUdtKXGw+ndJnWR
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
"
x="0"
y="0"
width="463"
height="227"
id="image10" />
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="255"
height="297"
id="svg2">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<image
xlink:href="data:image/png;base64,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
CdEUip8QTaH4CdEUip8QTaH4CdEUip8QTeFXdz8VfBdi5CbHho1h/xh37h2OLRNd+HDFCBgIWLX9
V5HdylzNp7h0FgAAq1Z7SJ1Q/E8A3xUYuQbsoYDZjU6u5piKSyxgYWD5uBEjuACs2mpdYT7doUzf
xaXzCgPRRw8+XCHgDjgAtBGG/S1nNZ9i5ALWoJ8IHwC6JvpiEAmzB2tow6i15i7Ms6plrjD3XFgD
K/qXZj1YAwuuN8eqVttIHVD8rcbHjbMADBtvMmfOHt7YR/s2Kp/VHRYLA0cvpHMvjmAsFrij+lsH
w/42s/qNewCGcYxuziVd01TSVphPL+EsAFgDiJNf670CayBgwU0f9+J1/RBHnpQvI04Plx/RQdY1
fx6wwCu8S0UoL/EKCzz8AXIbQQ4CZ/428+cBi4pZ3NF34ExADCzA9TB/YUHIS4KefBwK383KlzlT
h/sOQojMwYE8LSj+Z8Z6b+DF0Rbr9WSvoDhfuHH360TZd9iGKHoh7YPibzO9E1gAFg9/diwgCrcf
mc8dhdFBKS+OYOAevzeiBmUfgLQCir/V9HBioSAMD58GuH6zVlgDgaFtwB1Nc+0AAHSPYRjpgWN1
t8DCMHDM9X7roPhbTs8awjYWcC7Fhsh9V+A7zsqfoXdf4hWA+2hKXt0tKu8ldM0+BtYCzqWL/LGm
C/Od/GgvfFphvVM3JUkb6ARBEDRZwenpKQDAtu0mq3n2yG/NxSRvzyUbd4ABe2BgMXIigRuwh328
vEl26g3LAlxXGQDUfErasI/jO9kGCwMRP8/Pt5Vv+D0Ox3Fwe3vbSNkUPyEtpknxM+wnRFMofkI0
heInRFMofkI0heInRFMofkI0heInRFMofkI0heInRFMofkI0heInRFMofkI0heInRFMofkI0heIn
RFMofkI0heInRFMofkI0heInRFMofkI0heInRFMofkI0heInRFMofkI0heInRFMofkI0heInRFMo
fkI0heInRFMofkI0heInRFMofkI0heInRFMofkI0heInRFMofkI0heInRFMofkI0heInRFMofkI0
5a9DG0C2xHchRm5ybNgY9o9x597h2DLRhQ9XjICBgNWrrdIdy1xhPr2EAxvDvoluXeaQWqH4nwC+
KzByDdhDATNW0mqOqbjEAhYGlo8bMYILwKqt1hXm013KDAcMFwCM2owhDcCwv+Ws5lOMXMAa9BPh
A0DXRF8MImH2YA3tmrXWhXm2S5k9WEJgaFP5bYfibzU+bpwFYNh4kxl29/DGPtq3UeSZwLC/zax+
4x6AYRznrpu7prqmjtbbCwDWAOLk13qvwBoIWHDTx714XT/EkSfly1jkh8uP6CDnGvJ04MzfZv48
YFExizv6DpwJiIEFuB7mLywIeUnQk4+T9flGvlVW6eG+gxCCwn8GUPzPjPXewIujLdbryV5BcT4f
rhD4daLsO5AnDcXfZnonsAAsHv7sWMACu2VN53NH0e49eVZQ/K2mhxMLBWF4+DTA9Zu1whqEu/fu
aJprB3l6UPwtp2cNYRsLOJdiQ+S+K/AdZ+Uv4HRf4hWA+9+hcld3i8p7CV2zj4G1gHPpYpux5s9D
1RrIvukEQRA0WcHp6SkAwLbtJqt59qzmU1w6aUGFu/VA6sUaGLAHBhYjJxK4AXvYx8ubZKfesCzA
dZUBQM2npA37OL6TbbAwEBYynglItiR5uVewG47j4Pb2tpGyKX5CWkyT4mfYT4imUPyEaArFT4im
UPyEaArFT4imUPyEaArFT4imUPyEaArFT4imUPyEaArFT4imUPyEaArFT4imUPyEaArFT4imUPyE
aArFT4imUPyEaArFT4imUPyEaArFT4imUPyEaArFT4imUPyEaArFT4imUPyEaArFT4imUPyEaArF
T4imUPyEaArFT4imUPyEaArFT4imUPyEaArFT4imUPyEaArFT4imUPyEaArFT4imUPyEaMpfhzaA
bInvQozc5NiwMewf4869w7FlogsfrhgBAwGrV1ulO5QZ5okttWq1h9QJxf8E8F2BkWvAHgqY3ejk
ao6puMQCFgaWj5tIcFZtta4wn1Ytc4X59BdOhIAFYDWf4nIkah6QSF0w7G85q/kUIxewBv1E+ADQ
NdEXg0iYPVhDG0atNXdhnlUs078DzizEOu+aZ7ANwP3l12oZqQfO/K3Gx42zAAwbbzJnzh7e2L/x
Z99m5dEzYaZOdPHy1YFsIaVQ/G1m9Rv3AAzjGN2cS7qmqaStMJ9ewlkAsAYQJ7/WewXWQMCCmz7u
xev6IY48KV9GnB4uP6KDnGuUBuD3PWC9Y8zfRhj2t5k/D1hUzOKOvgNnAmJgAa6H+QsLQl4S9OTj
ZHNuI98qq/Rw30EIsYXwAazusEBe1EIODcX/zFjvDbw42mK9nuwVFOfz4QqBXyfKvkMJ/s0Cxpka
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
RU5ErkJggg==
"
x="0"
y="0"
width="255"
height="297"
id="image10" />
</svg>

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -0,0 +1,200 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="214"
height="314"
id="svg2">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<image
xlink:href="data:image/png;base64,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
"
x="0"
y="0"
width="214"
height="314"
id="image10" />
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,215 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="239"
height="315"
id="svg2">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<image
xlink:href="data:image/png;base64,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
"
x="0"
y="0"
width="239"
height="315"
id="image10" />
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,13 @@
<html>
<head>
<meta http-equiv="refresh" content="0; URL=html/index.html">
</head>
<body>
Automatic redirection failed, please go to
<a href="html/index.html">html/index.html</a>.&nbsp;<hr>
<p><EFBFBD> Copyright Beman Dawes, 2001</p>
<p>Distributed under the Boost Software License, Version 1.0. (See accompanying
file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy
at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</p>
</body>
</html>

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
# Boost.Pool Library example Jamfile
#
# Copyright (c) 2008 James E. King III
#
# 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)
import os ;
import testing ;
project
: requirements
<library>/boost/system//boost_system
<define>BOOST_ALL_NO_LIB=1
<toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS
;
if ! [ os.environ VALGRIND_OPTS ]
{
test-suite "pool-examples"
: [ run time_pool_alloc.cpp ]
;
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,144 @@
// Copyright (C) 2000 Stephen Cleary
// Copyright (C) 2018 Peter Dimov
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org for updates, documentation, and revision history.
#ifndef BOOST_POOL_MUTEX_HPP
#define BOOST_POOL_MUTEX_HPP
#include <boost/config.hpp>
namespace boost{ namespace details{ namespace pool{
class null_mutex
{
private:
null_mutex(const null_mutex &);
void operator=(const null_mutex &);
public:
null_mutex() {}
static void lock() {}
static void unlock() {}
};
}}} // namespace boost::details::pool
#if !defined(BOOST_HAS_THREADS) || defined(BOOST_NO_MT) || defined(BOOST_POOL_NO_MT)
namespace boost{ namespace details{ namespace pool{
typedef null_mutex default_mutex;
}}} // namespace boost::details::pool
#elif !defined(BOOST_NO_CXX11_HDR_MUTEX)
#include <mutex>
namespace boost{ namespace details{ namespace pool{
typedef std::mutex default_mutex;
}}} // namespace boost::details::pool
#elif defined(BOOST_HAS_PTHREADS)
#include <boost/assert.hpp>
#include <pthread.h>
namespace boost{ namespace details{ namespace pool{
class pt_mutex
{
private:
pthread_mutex_t m_;
pt_mutex(pt_mutex const &);
pt_mutex & operator=(pt_mutex const &);
public:
pt_mutex()
{
BOOST_VERIFY( pthread_mutex_init( &m_, 0 ) == 0 );
}
~pt_mutex()
{
BOOST_VERIFY( pthread_mutex_destroy( &m_ ) == 0 );
}
void lock()
{
BOOST_VERIFY( pthread_mutex_lock( &m_ ) == 0 );
}
void unlock()
{
BOOST_VERIFY( pthread_mutex_unlock( &m_ ) == 0 );
}
};
typedef pt_mutex default_mutex;
}}} // namespace boost::details::pool
#elif defined(BOOST_HAS_WINTHREADS) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
#include <boost/winapi/critical_section.hpp>
namespace boost{ namespace details{ namespace pool{
class cs_mutex
{
private:
boost::winapi::CRITICAL_SECTION_ cs_;
cs_mutex(cs_mutex const &);
cs_mutex & operator=(cs_mutex const &);
public:
cs_mutex()
{
boost::winapi::InitializeCriticalSection( &cs_ );
}
~cs_mutex()
{
boost::winapi::DeleteCriticalSection( &cs_ );
}
void lock()
{
boost::winapi::EnterCriticalSection( &cs_ );
}
void unlock()
{
boost::winapi::LeaveCriticalSection( &cs_ );
}
};
typedef cs_mutex default_mutex;
}}} // namespace boost::details::pool
#else
// Use #define BOOST_DISABLE_THREADS to avoid this error
# error Unrecognized threading platform
#endif
#endif // #ifndef BOOST_POOL_MUTEX_HPP

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

Some files were not shown because too many files have changed in this diff Show More