8 #ifndef STRINGDICTIONARY_LRUCACHE_HPP
9 #define STRINGDICTIONARY_LRUCACHE_HPP
13 #include <unordered_map>
15 template <
typename key_t,
typename value_t,
class hash_t = std::hash<key_t>>
21 using map_t =
typename std::unordered_map<key_t, list_iterator_t, hash_t>;
27 void put(
const key_t& key, value_t&& value) {
33 void put(
const key_t& key,
const value_t& value) {
39 value_t*
get(
const key_t& key) {
45 return &it->second->second;
66 size_t entries_to_evict =
68 static_cast<size_t>(1)),
98 size_t entries_erased = 0;
112 #endif // STRINGDICTIONARY_LRUCACHE_HPP
typename std::unordered_map< CompilationContext, list_iterator_t, std::hash< CompilationContext > > map_t
typename cache_list_t::iterator list_iterator_t
typename std::pair< CompilationContext, value_t > key_value_pair_t
void put(const key_t &key, const value_t &value)
LruCache(const size_t max_size)
const_list_iterator_t cend() const
void evictCommon(const size_t entries_to_evict)
cache_list_t cache_items_list_
void evictFractionEntries(const float fraction)
typename map_t::iterator map_t_iterator
typename std::list< key_value_pair_t > cache_list_t
void evictNEntries(const size_t n)
void putCommon(map_t_iterator &it, key_t const &key)
void put(const key_t &key, value_t &&value)
const_list_iterator_t find(const key_t &key) const
typename cache_list_t::const_iterator const_list_iterator_t