|
OpenTTD
|
Minimal stack that uses a pool to avoid pointers. More...
#include <smallstack_type.hpp>
Data Structures | |
| struct | PooledSmallStack |
| SmallStack item that can be kept in a pool. More... | |
Public Types | |
|
typedef SmallStackItem< Titem, Tindex > | Item |
|
typedef SimplePool < PooledSmallStack, Tindex, Tgrowth_step, Tmax_size > | SmallStackPool |
Public Member Functions | |
| SmallStack (const Titem &value=Tinvalid) | |
| Constructor for a stack with one or two items in it. | |
| ~SmallStack () | |
| Remove the head of stack and all other items members that are unique to it. | |
| SmallStack (const SmallStack &other) | |
| Shallow copy the stack, marking the first item as branched. | |
| SmallStack & | operator= (const SmallStack &other) |
| Shallow copy the stack, marking the first item as branched. | |
| void | Push (const Titem &item) |
| Pushes a new item onto the stack if there is still space in the underlying pool. | |
| Titem | Pop () |
| Pop an item from the stack. | |
| bool | IsEmpty () const |
| Check if the stack is empty. | |
| bool | Contains (const Titem &item) const |
| Check if the given item is contained in the stack. | |
Public Member Functions inherited from SmallStackItem< Titem, Tindex > | |
| SmallStackItem (const Titem &value, Tindex next) | |
| Create a new item. | |
Protected Member Functions | |
| void | Branch () |
| Create a branch in the pool if necessary. | |
Static Protected Attributes | |
| static SmallStackPool | _pool = StationIDStackPool() |
Additional Inherited Members | |
Data Fields inherited from SmallStackItem< Titem, Tindex > | |
| Tindex | next |
| Pool index of next item. | |
| Titem | value |
| Value of current item. | |
Minimal stack that uses a pool to avoid pointers.
It has some peculiar properties that make it useful for passing around lists of IDs but not much else:
| Titem | Value type to be used. |
| Tindex | Index type to use for the pool. |
| Tinvalid | Invalid item to keep at the bottom of each stack. |
| Tgrowth_step | Growth step for pool. |
| Tmax_size | Maximum size for pool. |
Definition at line 138 of file smallstack_type.hpp.
|
inline |
Constructor for a stack with one or two items in it.
| value | Initial item. If not missing or Tinvalid there will be Tinvalid below it. |
Definition at line 156 of file smallstack_type.hpp.
|
inline |
Shallow copy the stack, marking the first item as branched.
| other | Stack to copy from |
Definition at line 171 of file smallstack_type.hpp.
References SmallStack< Titem, Tindex, Tinvalid, Tgrowth_step, Tmax_size >::Branch().
|
inline |
Check if the given item is contained in the stack.
| item | Item to look for. |
Definition at line 256 of file smallstack_type.hpp.
References SimplePool< Titem, Tindex, Tgrowth_step, Tmax_size >::Get(), SimplePool< Titem, Tindex, Tgrowth_step, Tmax_size >::GetMutex(), SmallStackItem< Titem, Tindex >::next, and SmallStackItem< Titem, Tindex >::value.
Referenced by VehicleCargoList::ChooseAction().
|
inline |
Check if the stack is empty.
Definition at line 246 of file smallstack_type.hpp.
References SmallStackItem< Titem, Tindex >::next, and SmallStackItem< Titem, Tindex >::value.
Referenced by OrderList::GetNextStoppingStation(), StationCargoList::HasCargoFor(), StationCargoList::ShiftCargo(), VehicleCargoList::Stage(), and LinkGraphJob::~LinkGraphJob().
|
inline |
Shallow copy the stack, marking the first item as branched.
| other | Stack to copy from |
Definition at line 178 of file smallstack_type.hpp.
References SmallStack< Titem, Tindex, Tinvalid, Tgrowth_step, Tmax_size >::Branch(), SmallStackItem< Titem, Tindex >::next, SmallStack< Titem, Tindex, Tinvalid, Tgrowth_step, Tmax_size >::Pop(), and SmallStackItem< Titem, Tindex >::value.
|
inline |
Pop an item from the stack.
Definition at line 215 of file smallstack_type.hpp.
References SimplePool< Titem, Tindex, Tgrowth_step, Tmax_size >::Destroy(), SimplePool< Titem, Tindex, Tgrowth_step, Tmax_size >::Get(), SimplePool< Titem, Tindex, Tgrowth_step, Tmax_size >::GetMutex(), SmallStackItem< Titem, Tindex >::next, and SmallStackItem< Titem, Tindex >::value.
Referenced by OrderList::GetNextStoppingStation(), StationCargoList::HasCargoFor(), SmallStack< Titem, Tindex, Tinvalid, Tgrowth_step, Tmax_size >::operator=(), StationCargoList::ShiftCargo(), VehicleCargoList::Stage(), LinkGraphJob::~LinkGraphJob(), and SmallStack< Titem, Tindex, Tinvalid, Tgrowth_step, Tmax_size >::~SmallStack().
|
inline |
Pushes a new item onto the stack if there is still space in the underlying pool.
Otherwise the topmost item's value gets overwritten.
| item | Item to be pushed. |
Definition at line 195 of file smallstack_type.hpp.
References SmallStack< Titem, Tindex, Tinvalid, Tgrowth_step, Tmax_size >::PooledSmallStack::branch_count, SimplePool< Titem, Tindex, Tgrowth_step, Tmax_size >::Create(), SimplePool< Titem, Tindex, Tgrowth_step, Tmax_size >::Get(), SimplePool< Titem, Tindex, Tgrowth_step, Tmax_size >::GetMutex(), SmallStackItem< Titem, Tindex >::next, and SmallStackItem< Titem, Tindex >::value.
Referenced by FlowStatMap::DeleteFlows(), and OrderList::GetNextStoppingStation().
1.8.1.2