Merge "Add LruCache::Iterator"

This commit is contained in:
Romain Guy 2012-11-29 11:23:12 -08:00 committed by Android (Google) Code Review
commit 7f32b1da82

View File

@ -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);