Merge "Add LruCache::Iterator"
This commit is contained in:
commit
7f32b1da82
@ -36,15 +36,38 @@ public:
|
|||||||
|
|
||||||
void setOnEntryRemovedListener(OnEntryRemoved<TKey, TValue>* listener);
|
void setOnEntryRemovedListener(OnEntryRemoved<TKey, TValue>* listener);
|
||||||
size_t size() const;
|
size_t size() const;
|
||||||
const TKey& keyAt(size_t index) const;
|
|
||||||
const TValue& valueAt(size_t index) const;
|
|
||||||
void removeAt(size_t index);
|
|
||||||
const TValue& get(const TKey& key);
|
const TValue& get(const TKey& key);
|
||||||
bool put(const TKey& key, const TValue& value);
|
bool put(const TKey& key, const TValue& value);
|
||||||
bool remove(const TKey& key);
|
bool remove(const TKey& key);
|
||||||
bool removeOldest();
|
bool removeOldest();
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
|
class Iterator {
|
||||||
|
public:
|
||||||
|
Iterator(const LruCache<TKey, TValue>& cache): mCache(cache), mIndex(-1) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool next() {
|
||||||
|
mIndex = mCache.mTable->next(mIndex);
|
||||||
|
return mIndex != -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t index() const {
|
||||||
|
return mIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TValue& value() const {
|
||||||
|
return mCache.mTable->entryAt(mIndex).value;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TKey& key() const {
|
||||||
|
return mCache.mTable->entryAt(mIndex).key;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
const LruCache<TKey, TValue>& mCache;
|
||||||
|
size_t mIndex;
|
||||||
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LruCache(const LruCache& that); // disallow copy constructor
|
LruCache(const LruCache& that); // disallow copy constructor
|
||||||
|
|
||||||
@ -88,27 +111,6 @@ size_t LruCache<TKey, TValue>::size() const {
|
|||||||
return mTable->size();
|
return mTable->size();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TKey, typename TValue>
|
|
||||||
const TKey& LruCache<TKey, TValue>::keyAt(size_t index) const {
|
|
||||||
const Entry& entry = mTable->entryAt(index);
|
|
||||||
return entry.key;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TKey, typename TValue>
|
|
||||||
const TValue& LruCache<TKey, TValue>::valueAt(size_t index) const {
|
|
||||||
const Entry& entry = mTable->entryAt(index);
|
|
||||||
return entry.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TKey, typename TValue>
|
|
||||||
void LruCache<TKey, TValue>::removeAt(size_t index) {
|
|
||||||
if (index < 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
mTable->removeAt(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TKey, typename TValue>
|
template <typename TKey, typename TValue>
|
||||||
const TValue& LruCache<TKey, TValue>::get(const TKey& key) {
|
const TValue& LruCache<TKey, TValue>::get(const TKey& key) {
|
||||||
hash_t hash = hash_type(key);
|
hash_t hash = hash_type(key);
|
||||||
|
Loading…
Reference in New Issue
Block a user