git.fiddlerwoaroof.com
Raw Blame History
// Compiled by ClojureScript 1.9.293 {}
goog.provide('datascript.lru');
goog.require('cljs.core');
datascript.lru.assoc_lru = (function datascript$lru$assoc_lru(lru,k,v){
return null;
});
datascript.lru.cleanup_lru = (function datascript$lru$cleanup_lru(lru){
return null;
});

/**
* @constructor
 * @implements {cljs.core.IPrintWithWriter}
 * @implements {cljs.core.IAssociative}
 * @implements {cljs.core.ILookup}
*/
datascript.lru.LRU = (function (key_value,gen_key,key_gen,gen,limit){
this.key_value = key_value;
this.gen_key = gen_key;
this.key_gen = key_gen;
this.gen = gen;
this.limit = limit;
this.cljs$lang$protocol_mask$partition0$ = 2147484416;
this.cljs$lang$protocol_mask$partition1$ = 0;
})
datascript.lru.LRU.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this$,k,v){
var self__ = this;
var this$__$1 = this;
return datascript.lru.assoc_lru.call(null,this$__$1,k,v);
});

datascript.lru.LRU.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (_,k){
var self__ = this;
var ___$1 = this;
return cljs.core._contains_key_QMARK_.call(null,self__.key_value,k);
});

datascript.lru.LRU.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (_,k){
var self__ = this;
var ___$1 = this;
return cljs.core._lookup.call(null,self__.key_value,k,null);
});

datascript.lru.LRU.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (_,k,nf){
var self__ = this;
var ___$1 = this;
return cljs.core._lookup.call(null,self__.key_value,k,nf);
});

datascript.lru.LRU.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (_,writer,opts){
var self__ = this;
var ___$1 = this;
return cljs.core._pr_writer.call(null,cljs.core.persistent_BANG_.call(null,self__.key_value),writer,opts);
});

datascript.lru.LRU.getBasis = (function (){
return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"key-value","key-value",1605624688,null),new cljs.core.Symbol(null,"gen-key","gen-key",392707442,null),new cljs.core.Symbol(null,"key-gen","key-gen",415199034,null),new cljs.core.Symbol(null,"gen","gen",1783106829,null),new cljs.core.Symbol(null,"limit","limit",284709164,null)], null);
});

datascript.lru.LRU.cljs$lang$type = true;

datascript.lru.LRU.cljs$lang$ctorStr = "datascript.lru/LRU";

datascript.lru.LRU.cljs$lang$ctorPrWriter = (function (this__15825__auto__,writer__15826__auto__,opt__15827__auto__){
return cljs.core._write.call(null,writer__15826__auto__,"datascript.lru/LRU");
});

datascript.lru.__GT_LRU = (function datascript$lru$__GT_LRU(key_value,gen_key,key_gen,gen,limit){
return (new datascript.lru.LRU(key_value,gen_key,key_gen,gen,limit));
});

datascript.lru.assoc_lru = (function datascript$lru$assoc_lru(lru,k,v){
var key_value = lru.key_value;
var gen_key = lru.gen_key;
var key_gen = lru.key_gen;
var gen = lru.gen;
var limit = lru.limit;
var temp__4655__auto__ = key_gen.call(null,k,null);
if(cljs.core.truth_(temp__4655__auto__)){
var g = temp__4655__auto__;
return datascript.lru.__GT_LRU.call(null,key_value,cljs.core.assoc.call(null,cljs.core.dissoc.call(null,gen_key,g),gen,k),cljs.core.assoc.call(null,key_gen,k,gen),(gen + (1)),limit);
} else {
return datascript.lru.cleanup_lru.call(null,datascript.lru.__GT_LRU.call(null,cljs.core.assoc.call(null,key_value,k,v),cljs.core.assoc.call(null,gen_key,gen,k),cljs.core.assoc.call(null,key_gen,k,gen),(gen + (1)),limit));
}
});
datascript.lru.cleanup_lru = (function datascript$lru$cleanup_lru(lru){
if((cljs.core.count.call(null,lru.key_value) > lru.limit)){
var key_value = lru.key_value;
var gen_key = lru.gen_key;
var key_gen = lru.key_gen;
var gen = lru.gen;
var limit = lru.limit;
var vec__24032 = cljs.core.first.call(null,gen_key);
var g = cljs.core.nth.call(null,vec__24032,(0),null);
var k = cljs.core.nth.call(null,vec__24032,(1),null);
return datascript.lru.__GT_LRU.call(null,cljs.core.dissoc.call(null,key_value,k),cljs.core.dissoc.call(null,gen_key,g),cljs.core.dissoc.call(null,key_gen,k),gen,limit);
} else {
return lru;
}
});
datascript.lru.lru = (function datascript$lru$lru(limit){
return datascript.lru.__GT_LRU.call(null,cljs.core.PersistentArrayMap.EMPTY,cljs.core.sorted_map.call(null),cljs.core.PersistentArrayMap.EMPTY,(0),limit);
});

//# sourceMappingURL=lru.js.map