Loading...
Searching...
No Matches
pool

## Classes

class | etl::generic_pool< VTypeSize, VAlignment, VSize >
class | etl::generic_pool_ext< VTypeSize, VAlignment >
class | etl::pool_exception
class | etl::pool_no_allocation
class | etl::pool_object_not_in_pool
class | etl::pool_element_size
class | etl::ipool
class | etl::pool< T, VSize >
class | etl::pool_ext< T >

## Detailed Description

A fixed capacity pool.

## Class Documentation

## etl::generic_pool

class etl::generic_pool

template<size_t VTypeSize, size_t VAlignment, size_t VSize>
class etl::generic_pool< VTypeSize, VAlignment, VSize >

A templated abstract pool implementation that uses a fixed size pool.

### Public Member Functions

| generic_pool ()
| Constructor.
template<typename U>
U * | allocate ()
template<typename U>
U * | create ()
template<typename U, typename T1>
U * | create (const T1 &value1)
template<typename U, typename T1, typename T2>
U * | create (const T1 &value1, const T2 &value2)
template<typename U, typename T1, typename T2, typename T3>
U * | create (const T1 &value1, const T2 &value2, const T3 &value3)
template<typename U, typename T1, typename T2, typename T3, typename T4>
U * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
template<typename U>
void | destroy (const U *const p_object)
Public Member Functions inherited from etl::ipool
iterator | begin ()
iterator | end ()
const_iterator | begin () const
const_iterator | end () const
const_iterator | cbegin () const
const_iterator | cend () const
template<typename T>
T * | allocate ()
template<typename T>
T * | create ()
template<typename T, typename T1>
T * | create (const T1 &value1)
template<typename T, typename T1, typename T2>
T * | create (const T1 &value1, const T2 &value2)
template<typename T, typename T1, typename T2, typename T3>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3)
template<typename T, typename T1, typename T2, typename T3, typename T4>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
template<typename T>
void | destroy (const T *const p_object)
void | release (const void *const p_object)
void | release_all ()
| Release all objects in the pool.
bool | is_in_pool (const void *const p_object) const
size_t | max_size () const
| Returns the maximum number of items in the pool.
size_t | max_item_size () const
| Returns the maximum size of an item in the pool.
size_t | capacity () const
| Returns the maximum number of items in the pool.
size_t | available () const
| Returns the number of free items in the pool.
size_t | size () const
| Returns the number of allocated items in the pool.
bool | empty () const
bool | full () const

### Static Public Attributes

static ETL_CONSTANT size_t | SIZE = VSize
static ETL_CONSTANT size_t | ALIGNMENT = VAlignment
static ETL_CONSTANT size_t | TYPE_SIZE = VTypeSize

## Additional Inherited Members

Public Types inherited from etl::ipool
typedef size_t | size_type
typedef ipool_iterator< false > | iterator
Protected Member Functions inherited from etl::ipool
| ipool (char *p_buffer_, uint32_t item_size_, uint32_t max_size_)
| Constructor.
| ~ipool ()
| Destructor.

#### Member Function Documentation

## allocate()

template<size_t VTypeSize, size_t VAlignment, size_t VSize>
template<typename U>

U * etl::generic_pool< VTypeSize, VAlignment, VSize >::allocate | ( |  | ) |

inline

Allocate an object from the pool. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned. Static asserts if the specified type is too large for the pool.

## create() [1/5]

template<size_t VTypeSize, size_t VAlignment, size_t VSize>
template<typename U>

U * etl::generic_pool< VTypeSize, VAlignment, VSize >::create | ( |  | ) |

inline

Allocate storage for an object from the pool and create with default. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [2/5]

template<size_t VTypeSize, size_t VAlignment, size_t VSize>
template<typename U, typename T1>

U * etl::generic_pool< VTypeSize, VAlignment, VSize >::create | ( | const T1 & | value1 | ) |

inline

