OpenTTD Source: LRUCache< Tkey, Tdata > Class Template Reference

OpenTTD Source 14.0-beta1

Public Member Functions | Private Types | Private Attributes
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

  Tkey | Type of the cache key.
  Tdata | Type 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_items | Number 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

  key | The 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

  key | The 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

  key | Key under which the item should be stored.
  item | Item 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:

- src/misc/lrucache.hpp