diff --git a/include/utils/JenkinsHash.h b/include/utils/JenkinsHash.h index e964e6f92..7da5dbd6a 100644 --- a/include/utils/JenkinsHash.h +++ b/include/utils/JenkinsHash.h @@ -19,6 +19,9 @@ * should still be quite good. **/ +#ifndef ANDROID_JENKINS_HASH_H +#define ANDROID_JENKINS_HASH_H + #include namespace android { @@ -42,3 +45,4 @@ uint32_t JenkinsHashMixShorts(uint32_t hash, const uint16_t* shorts, size_t size } +#endif // ANDROID_JENKINS_HASH_H diff --git a/include/utils/LruCache.h b/include/utils/LruCache.h index 2a70d760a..937fe1e01 100644 --- a/include/utils/LruCache.h +++ b/include/utils/LruCache.h @@ -36,6 +36,9 @@ public: void setOnEntryRemovedListener(OnEntryRemoved* listener); 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); bool put(const TKey& key, const TValue& value); bool remove(const TKey& key); @@ -85,6 +88,27 @@ size_t LruCache::size() const { return mTable->size(); } +template +const TKey& LruCache::keyAt(size_t index) const { + const Entry& entry = mTable->entryAt(index); + return entry.key; +} + +template +const TValue& LruCache::valueAt(size_t index) const { + const Entry& entry = mTable->entryAt(index); + return entry.value; +} + +template +void LruCache::removeAt(size_t index) { + if (index < 0) { + return; + } + + mTable->removeAt(index); +} + template const TValue& LruCache::get(const TKey& key) { hash_t hash = hash_type(key);