Public Member Functions | Static Public Member Functions | Data Fields

# Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool > Struct Template Reference

Base class for all PoolItems. More...

`#include <pool_type.hpp>`

## Public Member Functions
void * | operator new (size_t size)
| Allocates space for new Titem.
void | operator delete (void *p)
| Marks Titem as free.
void * | operator new (size_t size, size_t index)
| Allocates space for new Titem with given index.
void * | operator new (size_t size, void *ptr)
| Allocates space for new Titem at given memory address.
## Static Public Member Functions
static bool | CanAllocateItem (size_t n=1)
| Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function().
static bool | CleaningPool ()
| Returns current state of pool cleaning - yes or no.
static bool | IsValidID (size_t index)
| Tests whether given index can be used to get valid (non-NULL) Titem.
static Titem * | Get (size_t index)
| Returs Titem with given index.
static Titem * | GetIfValid (size_t index)
| Returs Titem with given index.
static size_t | GetPoolSize ()
| Returns first unused index.
static size_t | GetNumItems ()
| Returns number of valid items in the pool.
static void | PostDestructor (size_t index)
| Dummy function called after destructor of each member.
## Data Fields
Tindex | index
| Index of this pool item.

## Detailed Description

### template<class Titem, typename Tindex, size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>
struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >

Base class for all PoolItems.

Template Parameters:

  | Tpool | The pool this item is going to be part of

Definition at line 136 of file pool_type.hpp.

## Member Function Documentation

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

static bool Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::CanAllocateItem | ( | size_t | n = `1` | ) | `[inline, static]`

Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function().

Tests whether we can allocate 'n' items

Parameters:

  | n | number of items we want to allocate

Returns:
  true if 'n' items can be allocated

Definition at line 205 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

static bool Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::CleaningPool | ( |  | ) | `[inline, static]`

Returns current state of pool cleaning - yes or no.

Returns:
  true iff we are cleaning the pool now

Definition at line 214 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

static Titem* Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::Get | ( | size_t | index | ) | `[inline, static]`

Returs Titem with given index.

Parameters:

  | index | of item to get

Returns:
  pointer to Titem

Precondition:
  index < this->first_unused

Reimplemented in SpecializedStation< T, Tis_waypoint >, SpecializedStation< Station, false >, and SpecializedStation< Waypoint, true >.

Definition at line 235 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

static Titem* Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::GetIfValid | ( | size_t | index | ) | `[inline, static]`

Returs Titem with given index.

Parameters:

  | index | of item to get

Returns:
  pointer to Titem

Note:
  returns NULL for invalid index

Reimplemented in SpecializedStation< T, Tis_waypoint >, SpecializedStation< Station, false >, and SpecializedStation< Waypoint, true >.

Definition at line 246 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

static size_t Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::GetNumItems | ( |  | ) | `[inline, static]`

Returns number of valid items in the pool.

Returns:
  number of valid items in the pool

Definition at line 265 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

static size_t Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::GetPoolSize | ( |  | ) | `[inline, static]`

Returns first unused index.

Useful when iterating over all pool items.

Returns:
  first unused index

Definition at line 256 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

static bool Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::IsValidID | ( | size_t | index | ) | `[inline, static]`

Tests whether given index can be used to get valid (non-NULL) Titem.

Parameters:

  | index | index to examine

Returns:
  true if PoolItem::Get(index) will return non-NULL pointer

Reimplemented in SpecializedStation< T, Tis_waypoint >, SpecializedStation< Station, false >, and SpecializedStation< Waypoint, true >.

Definition at line 224 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

void Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::operator delete | ( | void * | p | ) | `[inline]`

Marks Titem as free.

Its memory is released

Parameters:

  | p | memory to free

Note:
  the item has to be allocated in the pool!

Definition at line 155 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

void* Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::operator new | ( | size_t | size | ) | `[inline]`

Allocates space for new Titem.

Parameters:

  | size | size of Titem

Returns:
  pointer to allocated memory

Note:
  can never fail (return NULL), use CanAllocate() to check first!

Definition at line 145 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

void* Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::operator new | ( | size_t | size,
|  | void * | ptr |
| ) |  |  | `[inline]`

Allocates space for new Titem at given memory address.

Parameters:

  | size | size of Titem
  | ptr | where are we allocating the item?

Returns:
  pointer to allocated memory (== ptr)

Note:
  use of this is strongly discouraged

Precondition:
  the memory must not be allocated in the Pool!

Definition at line 183 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

void* Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::operator new | ( | size_t | size,
|  | size_t | index |
| ) |  |  | `[inline]`

Allocates space for new Titem with given index.

Parameters:

  | size | size of Titem
  | index | index of item

Returns:
  pointer to allocated memory

Note:
  can never fail (return NULL), use CanAllocate() to check first!

Precondition:
  index has to be unused! Else it will crash

Definition at line 170 of file pool_type.hpp.

template<class Titem , typename Tindex , size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > * Tpool>

static void Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::PostDestructor | ( | size_t | index | ) | `[inline, static]`

Dummy function called after destructor of each member.

If you want to use it, override it in PoolItem's subclass.

Parameters:

  | index | index of deleted item

Note:
  when this function is called, PoolItem::Get(index) == NULL.
  it's called only when !CleaningPool()

Reimplemented in BaseStation, Industry, and Town.

Definition at line 277 of file pool_type.hpp.

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

- src/core/pool_type.hpp