OpenTTD Source 20260108-master-g8ba1860eaa
Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool > Struct Template Reference

Base class for all PoolItems. More...

#include <pool_type.hpp>

Public Types

typedef struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > Pool
 Type of the pool this item is going to be part of.
 

Public Member Functions

 PoolItem (Tindex index)
 Construct the item.
 
void * operator new (size_t)=delete
 Do not use new PoolItem, but rather PoolItem::Create.
 
void operator delete (void *p, size_t size)
 Marks Titem as free.
 
void * operator new (size_t size, Tindex index)=delete
 Do not use new (index) PoolItem(...), but rather PoolItem::CreateAtIndex(index, ...).
 
void * operator new (size_t, void *ptr)=delete
 Do not use new (address) PoolItem(...).
 

Static Public Member Functions

template<typename T = Titem, typename... Targs>
requires std::is_base_of_v<Titem, T>
static T * Create (Targs &&... args)
 Creates a new T-object in the associated pool.
 
template<typename T = Titem, typename... Targs>
requires std::is_base_of_v<Titem, T>
static T * CreateAtIndex (Tindex index, Targs &&... args)
 Creates a new T-object in the associated pool.
 
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 (auto index)
 Tests whether given index can be used to get valid (non-nullptr) Titem.
 
static Titem * Get (auto index)
 Returns Titem with given index.
 
static Titem * GetIfValid (auto 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.
 
static Pool::IterateWrapper< Titem > Iterate (size_t from=0)
 Returns an iterable ensemble of all valid Titem.
 

Data Fields

const Tindex index
 Index of this pool item.
 

Detailed Description

template<class Titem, typename Tindex, size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >

Base class for all PoolItems.

Template Parameters
TpoolThe pool this item is going to be part of

Definition at line 290 of file pool_type.hpp.

Member Typedef Documentation

◆ Pool

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
typedef struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::Pool

Type of the pool this item is going to be part of.

Definition at line 300 of file pool_type.hpp.

Constructor & Destructor Documentation

◆ PoolItem()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::PoolItem ( Tindex  index)
inline

Construct the item.

Parameters
indexThe index of this PoolItem in the pool.

Definition at line 297 of file pool_type.hpp.

Member Function Documentation

◆ CanAllocateItem()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
static bool Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::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 359 of file pool_type.hpp.

◆ CleaningPool()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
static bool Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::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 368 of file pool_type.hpp.

◆ Create()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
template<typename T = Titem, typename... Targs>
requires std::is_base_of_v<Titem, T>
static T * Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::Create ( Targs &&...  args)
inlinestatic

Creates a new T-object in the associated pool.

Parameters
args...The arguments to the constructor.
Returns
The created object.

Definition at line 332 of file pool_type.hpp.

References Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::data, and Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index.

◆ CreateAtIndex()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
template<typename T = Titem, typename... Targs>
requires std::is_base_of_v<Titem, T>
static T * Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::CreateAtIndex ( Tindex  index,
Targs &&...  args 
)
inlinestatic

Creates a new T-object in the associated pool.

Parameters
indexThe to allocate the object at.
args...The arguments to the constructor.
Returns
The created object.

Definition at line 346 of file pool_type.hpp.

References Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::data, and Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index.

◆ Get()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
static Titem * Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::Get ( auto  index)
inlinestatic

Returns Titem with given index.

Parameters
indexof item to get
Returns
pointer to Titem
Precondition
index < this->first_unused

Definition at line 389 of file pool_type.hpp.

References Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index.

◆ GetIfValid()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
static Titem * Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::GetIfValid ( auto  index)
inlinestatic

Returns Titem with given index.

Parameters
indexof item to get
Returns
pointer to Titem
Note
returns nullptr for invalid index

Definition at line 400 of file pool_type.hpp.

References Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index.

◆ GetNumItems()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
static size_t Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::GetNumItems ( )
inlinestatic

Returns number of valid items in the pool.

Returns
number of valid items in the pool

Definition at line 419 of file pool_type.hpp.

◆ GetPoolSize()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
static size_t Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::GetPoolSize ( )
inlinestatic

Returns first unused index.

Useful when iterating over all pool items.

Returns
first unused index

Definition at line 410 of file pool_type.hpp.

◆ IsValidID()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
static bool Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::IsValidID ( auto  index)
inlinestatic

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

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

Definition at line 378 of file pool_type.hpp.

References Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index.

◆ Iterate()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
static Pool::IterateWrapper< Titem > Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::Iterate ( size_t  from = 0)
inlinestatic

Returns an iterable ensemble of all valid Titem.

Parameters
fromindex of the first Titem to consider
Returns
an iterable ensemble of all valid Titem

Definition at line 438 of file pool_type.hpp.

◆ operator delete()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
void Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::operator delete ( void *  p,
size_t  size 
)
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 310 of file pool_type.hpp.

◆ PostDestructor()

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
static void Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::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) == nullptr.
it's called only when !CleaningPool()

