OpenTTD Source 20241224-master-gee860a5c8e
container_func.hpp File Reference

Some simple functions to help with accessing containers. More...

Go to the source code of this file.

Functions

template<typename Container >
bool include (Container &container, typename Container::const_reference &item)
 Helper function to append an item to a container if it is not already contained.
 
template<typename Container >
int find_index (Container const &container, typename Container::const_reference item)
 Helper function to get the index of an item Consider using std::set, std::unordered_set or std::flat_set in new code.
 
template<typename TIter >
auto Slide (TIter first, TIter last, TIter position) -> std::pair< TIter, TIter >
 Move elements between first and last to a new position, rotating elements in between as necessary.
 

Detailed Description

Some simple functions to help with accessing containers.

Definition in file container_func.hpp.

Function Documentation

◆ find_index()

template<typename Container >
int find_index ( Container const &  container,
typename Container::const_reference  item 
)

Helper function to get the index of an item Consider using std::set, std::unordered_set or std::flat_set in new code.

Parameters
containerA reference to the container to be searched.
itemReference to the item to be search for
Returns
Index of element if found, otherwise -1

Definition at line 41 of file container_func.hpp.

Referenced by BuildCargoTranslationMap(), NetworkContentListWindow::FilterContentList(), FinalisePriceBaseMultipliers(), GetReverseRailTypeTranslation(), GetReverseRoadTypeTranslation(), and NetworkContentListWindow::SortContentList().

◆ include()

template<typename Container >
bool include ( Container &  container,
typename Container::const_reference &  item 
)
inline

Helper function to append an item to a container if it is not already contained.

The container must have a emplace_back function. Consider using std::set, std::unordered_set or std::flat_set in new code.

Parameters
containerA reference to the container to be extended
itemReference to the item to be copy-constructed if not found
Returns
Whether the item was already present

Definition at line 24 of file container_func.hpp.

Referenced by ClientNetworkContentSocketHandler::AddCallback(), ScenarioScanner::AddFile(), RefitWindow::BuildRefitList(), CheckSubsidised(), DeliverGoodsToIndustry(), GetBestFittingSubType(), GetVehicleSet(), GfxBlitter(), NetworkContentDownloadStatusWindow::OnDownloadProgress(), RemoveFromRailBaseStation(), ClientNetworkContentSocketHandler::ReverseLookupTreeDependency(), UpdateRoadVehPowerProc(), and UpdateTrainPowerProc().

◆ Slide()

template<typename TIter >
auto Slide ( TIter  first,
TIter  last,
TIter  position 
) -> std::pair<TIter, TIter>

Move elements between first and last to a new position, rotating elements in between as necessary.

Parameters
firstIterator to first element to move.
lastIterator to (end-of) last element to move.
positionIterator to where range should be moved to.
Returns
Iterators to first and last after being moved.

Definition at line 57 of file container_func.hpp.

Referenced by CommitVehicleListOrderChanges(), and EngineOverrideManager::UseUnreservedID().