ASW Lib
A.D.S. Games SDL Wrapper Library. A library targeted at Allegro4 users who want to switch to SDL3 and use modern c++.
Loading...
Searching...
No Matches
asw::detail::LruCache< Key, Value, Hash, Equal > Class Template Reference

A hash map with a size limit. When full, the least recently used half is dropped, so entries in use every frame stay cached. More...

#include <lru_cache.h>

Classes

struct  Entry
 

Public Member Functions

 LruCache (std::size_t limit)
 
template<typename K >
Value * find (const K &key)
 Find an entry and mark it used.
 
Value & insert (Key key, Value value)
 Add or replace an entry, dropping old entries first when full.
 
void clear ()
 
std::size_t size () const
 

Private Member Functions

void evict ()
 

Private Attributes

std::unordered_map< Key, Entry, Hash, Equal > _map
 
std::vector< uint64_t > _stamps
 
std::size_t _limit
 
uint64_t _clock { 0 }
 

Detailed Description

template<typename Key, typename Value, typename Hash, typename Equal>
class asw::detail::LruCache< Key, Value, Hash, Equal >

A hash map with a size limit. When full, the least recently used half is dropped, so entries in use every frame stay cached.

Hash and Equal may be transparent, so find() can take a key view that does not allocate.

Definition at line 23 of file lru_cache.h.

Constructor & Destructor Documentation

◆ LruCache()

template<typename Key , typename Value , typename Hash , typename Equal >
asw::detail::LruCache< Key, Value, Hash, Equal >::LruCache ( std::size_t limit)
inlineexplicit

Definition at line 25 of file lru_cache.h.

Member Function Documentation

◆ clear()

template<typename Key , typename Value , typename Hash , typename Equal >
void asw::detail::LruCache< Key, Value, Hash, Equal >::clear ( )
inline

Definition at line 55 of file lru_cache.h.

◆ evict()

template<typename Key , typename Value , typename Hash , typename Equal >
void asw::detail::LruCache< Key, Value, Hash, Equal >::evict ( )
inlineprivate

Definition at line 73 of file lru_cache.h.

◆ find()

template<typename Key , typename Value , typename Hash , typename Equal >
template<typename K >
Value * asw::detail::LruCache< Key, Value, Hash, Equal >::find ( const K & key)
inline

Find an entry and mark it used.

Returns
The value, or nullptr when not cached.

Definition at line 32 of file lru_cache.h.

◆ insert()

template<typename Key , typename Value , typename Hash , typename Equal >
Value & asw::detail::LruCache< Key, Value, Hash, Equal >::insert ( Key key,
Value value )
inline

Add or replace an entry, dropping old entries first when full.

Returns
The stored value.

Definition at line 44 of file lru_cache.h.

◆ size()

template<typename Key , typename Value , typename Hash , typename Equal >
std::size_t asw::detail::LruCache< Key, Value, Hash, Equal >::size ( ) const
inline

Definition at line 60 of file lru_cache.h.

Member Data Documentation

◆ _clock

template<typename Key , typename Value , typename Hash , typename Equal >
uint64_t asw::detail::LruCache< Key, Value, Hash, Equal >::_clock { 0 }
private

Definition at line 99 of file lru_cache.h.

◆ _limit

template<typename Key , typename Value , typename Hash , typename Equal >
std::size_t asw::detail::LruCache< Key, Value, Hash, Equal >::_limit
private

Definition at line 98 of file lru_cache.h.

◆ _map

template<typename Key , typename Value , typename Hash , typename Equal >
std::unordered_map<Key, Entry, Hash, Equal> asw::detail::LruCache< Key, Value, Hash, Equal >::_map
private

Definition at line 96 of file lru_cache.h.

◆ _stamps

template<typename Key , typename Value , typename Hash , typename Equal >
std::vector<uint64_t> asw::detail::LruCache< Key, Value, Hash, Equal >::_stamps
private

Definition at line 97 of file lru_cache.h.


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