OpenTTD
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. 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-NULL) 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...
 

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
TpoolThe pool this item is going to be part of

Definition at line 146 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
nnumber of items we want to allocate
Returns
true if 'n' items can be allocated

Definition at line 216 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 225 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
indexof item to get
Returns
pointer to Titem
Precondition
index < this->first_unused

Definition at line 246 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
indexof item to get
Returns
pointer to Titem
Note
returns NULL for invalid index

Definition at line 257 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 276 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 267 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-NULL) Titem.

Parameters
indexindex to examine
Returns
true if PoolItem::Get(index) will return non-NULL pointer

Definition at line 235 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
pmemory to free
Note
the item has to be allocated in the pool!

Definition at line 165 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
sizesize of Titem
Returns
pointer to allocated memory
Note
can never fail (return NULL), use CanAllocate() to check first!

Definition at line 155 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
sizesize of Titem
indexindex 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 181 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
sizesize of Titem
ptrwhere 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 194 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
indexindex of deleted item
Note
when this function is called, PoolItem::Get(index) == NULL.
it's called only when !CleaningPool()

Definition at line 288 of file pool_type.hpp.


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