12 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
13 template <
typename... ARGS>
18 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
20 : inherited{
src.GetMaxCacheSize (),
src.GetKeyEqualsCompareFunction (),
src.GetHashTableSize (),
src.GetKeyHashFunction ()}
21 , fHoldWriteLockDuringCacheFill{
src.fHoldWriteLockDuringCacheFill}
25 Add (i.fKey, i.fValue);
29 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
33 return inherited::GetMaxCacheSize ();
35 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
41 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
45 return inherited::GetStats ();
47 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
49 -> KeyEqualsCompareFunctionType
52 return inherited::GetKeyEqualsCompareFunction ();
54 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
58 return inherited::GetHashTableSize ();
60 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
64 return inherited::GetKeyHashFunction ();
66 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
72 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
76 inherited::clear (
key);
78 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
85 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
86 inline optional<VALUE>
95 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
111 if (fHoldWriteLockDuringCacheFill) {
115 inherited::Add (
key, v);
127 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
132 inherited::Add (
key, value);
134 template <
typename KEY,
typename VALUE,
typename KEY_EQUALS_COMPARER,
typename KEY_HASH_FUNCTION,
typename STATS_TYPE>
138 return inherited::Elements ();
LRUCache implements a simple least-recently-used caching strategy, with optional hashing (of keys) to...
nonvirtual void Add(typename Common::ArgByValueType< KEY > key, typename Common::ArgByValueType< VALUE > value)
simple wrapper on LRUCache (with the same API) - but internally synchronized in a way that is more pe...
nonvirtual optional< VALUE > Lookup(typename Common::ArgByValueType< KEY > key) const
SynchronizedLRUCache(ARGS... args)
nonvirtual void SetMaxCacheSize(size_t maxCacheSize)
nonvirtual KEY_HASH_FUNCTION GetKeyHashFunction() const
nonvirtual Containers::Mapping< KEY, VALUE > Elements() const
nonvirtual KeyEqualsCompareFunctionType GetKeyEqualsCompareFunction() const
nonvirtual size_t GetMaxCacheSize() const
nonvirtual VALUE LookupValue(typename Common::ArgByValueType< KEY > key, const function< VALUE(typename Common::ArgByValueType< KEY >)> &valueFetcher)
nonvirtual StatsType GetStats() const
nonvirtual size_t GetHashTableSize() const
nonvirtual void Add(typename Common::ArgByValueType< KEY > key, typename Common::ArgByValueType< VALUE > value)
conditional_t<(sizeof(CHECK_T)<=2 *sizeof(void *)) and is_trivially_copyable_v< CHECK_T >, CHECK_T, const CHECK_T & > ArgByValueType
This is an alias for 'T' - but how we want to pass it on stack as formal parameter.