summaryrefslogtreecommitdiffstats
path: root/include/o3tl
diff options
context:
space:
mode:
Diffstat (limited to 'include/o3tl')
-rw-r--r--include/o3tl/lru_map.hxx9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/o3tl/lru_map.hxx b/include/o3tl/lru_map.hxx
index dc8a102977dd..41c215255c7a 100644
--- a/include/o3tl/lru_map.hxx
+++ b/include/o3tl/lru_map.hxx
@@ -50,7 +50,7 @@ private:
list_t mLruList;
map_t mLruMap;
- const size_t mMaxSize;
+ size_t mMaxSize;
void checkLRU()
{
@@ -80,6 +80,13 @@ public:
list_t().swap(mLruList);
}
+ void setMaxSize(size_t nMaxSize)
+ {
+ mMaxSize = nMaxSize ? nMaxSize : std::min(mLruMap.max_size(), mLruList.max_size());
+ while (mLruMap.size() > mMaxSize)
+ checkLRU();
+ }
+
void insert(key_value_pair_t& rPair)
{
map_iterator_t i = mLruMap.find(rPair.first);