Allocate storage for an object from the pool and create with 1 parameter. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [3/5]

template<size_t VTypeSize, size_t VAlignment, size_t VSize>
template<typename U, typename T1, typename T2>

U * etl::generic_pool< VTypeSize, VAlignment, VSize >::create | ( | const T1 & | value1,
|  | const T2 & | value2 )

inline

Allocate storage for an object from the pool and create with 2 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [4/5]

template<size_t VTypeSize, size_t VAlignment, size_t VSize>
template<typename U, typename T1, typename T2, typename T3>

U * etl::generic_pool< VTypeSize, VAlignment, VSize >::create | ( | const T1 & | value1,
|  | const T2 & | value2,
|  | const T3 & | value3 )

inline

Allocate storage for an object from the pool and create with 3 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [5/5]

template<size_t VTypeSize, size_t VAlignment, size_t VSize>
template<typename U, typename T1, typename T2, typename T3, typename T4>

U * etl::generic_pool< VTypeSize, VAlignment, VSize >::create | ( | const T1 & | value1,
|  | const T2 & | value2,
|  | const T3 & | value3,
|  | const T4 & | value4 )

inline

Allocate storage for an object from the pool and create with 4 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## destroy()

template<size_t VTypeSize, size_t VAlignment, size_t VSize>
template<typename U>

void etl::generic_pool< VTypeSize, VAlignment, VSize >::destroy | ( | const U *const | p_object | ) |

inline

Destroys the object. Undefined behaviour if the pool does not contain a 'U'.

Parameters

  p_object | A pointer to the object to be destroyed.

## etl::generic_pool_ext

class etl::generic_pool_ext

template<size_t VTypeSize, size_t VAlignment>
class etl::generic_pool_ext< VTypeSize, VAlignment >

A templated abstract pool implementation that uses a fixed size pool. The storage for the pool is supplied externally.

### Public Types

typedef etl::aligned_storage< sizeof(element_internal), etl::alignment_of< element_internal >::value >::type | element
Public Types inherited from etl::ipool
typedef size_t | size_type
typedef ipool_iterator< false > | iterator

### Public Member Functions

| generic_pool_ext (element *buffer, size_t size)
| Constructor.
template<typename U>
U * | allocate ()
template<typename U>
U * | create ()
template<typename U, typename T1>
U * | create (const T1 &value1)
template<typename U, typename T1, typename T2>
U * | create (const T1 &value1, const T2 &value2)
template<typename U, typename T1, typename T2, typename T3>
U * | create (const T1 &value1, const T2 &value2, const T3 &value3)
template<typename U, typename T1, typename T2, typename T3, typename T4>
U * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
template<typename U>
void | destroy (const U *const p_object)
Public Member Functions inherited from etl::ipool
iterator | begin ()
iterator | end ()
const_iterator | begin () const
const_iterator | end () const
const_iterator | cbegin () const
const_iterator | cend () const
template<typename T>
T * | allocate ()
template<typename T>
T * | create ()
template<typename T, typename T1>
T * | create (const T1 &value1)
template<typename T, typename T1, typename T2>
T * | create (const T1 &value1, const T2 &value2)
template<typename T, typename T1, typename T2, typename T3>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3)
template<typename T, typename T1, typename T2, typename T3, typename T4>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
template<typename T>
void | destroy (const T *const p_object)
void | release (const void *const p_object)
void | release_all ()
| Release all objects in the pool.
bool | is_in_pool (const void *const p_object) const
size_t | max_size () const
| Returns the maximum number of items in the pool.
size_t | max_item_size () const
| Returns the maximum size of an item in the pool.
size_t | capacity () const
| Returns the maximum number of items in the pool.
size_t | available () const
| Returns the number of free items in the pool.
size_t | size () const
| Returns the number of allocated items in the pool.
bool | empty () const
bool | full () const

### Static Public Attributes

