libcommonc++  0.7
StaticObjectPool< T > Class Template Reference

An object pool that allocates (presumably fixed-size) objects in a contiguous memory buffer. More...

#include <StaticObjectPool.h++>

Inheritance diagram for StaticObjectPool< T >:
Collaboration diagram for StaticObjectPool< T >:

Public Member Functions

 StaticObjectPool (uint_t size)
 Construct a new StaticObjectPool of the given size. More...
 
 ~StaticObjectPool ()
 Destructor. More...
 
T * reserve ()
 Reserve an object from the pool. More...
 
void release (T *elem)
 Release an object back to the pool. More...
 
uint_t getSize () const
 Get the size of the pool, i.e., the total number of objects (both reserved and available) in the pool. More...
 
uint_t getAvailable () const
 Get the number of available (unreserved) objects in the pool. More...
 

Protected Attributes

uint_t _size
 The size of the pool (i.e., the maximum number of objects managed by the pool). More...
 
uint_t _avail
 The number of objects currently available (not reserved) in the pool. More...
 

Detailed Description

template<typename T>
class ccxx::StaticObjectPool< T >

An object pool that allocates (presumably fixed-size) objects in a contiguous memory buffer.

This class is not suitable for objects which allocate additional member data on the heap, as this data will be created each time an object is reserved from the pool and destroyed when it is released back to the pool; use DynamicObjectPool in this case.

Author
Mark Lindner

Constructor & Destructor Documentation

◆ StaticObjectPool()

Construct a new StaticObjectPool of the given size.

Parameters
sizeThe number of objects to allocate in the pool.

◆ ~StaticObjectPool()

Destructor.

Deallocates all of the objects in the pool. Destructors will not be called for any objects still allocated from the pool; therefore it is a programmig error to destroy a StaticObjectPool before releasing all of its objects.

Member Function Documentation

◆ getAvailable()

uint_t getAvailable ( ) const
inlineinherited

Get the number of available (unreserved) objects in the pool.

◆ getSize()

uint_t getSize ( ) const
inlineinherited

Get the size of the pool, i.e., the total number of objects (both reserved and available) in the pool.

◆ release()

void release ( T *  elem)
virtual

Release an object back to the pool.

The object's destructor is called before the object is released back to the pool.

Parameters
elemThe object to release.
Exceptions
ObjectPoolExceptionIf elem is NULL.

Implements ObjectPool< T >.

◆ reserve()

T* reserve ( )
virtual

Reserve an object from the pool.

The object's constructor is called before the object is returned.

Returns
A pointer to the reserved object.
Exceptions
ObjectPoolExceptionIf there are no more objects available in the pool.

Implements ObjectPool< T >.

Member Data Documentation

◆ _avail

uint_t _avail
protectedinherited

The number of objects currently available (not reserved) in the pool.

◆ _size

uint_t _size
protectedinherited

The size of the pool (i.e., the maximum number of objects managed by the pool).


The documentation for this class was generated from the following file: