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

OpenTTD Source 1.11.0-RC1

Public Types | 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 Types
typedef struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > | Pool
| Type of the pool this item is going to be part of.

## Public Member Functions
void * | operator new (size_t size)
| Allocates space for new Titem. More...
void | operator delete (void *p)
| Marks Titem as free. More...
void * | operator new (size_t size, size_t index)
| Allocates space for new Titem with given index. More...
void * | operator new (size_t size, void *ptr)
| Allocates space for new Titem at given memory address. More...

## Static Public Member Functions
static bool | CanAllocateItem (size_t n=1)
| Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function() More...
static bool | CleaningPool ()
| Returns current state of pool cleaning - yes or no. More...
static bool | IsValidID (size_t index)
| Tests whether given index can be used to get valid (non-nullptr) Titem. More...
static Titem * | Get (size_t index)
| Returns Titem with given index. More...
static Titem * | GetIfValid (size_t index)
| Returns Titem with given index. More...
static size_t | GetPoolSize ()
| Returns first unused index. More...
static size_t | GetNumItems ()
| Returns number of valid items in the pool. More...
static void | PostDestructor (size_t index)
| Dummy function called after destructor of each member. More...
static Pool::IterateWrapper< Titem > | Iterate (size_t from=0)
| Returns an iterable ensemble of all valid Titem. More...

## 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 226 of file pool_type.hpp.

## Member Function Documentation

## ◆ CanAllocateItem()

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` | ) |
| inlinestatic

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 299 of file pool_type.hpp.

## ◆ CleaningPool()

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 | ( |  | ) |
| inlinestatic

Returns current state of pool cleaning - yes or no.

Returns
  true iff we are cleaning the pool now

Definition at line 308 of file pool_type.hpp.

## ◆ Get()

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 | ) |
| inlinestatic

Returns Titem with given index.

Parameters

  index | of item to get

Returns
  pointer to Titem

Precondition
  index < this->first_unused

Definition at line 329 of file pool_type.hpp.

## ◆ GetIfValid()

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 | ) |
| inlinestatic

Returns Titem with given index.

Parameters

  index | of item to get

Returns
  pointer to Titem

Note
  returns nullptr for invalid index

Definition at line 340 of file pool_type.hpp.

## ◆ GetNumItems()

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 | ( |  | ) |
| inlinestatic

Returns number of valid items in the pool.

Returns
  number of valid items in the pool

Definition at line 359 of file pool_type.hpp.

## ◆ GetPoolSize()

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 | ( |  | ) |
| inlinestatic

Returns first unused index.

Useful when iterating over all pool items.

Returns
  first unused index

Definition at line 350 of file pool_type.hpp.

## ◆ IsValidID()

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 | ) |
| inlinestatic

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

Parameters

  index | index to examine

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

Definition at line 318 of file pool_type.hpp.

## ◆ Iterate()

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 Pool::IterateWrapper<Titem> Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::Iterate | ( | size_t | from = `0` | ) |
| inlinestatic

Returns an iterable ensemble of all valid Titem.

Parameters

  from | index of the first Titem to consider

Returns
  an iterable ensemble of all valid Titem

Definition at line 378 of file pool_type.hpp.

## ◆ operator delete()

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 248 of file pool_type.hpp.

## ◆ operator new() [1/3]

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 nullptr), use CanAllocate() to check first!

Definition at line 238 of file pool_type.hpp.

## ◆ operator new() [2/3]

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 nullptr), use CanAllocate() to check first!

Precondition
  index has to be unused! Else it will crash

Definition at line 264 of file pool_type.hpp.

## ◆ operator new() [3/3]

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 277 of file pool_type.hpp.

## ◆ PostDestructor()

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 | ) |
| inlinestatic

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) == nullptr.
  it's called only when !CleaningPool()

Definition at line 371 of file pool_type.hpp.

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

- src/core/pool_type.hpp