static ETL_CONSTANT size_t | ALIGNMENT = VAlignment
static ETL_CONSTANT size_t | TYPE_SIZE = VTypeSize

## Additional Inherited Members

Protected Member Functions inherited from etl::ipool
| ipool (char *p_buffer_, uint32_t item_size_, uint32_t max_size_)
| Constructor.
| ~ipool ()
| Destructor.

#### Member Function Documentation

## allocate()

template<size_t VTypeSize, size_t VAlignment>
template<typename U>

U * etl::generic_pool_ext< VTypeSize, VAlignment >::allocate | ( |  | ) |

inline

Allocate an object from the pool. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned. Static asserts if the specified type is too large for the pool.

## create() [1/5]

template<size_t VTypeSize, size_t VAlignment>
template<typename U>

U * etl::generic_pool_ext< VTypeSize, VAlignment >::create | ( |  | ) |

inline

Allocate storage for an object from the pool and create with default. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [2/5]

template<size_t VTypeSize, size_t VAlignment>
template<typename U, typename T1>

U * etl::generic_pool_ext< VTypeSize, VAlignment >::create | ( | const T1 & | value1 | ) |

inline

Allocate storage for an object from the pool and create with 1 parameter. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [3/5]

template<size_t VTypeSize, size_t VAlignment>
template<typename U, typename T1, typename T2>

U * etl::generic_pool_ext< VTypeSize, VAlignment >::create | ( | const T1 & | value1,
|  | const T2 & | value2 )

inline

Allocate storage for an object from the pool and create with 2 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [4/5]

template<size_t VTypeSize, size_t VAlignment>
template<typename U, typename T1, typename T2, typename T3>

U * etl::generic_pool_ext< VTypeSize, VAlignment >::create | ( | const T1 & | value1,
|  | const T2 & | value2,
|  | const T3 & | value3 )

inline

Allocate storage for an object from the pool and create with 3 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [5/5]

template<size_t VTypeSize, size_t VAlignment>
template<typename U, typename T1, typename T2, typename T3, typename T4>

U * etl::generic_pool_ext< VTypeSize, VAlignment >::create | ( | const T1 & | value1,
|  | const T2 & | value2,
|  | const T3 & | value3,
|  | const T4 & | value4 )

inline

Allocate storage for an object from the pool and create with 4 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## destroy()

template<size_t VTypeSize, size_t VAlignment>
template<typename U>

void etl::generic_pool_ext< VTypeSize, VAlignment >::destroy | ( | const U *const | p_object | ) |

inline

Destroys the object. Undefined behaviour if the pool does not contain a 'U'.

Parameters

  p_object | A pointer to the object to be destroyed.

## etl::pool_exception

class etl::pool_exception

The base class for pool exceptions.

### Public Member Functions

| pool_exception (string_type reason_, string_type file_name_, numeric_type line_number_)
Public Member Functions inherited from etl::exception
ETL_EXCEPTION_CONSTEXPR | exception (string_type reason_, string_type, numeric_type)
| Constructor.
ETL_EXCEPTION_CONSTEXPR string_type | what () const ETL_NOEXCEPT ETL_EXCEPTION_OVERRIDE
ETL_EXCEPTION_CONSTEXPR string_type | file_name () const
ETL_EXCEPTION_CONSTEXPR numeric_type | line_number () const

## Additional Inherited Members

Public Types inherited from etl::exception
typedef const char * | string_type
typedef int | numeric_type

## etl::pool_no_allocation

class etl::pool_no_allocation

The exception thrown when the pool has no more free items.

### Public Member Functions

| pool_no_allocation (string_type file_name_, numeric_type line_number_)
Public Member Functions inherited from etl::pool_exception
| pool_exception (string_type reason_, string_type file_name_, numeric_type line_number_)
Public Member Functions inherited from etl::exception
ETL_EXCEPTION_CONSTEXPR | exception (string_type reason_, string_type, numeric_type)
| Constructor.
ETL_EXCEPTION_CONSTEXPR string_type | what () const ETL_NOEXCEPT ETL_EXCEPTION_OVERRIDE
ETL_EXCEPTION_CONSTEXPR string_type | file_name () const
ETL_EXCEPTION_CONSTEXPR numeric_type | line_number () const

