OpenTTD Source  20240919-master-gdf0233f4c2
LRUCache< Tkey, Tdata > Class Template Reference

Size limited cache with a least recently used eviction strategy. More...

#include <lrucache.hpp>

Public Member Functions

 LRUCache (size_t max_items)
 Construct new LRU cache map. More...
 
bool Contains (const Tkey key)
 Test if a key is already contained in the cache. More...
 
Tdata * Insert (const Tkey key, Tdata *item)
 Insert a new data item with a specified key. More...
 
Tdata * Pop ()
 Pop the least recently used item. More...
 
Tdata * Get (const Tkey key)
 Get an item from the cache. More...
 

Private Types

typedef std::pair< Tkey, Tdata * > Tpair
 
typedef std::list< Tpair >::iterator Titer
 

Private Attributes

std::list< Tpair > data
 Ordered list of all items.
 
std::unordered_map< Tkey, Titer > lookup
 Map of keys to items.
 
const size_t capacity
 Number of items to cache.
 

Detailed Description

template<class Tkey, class Tdata>
class LRUCache< Tkey, Tdata >

Size limited cache with a least recently used eviction strategy.

Template Parameters
TkeyType of the cache key.
TdataType of the cache item. The cache will store a pointer of this type.

Definition at line 22 of file lrucache.hpp.

Constructor & Destructor Documentation

◆ LRUCache()

template<class Tkey , class Tdata >
LRUCache< Tkey, Tdata >::LRUCache ( size_t  max_items)
inline

Construct new LRU cache map.

Parameters
max_itemsNumber of items to store at most.

Definition at line 37 of file lrucache.hpp.

Member Function Documentation

◆ Contains()

template<class Tkey , class Tdata >
bool LRUCache< Tkey, Tdata >::Contains ( const Tkey  key)
inline

Test if a key is already contained in the cache.

Parameters
keyThe key to search.
Returns
True, if the key was found.

Definition at line 44 of file lrucache.hpp.

Referenced by LRUCache< SpriteID, Sprite >::Insert().

◆ Get()

template<class Tkey , class Tdata >
Tdata* LRUCache< Tkey, Tdata >::Get ( const Tkey  key)
inline

Get an item from the cache.

Parameters
keyThe key to look up.
Returns
The item value.
Note
Throws if item not found.

Definition at line 101 of file lrucache.hpp.

◆ Insert()

template<class Tkey , class Tdata >
Tdata* LRUCache< Tkey, Tdata >::Insert ( const Tkey  key,
Tdata *  item 
)
inline

Insert a new data item with a specified key.

Parameters
keyKey under which the item should be stored.
itemItem to insert.
Returns
Evicted item or nullptr, if no item had to be evicted.

Definition at line 55 of file lrucache.hpp.

◆ Pop()

template<class Tkey , class Tdata >
Tdata* LRUCache< Tkey, Tdata >::Pop ( )
inline

Pop the least recently used item.

Returns
The item value or nullptr if no items cached.

Definition at line 85 of file lrucache.hpp.

Referenced by OpenGLBackend::InternalClearCursorCache().


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