OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

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)
| Returns Titem with given index.
static Titem * | GetIfValid (size_t index)
| Returns 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 146 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 216 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 225 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

Returns Titem with given index.

Parameters

  index | of item to get

Returns
  pointer to Titem

Precondition
  index < this->first_unused

Reimplemented in SpecializedVehicle< T, Type >, SpecializedVehicle< DisasterVehicle, VEH_DISASTER >, SpecializedVehicle< Ship, VEH_SHIP >, SpecializedVehicle< Train, Type >, SpecializedVehicle< Aircraft, VEH_AIRCRAFT >, SpecializedVehicle< EffectVehicle, VEH_EFFECT >, SpecializedVehicle< RoadVehicle, Type >, 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 Titem* Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::GetIfValid | ( | size_t | index | ) |
| inline static

Returns Titem with given index.

Parameters

  index | of item to get

Returns
  pointer to Titem

Note
  returns NULL for invalid index

Reimplemented in SpecializedVehicle< T, Type >, SpecializedVehicle< DisasterVehicle, VEH_DISASTER >, SpecializedVehicle< Ship, VEH_SHIP >, SpecializedVehicle< Train, Type >, SpecializedVehicle< Aircraft, VEH_AIRCRAFT >, SpecializedVehicle< EffectVehicle, VEH_EFFECT >, SpecializedVehicle< RoadVehicle, Type >, SpecializedStation< T, Tis_waypoint >, SpecializedStation< Station, false >, and SpecializedStation< Waypoint, true >.

Definition at line 257 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 276 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 267 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 SpecializedVehicle< T, Type >, SpecializedVehicle< DisasterVehicle, VEH_DISASTER >, SpecializedVehicle< Ship, VEH_SHIP >, SpecializedVehicle< Train, Type >, SpecializedVehicle< Aircraft, VEH_AIRCRAFT >, SpecializedVehicle< EffectVehicle, VEH_EFFECT >, SpecializedVehicle< RoadVehicle, Type >, 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>

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 165 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 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,
|  | 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 181 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 194 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 Company, BaseStation, Town, and Industry.

Definition at line 288 of file pool_type.hpp.

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

- src/core/pool_type.hpp