OpenTTD
Public Types | Public Member Functions | Data Fields | Static Public Attributes
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
typedef SmallArray< Tsegment > Heap
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 tile, Track 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 124 of file yapf_costcache.hpp.


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