Definition at line 431 of file pool_type.hpp.

Field Documentation

◆ index

template<class Titem , typename Tindex , size_t Tgrowth_step, PoolType Tpool_type = PoolType::Normal, bool Tcache = false>
template<struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > * Tpool>
const Tindex Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index

Index of this pool item.

Definition at line 291 of file pool_type.hpp.

Referenced by AddCargoDelivery(), LinkGraphOverlay::AddLinks(), LinkGraph::AddNode(), AddVehicleToGroup(), AdvertiseIndustryOpening(), AfterLoadGame(), AgeVehicle(), AircraftEntersTerminal(), AircraftEventHandler_AtTerminal(), AircraftHandleDestTooFar(), AircraftVehicleChangeInfo(), AirportGetNearestTown(), BuildObject(), RefitWindow::BuildRefitList(), BuildReplacementVehicle(), StoryBookWindow::BuildStoryPageElementList(), CalcEngineReliability(), CalculateCompanyAssetValue(), CanRoadContinueIntoNextTile(), CcBuildWagon(), ChangeIndustryProduction(), ChangePopulation(), ChangeTimetable(), ChangeTownRating(), CheckAllowRemoveRoad(), CheckConsistencyOfArticulatedVehicle(), CheckforTownRating(), CheckIfAuthorityAllowsNewStation(), CheckIfTrainNeedsService(), CheckOrders(), CheckTrainsOnTrack(), ClearMakeHouseTile(), ClearTile_Town(), CmdAlterGroup(), CmdBuildAircraft(), CmdBuildAirport(), CmdBuildBridge(), CmdBuildBuoy(), CmdBuildDock(), CmdBuildObject(), CmdBuildRailStation(), CmdBuildRailVehicle(), CmdBuildRailWagon(), CmdBuildRailWaypoint(), CmdBuildRoad(), CmdBuildRoadDepot(), CmdBuildRoadStop(), CmdBuildRoadVehicle(), CmdBuildRoadWaypoint(), CmdBuildShip(), CmdBuildShipDepot(), CmdBuildTrainDepot(), CmdBuildVehicle(), CmdBulkChangeTimetable(), CmdBuyCompany(), CmdChangeServiceInt(), CmdCloneVehicle(), CmdCompanyCtrl(), CmdConvertRail(), CmdCreateGoal(), CmdCreateGroup(), CmdCreateLeagueTable(), CmdCreateLeagueTableElement(), CmdCreateStoryPage(), CmdCreateStoryPageElement(), CmdDeleteGroup(), CmdDeleteTown(), CmdForceTrainProceed(), CmdFoundTown(), CmdIndustrySetProduction(), CmdIndustrySetText(), CmdMoveRailVehicle(), CmdMoveVehicle(), CmdOpenCloseAirport(), CmdPlaceSign(), CmdRefitVehicle(), CmdRemoveFromRailStation(), CmdRemoveStoryPage(), CmdRenameCompany(), CmdRenameDepot(), CmdRenamePresident(), CmdRenameSign(), CmdReverseTrainDirection(), CmdSetVehicleOnTime(), CmdSetVehicleVisibility(), CmdStartStopVehicle(), CompanyCheckBankrupt(), CompanyNewsInformation::CompanyNewsInformation(), ConvertRoadTypeOwner(), CopyHeadSpecificThings(), CrashAirplane(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::Create(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::CreateAtIndex(), CreateRandomTown(), CreateSubsidy(), DecreaseVehicleValue(), DeleteDepotHighlightOfVehicle(), DeleteGroupHighlightOfVehicle(), DeleteOrderWarnings(), DeleteStaleLinks(), DeliverGoods(), DeliverGoodsToIndustry(), DepotWindow::DepotClick(), DisableEngineForCompany(), Disaster_CoalMine_Init(), DisasterTick_Aircraft(), DisasterTick_Big_Ufo(), DisasterTick_Ufo(), DisasterTick_Zeppeliner(), DoCmdStartStopVehicle(), DoCreateNewIndustry(), DoCreateTown(), OrderBackup::DoRestore(), DoStartupNewCompany(), DrawAircraftImage(), DrawRoadVehImage(), DrawShipImage(), DrawTrainImage(), BaseVehicleListWindow::DrawVehicleListItems(), SelectCompanyLiveryWindow::DrawWidget(), CompanyWindow::DrawWidget(), BuyCompanyWindow::DrawWidget(), VehicleGroupWindow::DrawWidget(), PerformanceLeagueWindow::DrawWidget(), SignListWindow::DrawWidget(), CompanyStationsWindow::DrawWidget(), SelectStationWindow< T >::DrawWidget(), EnableEngineForCompany(), BuildVehicleWindow::FilterByText(), Aircraft::FindClosestDepot(), Ship::FindClosestDepot(), FindSubsidyCargoDestination(), FindSubsidyIndustryCargoRoute(), FindSubsidyPassengerRoute(), FindSubsidyTownCargoRoute(), FloodVehicle(), FormatString(), GenerateCompanyName(), GeneratePresidentName(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::Get(), GetClosestDeletedStation(), GetCountAndDistanceOfClosestInstance(), NewGRFInspectWindow::GetFeatureIndex(), GetFirstPlayableCompanyID(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::GetIfValid(), IndustryDirectoryWindow::GetIndustryString(), GetNewEngine(), GetOrderCmdFromTile(), GetParamsForOwnedBy(), NIHVehicle::GetParent(), NIHStation::GetParent(), NIHObject::GetParent(), NIHAirport::GetParent(), NIHRoadStop::GetParent(), GetPreviewCompany(), GetRailTypeDropDownList(), IndustryTileScopeResolver::GetRandomBits(), IndustryTileScopeResolver::GetRandomTriggers(), GetTileHighlightType(), IndustriesResolverObject::GetTown(), TownDirectoryWindow::GetTownString(), AirportTileScopeResolver::GetVariable(), IndustriesScopeResolver::GetVariable(), IndustryTileScopeResolver::GetVariable(), ObjectScopeResolver::GetVariable(), RoadStopScopeResolver::GetVariable(), TownScopeResolver::GetVariable(), GetVehicleSet(), OrdersWindow::GetWidgetString(), StationViewWindow::GetWidgetString(), TimetableWindow::GetWidgetString(), TownViewWindow::GetWidgetString(), VehicleViewWindow::GetWidgetString(), WaypointWindow::GetWidgetString(), GrowTown(), GrowTownAtRoad(), GrowTownWithRoad(), GuiGroupListAddChildren(), HandleBankruptcyTakeover(), HandleClickOnSign(), HandleStationRefit(), IncreaseStats(), IndustriesResolverObject::IndustriesResolverObject(), IndustryDirectoryWindow::IndustryNameSorter(), IndustryProductionCallback(), IndustryTileResolverObject::IndustryTileResolverObject(), InvalidateCompanyWindows(), InvalidateVehicleOrder(), StoryBookWindow::IsLastPageSelected(), IsRoadAllowedHere(), IsShipDestinationTile(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::IsValidID(), Vehicle::LeaveUnbunchingDepot(), LinkGraphJob::LinkGraphIndex(), INDYChunkHandler::Load(), LoadTownData(), LoadUnloadVehicle(), MarkTrainAsStuck(), MoveWaypointsToBaseStations(), Vehicle::NeedsServicing(), NetworkAdminCompanyNew(), NetworkOnGameStart(), NetworkServerNewCompany(), NewVehicleAvailable(), NormaliseTrainHead(), NormalizeTrainVehInDepot(), VehicleGroupWindow::OnClick(), StoryBookWindow::OnClick(), TimetableWindow::OnClick(), TownAuthorityWindow::OnClick(), RefitWindow::OnClick(), VehicleDetailsWindow::OnClick(), VehicleViewWindow::OnClick(), WaypointWindow::OnClick(), DepotWindow::OnDragDrop(), VehicleDetailsWindow::OnDropdownSelect(), VehicleViewWindow::OnHotkey(), LandInfoWindow::OnInit(), RefitWindow::OnInvalidateData(), DepotWindow::OnMouseDrag(), StoryBookWindow::OnPageElementClick(), CompanyWindow::OnPaint(), EndGameWindow::OnPaint(), VehicleDetailsWindow::OnPaint(), VehicleViewWindow::OnPaint(), StoryBookWindow::OnPlaceObject(), TimetableWindow::OnQueryTextFinished(), DepotWindow::OnVehicleSelect(), OrdersWindow::OrderClick_Skip(), OrdersWindow::OrderClick_StopSharing(), PropagateChildLivery(), LinkGraphSchedule::Queue(), RailVehicleChangeInfo(), ServerNetworkGameSocketHandler::Receive_CLIENT_IDENTIFY(), Station::RecomputeCatchment(), RefitVehicle(), LinkRefresher::RefreshStats(), RemoveAirport(), RemoveBuoy(), RemoveDock(), RemoveFromRailBaseStation(), RemoveLock(), RemoveNearbyStations(), RemoveRoad(), RemoveRoadStop(), RemoveRoadWaypointStop(), ReplaceChain(), ReplaceFreeUnit(), ReportNewsProductionChangeIndustry(), ResetCompanyLivery(), ReverseTrainDirection(), RoadVehArrivesAt(), RoadVehicleChangeInfo(), LGRJChunkHandler::Save(), STNNChunkHandler::Save(), CITYChunkHandler::Save(), SaveHighScoreValue(), SaveHighScoreValueNetwork(), StoryBookWindow::SelectNextPage(), StoryBookWindow::SelectPrevPage(), SendAllVehiclesToDepot(), ServerNetworkAdminSocketHandler::SendCompanyInfo(), ServerNetworkAdminSocketHandler::SendCompanyUpdate(), SetViewportCatchmentStation(), SetViewportCatchmentTown(), SetViewportCatchmentWaypoint(), SetViewportStationRect(), SetViewportWaypointRect(), ShipAccelerate(), ShipArrivesAt(), ShipMoveUpDownOnLock(), ShipVehicleChangeInfo(), ShowRejectOrAcceptNews(), ShowTimetableWindow(), ShowVehicleDetailsWindow(), ShowVehicleRefitWindow(), ShowVehicleViewWindow(), ShowWaypointWindow(), SignList::SignNameSorter(), LinkGraphSchedule::SpawnNext(), StartStopVehicle(), StartupOneEngine(), CompanyStationsWindow::StationNameSorter(), IndustriesScopeResolver::StorePSA(), TestTownOwnsBridge(), TownActionBribe(), TownActionBuyRights(), TownActionFundBuildings(), TownActionRoadRebuild(), TownGenerateCargo(), TrainController(), TrainCrashed(), TrainEnterStation(), TriggerIndustryProduction(), TryPathReserve(), UpdateAircraftSpeed(), UpdateAirplanesOnNewStation(), UpdateCompanyGroupLiveries(), UpdateCompanyRatingAndValue(), UpdateCompanyRoadInfrastructure(), UpdateNearestTownForRoadTiles(), UpdateObjectColours(), UpdateOrderDest(), UpdateStationAcceptance(), UpdateStationRating(), UpdateTownGrowth(), UpdateTownGrowthRate(), UpdateVehicleTimetable(), BuyCompanyWindow::UpdateWidgetSize(), SelectStationWindow< T >::UpdateWidgetSize(), VehicleEnterDepot(), VehicleEnteredDepotThisTick(), VehicleNameSorter(), VehicleServiceInDepot(), LinkGraphJob::~LinkGraphJob(), and Station::~Station().


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