OpenTTD Source  20241121-master-g67a0fccfad
CSegmentCostCacheT< Tsegment > Struct Template Reference

CSegmentCostCacheT - template class providing hash-map and storage (heap) of Tsegment structures. More...

#include <yapf_costcache.hpp>

Inheritance diagram for CSegmentCostCacheT< Tsegment >:
CSegmentCostCacheBase

Public Types

using Key = typename Tsegment::Key
 key to hash table
 

Public Member Functions

void Flush ()
 flush (clear) the cache
 
Tsegment & Get (Key &key, bool *found)
 

Data Fields

HashTable< Tsegment, HASH_BITS > map
 
std::deque< Tsegment > heap
 

Static Public Attributes

static constexpr int HASH_BITS = 14
 
- Static Public Attributes inherited from CSegmentCostCacheBase
static int s_rail_change_counter = 0
 if any track changes, this counter is incremented - that will invalidate segment cost cache
 

Additional Inherited Members

- Static Public Member Functions inherited from CSegmentCostCacheBase
static void NotifyTrackLayoutChange (TileIndex, Track)
 

Detailed Description

template<class Tsegment>
struct CSegmentCostCacheT< Tsegment >

CSegmentCostCacheT - template class providing hash-map and storage (heap) of Tsegment structures.

Each rail node contains pointer to the segment that contains cached (or non-cached) segment cost information. Nodes can differ by key type, but they use the same segment type. Segment key should be always the same (TileIndex + DiagDirection) that represent the beginning of the segment (origin tile and exit-dir from this tile). Different CYapfCachedCostT types can share the same type of CSegmentCostCacheT. Look at CYapfRailSegment (yapf_node_rail.hpp) for the segment example

Definition at line 68 of file yapf_costcache.hpp.


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