## Additional Inherited Members

Public Types inherited from etl::exception
typedef const char * | string_type
typedef int | numeric_type

## etl::pool_object_not_in_pool

class etl::pool_object_not_in_pool

The exception thrown when an object is released which does not belong to the pool.

### Public Member Functions

| pool_object_not_in_pool (string_type file_name_, numeric_type line_number_)
Public Member Functions inherited from etl::pool_exception
| pool_exception (string_type reason_, string_type file_name_, numeric_type line_number_)
Public Member Functions inherited from etl::exception
ETL_EXCEPTION_CONSTEXPR | exception (string_type reason_, string_type, numeric_type)
| Constructor.
ETL_EXCEPTION_CONSTEXPR string_type | what () const ETL_NOEXCEPT ETL_EXCEPTION_OVERRIDE
ETL_EXCEPTION_CONSTEXPR string_type | file_name () const
ETL_EXCEPTION_CONSTEXPR numeric_type | line_number () const

## Additional Inherited Members

Public Types inherited from etl::exception
typedef const char * | string_type
typedef int | numeric_type

## etl::pool_element_size

class etl::pool_element_size

The exception thrown when an the type requested is larger than the element size.

### Public Member Functions

| pool_element_size (string_type file_name_, numeric_type line_number_)
Public Member Functions inherited from etl::pool_exception
| pool_exception (string_type reason_, string_type file_name_, numeric_type line_number_)
Public Member Functions inherited from etl::exception
ETL_EXCEPTION_CONSTEXPR | exception (string_type reason_, string_type, numeric_type)
| Constructor.
ETL_EXCEPTION_CONSTEXPR string_type | what () const ETL_NOEXCEPT ETL_EXCEPTION_OVERRIDE
ETL_EXCEPTION_CONSTEXPR string_type | file_name () const
ETL_EXCEPTION_CONSTEXPR numeric_type | line_number () const

## Additional Inherited Members

Public Types inherited from etl::exception
typedef const char * | string_type
typedef int | numeric_type

## etl::ipool

class etl::ipool

### Public Types

typedef size_t | size_type
typedef ipool_iterator< false > | iterator

### Public Member Functions

iterator | begin ()
iterator | end ()
const_iterator | begin () const
const_iterator | end () const
const_iterator | cbegin () const
const_iterator | cend () const
template<typename T>
T * | allocate ()
template<typename T>
T * | create ()
template<typename T, typename T1>
T * | create (const T1 &value1)
template<typename T, typename T1, typename T2>
T * | create (const T1 &value1, const T2 &value2)
template<typename T, typename T1, typename T2, typename T3>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3)
template<typename T, typename T1, typename T2, typename T3, typename T4>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
template<typename T>
void | destroy (const T *const p_object)
void | release (const void *const p_object)
void | release_all ()
| Release all objects in the pool.
bool | is_in_pool (const void *const p_object) const
size_t | max_size () const
| Returns the maximum number of items in the pool.
size_t | max_item_size () const
| Returns the maximum size of an item in the pool.
size_t | capacity () const
| Returns the maximum number of items in the pool.
size_t | available () const
| Returns the number of free items in the pool.
size_t | size () const
| Returns the number of allocated items in the pool.
bool | empty () const
bool | full () const

### Protected Member Functions

| ipool (char *p_buffer_, uint32_t item_size_, uint32_t max_size_)
| Constructor.
| ~ipool ()
| Destructor.

### Friends

template<bool is_const>
class | ipool_iterator

#### Member Function Documentation

## allocate()

template<typename T>

T * etl::ipool::allocate | ( |  | ) |

