OpenTTD Source  20240919-master-gdf0233f4c2
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

typedef CHashTableT< Tsegment, C_HASH_BITS > HashTable
 
using Heap = std::deque< Tsegment >
 
typedef Tsegment::Key Key
 key to hash table
 

Public Member Functions

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

Data Fields

HashTable m_map
 
Heap m_heap
 

Static Public Attributes

static const int C_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 66 of file yapf_costcache.hpp.


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