molstar
Version:
A comprehensive macromolecular library.
47 lines (46 loc) • 1.44 kB
JavaScript
/**
* Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* Adapted from LiteMol.
* @author David Sehnal <david.sehnal@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.LRUCache = void 0;
var generic_1 = require("../mol-data/generic");
var LRUCache;
(function (LRUCache) {
function entry(key, data) {
return { key: key, data: data };
}
function create(capacity) {
return {
entries: (0, generic_1.LinkedList)(),
capacity: Math.max(1, capacity)
};
}
LRUCache.create = create;
function get(cache, key) {
for (var e = cache.entries.first; e; e = e.next) {
if (e.value.key === key) {
cache.entries.remove(e);
cache.entries.addLast(e.value);
return e.value.data;
}
}
return void 0;
}
LRUCache.get = get;
function set(cache, key, data) {
var removed = undefined;
if (cache.entries.count >= cache.capacity) {
var first = cache.entries.first;
removed = first.value.data;
cache.entries.remove(first);
}
cache.entries.addLast(entry(key, data));
return removed;
}
LRUCache.set = set;
})(LRUCache || (LRUCache = {}));
exports.LRUCache = LRUCache;
;