| // Copyright 2015 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ios/chrome/browser/snapshots/model/legacy_snapshot_lru_cache.h" |
| |
| #import <memory> |
| |
| #import "base/containers/lru_cache.h" |
| #import "ios/chrome/browser/snapshots/model/snapshot_id.h" |
| |
| @implementation LegacySnapshotLRUCache { |
| std::unique_ptr<base::LRUCache<SnapshotID, id>> _cache; |
| } |
| |
| - (instancetype)initWithCacheSize:(NSUInteger)maxCacheSize { |
| if ((self = [super init])) { |
| _cache = std::make_unique<base::LRUCache<SnapshotID, id>>(maxCacheSize); |
| } |
| return self; |
| } |
| |
| - (NSUInteger)maxCacheSize { |
| return _cache->max_size(); |
| } |
| |
| - (id)objectForKey:(SnapshotID)key { |
| auto it = _cache->Get(key); |
| if (it == _cache->end()) { |
| return nil; |
| } |
| return it->second; |
| } |
| |
| - (void)setObject:(id)value forKey:(SnapshotID)key { |
| _cache->Put(key, value); |
| } |
| |
| - (void)removeObjectForKey:(SnapshotID)key { |
| auto it = _cache->Peek(key); |
| if (it != _cache->end()) { |
| _cache->Erase(it); |
| } |
| } |
| |
| - (void)removeAllObjects { |
| _cache->Clear(); |
| } |
| |
| - (NSUInteger)count { |
| return _cache->size(); |
| } |
| |
| - (BOOL)isEmpty { |
| return _cache->empty(); |
| } |
| |
| @end |