104 lines
2.3 KiB
Java
104 lines
2.3 KiB
Java
import net.runelite.mapping.Export;
|
|
import net.runelite.mapping.Implements;
|
|
import net.runelite.mapping.ObfuscatedName;
|
|
import net.runelite.mapping.ObfuscatedSignature;
|
|
|
|
@ObfuscatedName("em")
|
|
@Implements("EvictingDualNodeHashTable")
|
|
public final class EvictingDualNodeHashTable {
|
|
@ObfuscatedName("z")
|
|
@ObfuscatedSignature(
|
|
signature = "Lfw;"
|
|
)
|
|
DualNode field1937;
|
|
@ObfuscatedName("n")
|
|
@Export("capacity")
|
|
int capacity;
|
|
@ObfuscatedName("v")
|
|
@Export("remainingCapacity")
|
|
int remainingCapacity;
|
|
@ObfuscatedName("u")
|
|
@ObfuscatedSignature(
|
|
signature = "Llb;"
|
|
)
|
|
@Export("hashTable")
|
|
IterableNodeHashTable hashTable;
|
|
@ObfuscatedName("r")
|
|
@ObfuscatedSignature(
|
|
signature = "Lji;"
|
|
)
|
|
@Export("deque")
|
|
IterableDualNodeQueue deque;
|
|
|
|
public EvictingDualNodeHashTable(int var1) {
|
|
this.field1937 = new DualNode();
|
|
this.deque = new IterableDualNodeQueue();
|
|
this.capacity = var1;
|
|
this.remainingCapacity = var1;
|
|
|
|
int var2;
|
|
for (var2 = 1; var2 + var2 < var1; var2 += var2) {
|
|
}
|
|
|
|
this.hashTable = new IterableNodeHashTable(var2);
|
|
}
|
|
|
|
@ObfuscatedName("z")
|
|
@ObfuscatedSignature(
|
|
signature = "(J)Lfw;"
|
|
)
|
|
@Export("get")
|
|
public DualNode get(long var1) {
|
|
DualNode var3 = (DualNode)this.hashTable.get(var1);
|
|
if (var3 != null) {
|
|
this.deque.add(var3);
|
|
}
|
|
|
|
return var3;
|
|
}
|
|
|
|
@ObfuscatedName("n")
|
|
@Export("remove")
|
|
public void remove(long var1) {
|
|
DualNode var3 = (DualNode)this.hashTable.get(var1);
|
|
if (var3 != null) {
|
|
var3.remove();
|
|
var3.removeDual();
|
|
++this.remainingCapacity;
|
|
}
|
|
|
|
}
|
|
|
|
@ObfuscatedName("v")
|
|
@ObfuscatedSignature(
|
|
signature = "(Lfw;J)V"
|
|
)
|
|
@Export("put")
|
|
public void put(DualNode var1, long var2) {
|
|
if (this.remainingCapacity == 0) {
|
|
DualNode var4 = this.deque.removeLast();
|
|
var4.remove();
|
|
var4.removeDual();
|
|
if (var4 == this.field1937) {
|
|
var4 = this.deque.removeLast();
|
|
var4.remove();
|
|
var4.removeDual();
|
|
}
|
|
} else {
|
|
--this.remainingCapacity;
|
|
}
|
|
|
|
this.hashTable.put(var1, var2);
|
|
this.deque.add(var1);
|
|
}
|
|
|
|
@ObfuscatedName("u")
|
|
@Export("clear")
|
|
public void clear() {
|
|
this.deque.clear();
|
|
this.hashTable.clear();
|
|
this.field1937 = new DualNode();
|
|
this.remainingCapacity = this.capacity;
|
|
}
|
|
}
|