9 #ifndef anna_core_util_LRUMap_hpp 10 #define anna_core_util_LRUMap_hpp 31 template <
typename K,
typename V>
class LRUMap {
32 typedef typename std::pair <V, anna::Millisecond> timed_value;
33 typedef typename std::map <K, timed_value> container;
34 typedef typename container::value_type value_type;
45 LRUMap(
const char* name,
const int maxSize) : a_name(name), a_maxSize(maxSize) { ;}
56 bool isEmpty()
const {
return a_container.size() == 0; }
62 int size()
const {
return a_container.size(); }
73 iterator ii = a_container.find(key);
93 iterator ii = a_container.find(key);
103 if(
size() < a_maxSize) {
105 a_container.insert(value_type(key, tvalue));
111 iterator minii =
begin();
114 for(iterator ii =
begin(), maxii =
end(); ii != maxii; ii ++) {
123 a_container.erase(minii);
125 a_container.insert(value_type(key, tvalue));
131 void clear() { a_container.clear(); }
138 iterator
begin() {
return a_container.begin(); }
145 const_iterator
begin()
const {
return a_container.begin(); }
152 iterator
end() {
return a_container.end(); }
159 const_iterator
end()
const {
return a_container.end(); }
167 static K
key(iterator& ii) {
return ii->first; }
176 timed_value* v = &ii->second;
186 timed_value* v = &ii->second;
196 static K
key(const_iterator& ii) {
return ii->first; }
204 static const V&
value(const_iterator& ii) {
205 const timed_value* v = &ii->second;
215 const timed_value* v = &ii->second;
225 std::string msg(
"LRUMap { Name: ");
235 container a_container;
container::iterator iterator
Definition: LRUMap.hpp:37
V * find(const K &key)
Definition: LRUMap.hpp:72
Definition: Millisecond.hpp:24
iterator begin()
Definition: LRUMap.hpp:138
const_iterator end() const
Definition: LRUMap.hpp:159
static std::string asText(const char *comment, const int number)
Definition: functions.hpp:153
void clear()
Definition: LRUMap.hpp:131
static const V & value(const_iterator &ii)
Definition: LRUMap.hpp:204
std::string asString() const
Definition: LRUMap.hpp:223
static K key(const_iterator &ii)
Definition: LRUMap.hpp:196
static Millisecond millisecond()
Definition: functions.hpp:379
int size() const
Definition: LRUMap.hpp:62
Definition: LRUMap.hpp:31
static Millisecond & millisecond(iterator &ii)
Definition: LRUMap.hpp:185
void add(const K &key, const V &v)
Definition: LRUMap.hpp:92
bool isEmpty() const
Definition: LRUMap.hpp:56
static K key(iterator &ii)
Definition: LRUMap.hpp:167
LRUMap(const char *name, const int maxSize)
Definition: LRUMap.hpp:45
container::const_iterator const_iterator
Definition: LRUMap.hpp:38
const_iterator begin() const
Definition: LRUMap.hpp:145
~LRUMap()
Definition: LRUMap.hpp:50
static V & value(iterator &ii)
Definition: LRUMap.hpp:175
iterator end()
Definition: LRUMap.hpp:152
static Millisecond millisecond(const_iterator &ii)
Definition: LRUMap.hpp:214