inline

Allocate storage for an object from the pool. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [1/2]

template<typename T>

T * etl::ipool::create | ( |  | ) |

inline

Allocate storage for an object from the pool and create default. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [2/2]

template<typename T, typename T1>

T * etl::ipool::create | ( | const T1 & | value1 | ) |

inline

Allocate storage for an object from the pool and create with 1 parameter. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## destroy()

template<typename T>

void etl::ipool::destroy | ( | const T *const | p_object | ) |

inline

Destroys the object. Undefined behaviour if the pool does not contain a 'T'.

Parameters

  p_object | A pointer to the object to be destroyed.

## empty()

bool etl::ipool::empty | ( |  | ) | const

inline

Checks to see if there are no allocated items in the pool.

Returns
  true if there are none allocated.

## full()

bool etl::ipool::full | ( |  | ) | const

inline

Checks to see if there are no free items in the pool.

Returns
  true if there are none free.

## is_in_pool()

bool etl::ipool::is_in_pool | ( | const void *const | p_object | ) | const

inline

Check to see if the object belongs to the pool.

Parameters

  p_object | A pointer to the object to be checked.

Returns
  true< > if it does, otherwise false

## release()

void etl::ipool::release | ( | const void *const | p_object | ) |

inline

Release an object in the pool. If asserts or exceptions are enabled and the object does not belong to this pool then an etl::pool_object_not_in_pool is thrown.

Parameters

  p_object | A pointer to the object to be released.

## etl::pool

class etl::pool

template<typename T, const size_t VSize>
class etl::pool< T, VSize >

A templated pool implementation that uses a fixed size pool.

### Public Member Functions

| pool ()
| Constructor.
T * | allocate ()
T * | create ()
template<typename T1>
T * | create (const T1 &value1)
template<typename T1, typename T2>
T * | create (const T1 &value1, const T2 &value2)
template<typename T1, typename T2, typename T3>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3)
template<typename T1, typename T2, typename T3, typename T4>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
template<typename U>
void | release (const U *const p_object)
template<typename U>
void | destroy (const U *const p_object)
Public Member Functions inherited from etl::generic_pool< sizeof(T), etl::alignment_of< T >::value, VSize >
| generic_pool ()
| Constructor.
U * | allocate ()
U * | create ()
U * | create (const T1 &value1)
U * | create (const T1 &value1, const T2 &value2)
U * | create (const T1 &value1, const T2 &value2, const T3 &value3)
U * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
void | destroy (const U *const p_object)
Public Member Functions inherited from etl::ipool
iterator | begin ()
iterator | end ()
const_iterator | begin () const
const_iterator | end () const
const_iterator | cbegin () const
const_iterator | cend () const
template<typename T>
T * | allocate ()
template<typename T>
T * | create ()
template<typename T, typename T1>
T * | create (const T1 &value1)
template<typename T, typename T1, typename T2>
T * | create (const T1 &value1, const T2 &value2)
template<typename T, typename T1, typename T2, typename T3>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3)
template<typename T, typename T1, typename T2, typename T3, typename T4>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
template<typename T>
void | destroy (const T *const p_object)
void | release (const void *const p_object)
void | release_all ()
| Release all objects in the pool.
bool | is_in_pool (const void *const p_object) const
size_t | max_size () const
| Returns the maximum number of items in the pool.
size_t | max_item_size () const
| Returns the maximum size of an item in the pool.
size_t | capacity () const
| Returns the maximum number of items in the pool.
size_t | available () const
| Returns the number of free items in the pool.
size_t | size () const
| Returns the number of allocated items in the pool.
bool | empty () const
bool | full () const

## Additional Inherited Members

