UNPKG

molstar

Version:

A comprehensive macromolecular library.

47 lines (46 loc) 1.44 kB
"use strict"; /** * 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;