A fixed-count lock-free pool of the same type of object. Supports both bare- and shared-pointer allocation. More...
#include <object_pool.h>
Classes | |
struct | Deleter |
Public Member Functions | |
T * | allocate () |
Allocate a single object from the pool, returning a bare pointer. More... | |
boost::shared_ptr< T > | allocateShared () |
Allocate a single object from the pool, returning a shared pointer. More... | |
void | free (T const *t) |
Return an object allocated through allocateBare() to the pool. More... | |
bool | hasOutstandingAllocations () |
Returns whether or not this ObjectPool has any outstanding allocations. More... | |
void | initialize (uint32_t count, const T &tmpl) |
initialize the pool. Only use with the default constructor More... | |
boost::shared_ptr< T > | makeShared (T *t) |
Make a shared_ptr out of a bare pointer allocated by this pool. More... | |
boost::shared_ptr< T const > | makeShared (T const *t) |
Make a shared_ptr out of a bare pointer allocated by this pool. More... | |
ObjectPool () | |
Default constructor. Must call initialize() before calling allocate() More... | |
ObjectPool (uint32_t count, const T &tmpl) | |
Constructor with initialization. More... | |
bool | owns (const boost::shared_ptr< T const > &t) |
Returns whether or not this pool owns the provided object. More... | |
bool | owns (T const *t) |
Returns whether or not this pool owns the provided object. More... | |
T * | removeShared (const boost::shared_ptr< T > &t) |
"Remove" a shared pointer allocated by this pool, turning it into a bare pointer. shared_ptrs held to this object will no longer delete the object when the go out of scope. Generally dangerous and not to be used lightly, this will probably go away in the future. More... | |
T const * | removeShared (const boost::shared_ptr< T const > &t) |
"Remove" a shared pointer allocated by this pool, turning it into a bare pointer. shared_ptrs held to this object will no longer delete the object when the go out of scope. Generally dangerous and not to be used lightly, this will probably go away in the future. More... | |
~ObjectPool () | |
Private Member Functions | |
template<typename T2 > | |
boost::shared_ptr< T2 > | makeSharedImpl (T2 *t) |
Private Attributes | |
FreeList | freelist_ |
bool | initialized_ |
FreeList | sp_storage_freelist_ |
A fixed-count lock-free pool of the same type of object. Supports both bare- and shared-pointer allocation.
T | the object type |
Definition at line 80 of file object_pool.h.
|
inline |
Default constructor. Must call initialize() before calling allocate()
Definition at line 260 of file object_pool.h.
|
inline |
Constructor with initialization.
count | The number of objects in the pool |
tmpl | The object template to use to construct the objects |
Definition at line 270 of file object_pool.h.
|
inline |
Definition at line 276 of file object_pool.h.
|
inline |
Allocate a single object from the pool, returning a bare pointer.
Definition at line 379 of file object_pool.h.
|
inline |
Allocate a single object from the pool, returning a shared pointer.
Definition at line 310 of file object_pool.h.
|
inline |
Return an object allocated through allocateBare() to the pool.
t | An object that was allocated with allocateBare() |
Definition at line 388 of file object_pool.h.
|
inline |
Returns whether or not this ObjectPool has any outstanding allocations.
Definition at line 285 of file object_pool.h.
|
inline |
initialize the pool. Only use with the default constructor
count | The number of objects in the pool |
tmpl | The object template to use to construct the objects |
Definition at line 295 of file object_pool.h.
|
inline |
Make a shared_ptr out of a bare pointer allocated by this pool.
Definition at line 333 of file object_pool.h.
|
inline |
Make a shared_ptr out of a bare pointer allocated by this pool.
Definition at line 341 of file object_pool.h.
|
inlineprivate |
Definition at line 412 of file object_pool.h.
|
inline |
Returns whether or not this pool owns the provided object.
Definition at line 404 of file object_pool.h.
|
inline |
Returns whether or not this pool owns the provided object.
Definition at line 396 of file object_pool.h.
|
inline |
"Remove" a shared pointer allocated by this pool, turning it into a bare pointer. shared_ptrs held to this object will no longer delete the object when the go out of scope. Generally dangerous and not to be used lightly, this will probably go away in the future.
Definition at line 351 of file object_pool.h.
|
inline |
"Remove" a shared pointer allocated by this pool, turning it into a bare pointer. shared_ptrs held to this object will no longer delete the object when the go out of scope. Generally dangerous and not to be used lightly, this will probably go away in the future.
Definition at line 365 of file object_pool.h.
|
private |
Definition at line 429 of file object_pool.h.
|
private |
Definition at line 427 of file object_pool.h.
|
private |
Definition at line 430 of file object_pool.h.