Public Types inherited from etl::ipool
typedef size_t | size_type
typedef ipool_iterator< false > | iterator
Static Public Attributes inherited from etl::generic_pool< sizeof(T), etl::alignment_of< T >::value, VSize >
static ETL_CONSTANT size_t | SIZE
static ETL_CONSTANT size_t | ALIGNMENT
static ETL_CONSTANT size_t | TYPE_SIZE
Protected Member Functions inherited from etl::ipool
| ipool (char *p_buffer_, uint32_t item_size_, uint32_t max_size_)
| Constructor.
| ~ipool ()
| Destructor.

#### Member Function Documentation

## allocate()

template<typename T, const size_t VSize>

T * etl::pool< T, VSize >::allocate | ( |  | ) |

inline

Allocate an object from the pool. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned. Static asserts if the specified type is too large for the pool.

## create() [1/5]

template<typename T, const size_t VSize>

T * etl::pool< T, VSize >::create | ( |  | ) |

inline

Allocate storage for an object from the pool and create with default. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [2/5]

template<typename T, const size_t VSize>
template<typename T1>

T * etl::pool< T, VSize >::create | ( | const T1 & | value1 | ) |

inline

Allocate storage for an object from the pool and create with 1 parameter. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [3/5]

template<typename T, const size_t VSize>
template<typename T1, typename T2>

T * etl::pool< T, VSize >::create | ( | const T1 & | value1,
|  | const T2 & | value2 )

inline

Allocate storage for an object from the pool and create with 2 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [4/5]

template<typename T, const size_t VSize>
template<typename T1, typename T2, typename T3>

T * etl::pool< T, VSize >::create | ( | const T1 & | value1,
|  | const T2 & | value2,
|  | const T3 & | value3 )

inline

Allocate storage for an object from the pool and create with 3 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [5/5]

template<typename T, const size_t VSize>
template<typename T1, typename T2, typename T3, typename T4>

T * etl::pool< T, VSize >::create | ( | const T1 & | value1,
|  | const T2 & | value2,
|  | const T3 & | value3,
|  | const T4 & | value4 )

inline

Allocate storage for an object from the pool and create with 4 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## destroy()

template<typename T, const size_t VSize>
template<typename U>

void etl::pool< T, VSize >::destroy | ( | const U *const | p_object | ) |

inline

Destroys the object. Undefined behaviour if the pool does not contain a 'U' object derived from 'U'.

Parameters

  p_object | A pointer to the object to be destroyed.

## release()

template<typename T, const size_t VSize>
template<typename U>

void etl::pool< T, VSize >::release | ( | const U *const | p_object | ) |

inline

Releases the object. Undefined behaviour if the pool does not contain a 'U' object derived from 'U'.

Parameters

  p_object | A pointer to the object to be destroyed.

## etl::pool_ext

class etl::pool_ext

template<typename T>
class etl::pool_ext< T >

A templated pool implementation that uses a fixed size pool. The storage for the pool is supplied externally.

### Public Member Functions

| pool_ext (typename base_t::element *buffer, size_t size)
| Constructor.
T * | allocate ()
T * | create ()
template<typename T1>
T * | create (const T1 &value1)
template<typename T1, typename T2>
T * | create (const T1 &value1, const T2 &value2)
template<typename T1, typename T2, typename T3>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3)
template<typename T1, typename T2, typename T3, typename T4>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
template<typename U>
void | release (const U *const p_object)
template<typename U>
void | destroy (const U *const p_object)
Public Member Functions inherited from etl::generic_pool_ext< sizeof(T), etl::alignment_of< T >::value >
| generic_pool_ext (element *buffer, size_t size)
| Constructor.
U * | allocate ()
U * | create ()
U * | create (const T1 &value1)
U * | create (const T1 &value1, const T2 &value2)
U * | create (const T1 &value1, const T2 &value2, const T3 &value3)
U * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
void | destroy (const U *const p_object)
Public Member Functions inherited from etl::ipool
iterator | begin ()
iterator | end ()
const_iterator | begin () const
const_iterator | end () const
const_iterator | cbegin () const
const_iterator | cend () const
template<typename T>
T * | allocate ()
template<typename T>
T * | create ()
template<typename T, typename T1>
T * | create (const T1 &value1)
template<typename T, typename T1, typename T2>
T * | create (const T1 &value1, const T2 &value2)
template<typename T, typename T1, typename T2, typename T3>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3)
template<typename T, typename T1, typename T2, typename T3, typename T4>
T * | create (const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
template<typename T>
void | destroy (const T *const p_object)
void | release (const void *const p_object)
void | release_all ()
| Release all objects in the pool.
bool | is_in_pool (const void *const p_object) const
size_t | max_size () const
| Returns the maximum number of items in the pool.
size_t | max_item_size () const
| Returns the maximum size of an item in the pool.
size_t | capacity () const
| Returns the maximum number of items in the pool.
size_t | available () const
| Returns the number of free items in the pool.
size_t | size () const
| Returns the number of allocated items in the pool.
bool | empty () const
bool | full () const

## Additional Inherited Members

Public Types inherited from etl::generic_pool_ext< sizeof(T), etl::alignment_of< T >::value >
typedef etl::aligned_storage< sizeof(element_internal), etl::alignment_of< element_internal >::value >::type | element
Public Types inherited from etl::ipool
typedef size_t | size_type
typedef ipool_iterator< false > | iterator
Static Public Attributes inherited from etl::generic_pool_ext< sizeof(T), etl::alignment_of< T >::value >
static ETL_CONSTANT size_t | ALIGNMENT
static ETL_CONSTANT size_t | TYPE_SIZE
Protected Member Functions inherited from etl::ipool
| ipool (char *p_buffer_, uint32_t item_size_, uint32_t max_size_)
| Constructor.
| ~ipool ()
| Destructor.

#### Member Function Documentation

## allocate()

template<typename T>

T * etl::pool_ext< T >::allocate | ( |  | ) |

inline

Allocate an object from the pool. Uses the default constructor. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned. Static asserts if the specified type is too large for the pool.

## create() [1/5]

template<typename T>

T * etl::pool_ext< T >::create | ( |  | ) |

inline

Allocate storage for an object from the pool and create with default. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [2/5]

template<typename T>
template<typename T1>

T * etl::pool_ext< T >::create | ( | const T1 & | value1 | ) |

inline

Allocate storage for an object from the pool and create with 1 parameter. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [3/5]

template<typename T>
template<typename T1, typename T2>

T * etl::pool_ext< T >::create | ( | const T1 & | value1,
|  | const T2 & | value2 )

inline

Allocate storage for an object from the pool and create with 2 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [4/5]

template<typename T>
template<typename T1, typename T2, typename T3>

T * etl::pool_ext< T >::create | ( | const T1 & | value1,
|  | const T2 & | value2,
|  | const T3 & | value3 )

inline

Allocate storage for an object from the pool and create with 3 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## create() [5/5]

template<typename T>
template<typename T1, typename T2, typename T3, typename T4>

T * etl::pool_ext< T >::create | ( | const T1 & | value1,
|  | const T2 & | value2,
|  | const T3 & | value3,
|  | const T4 & | value4 )

inline

Allocate storage for an object from the pool and create with 4 parameters. If asserts or exceptions are enabled and there are no more free items an etl::pool_no_allocation if thrown, otherwise a null pointer is returned.

## destroy()

template<typename T>
template<typename U>

void etl::pool_ext< T >::destroy | ( | const U *const | p_object | ) |

inline

Destroys the object. Undefined behaviour if the pool does not contain a 'U' object derived from 'U'.

Parameters

  p_object | A pointer to the object to be destroyed.

## release()

template<typename T>
template<typename U>

void etl::pool_ext< T >::release | ( | const U *const | p_object | ) |

inline

Releases the object. Undefined behaviour if the pool does not contain a 'U' object derived from 'U'.

Parameters

  p_object | A pointer to the object to be destroyed.