Files
runelite/runescape-client/src/main/java/EvictingDualNodeHashTable.java
Lucwousin f6c2b4ac11 rev187
2019-12-16 18:40:02 +01:00

104 lines
2.2 KiB
Java

import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("eb")
@Implements("EvictingDualNodeHashTable")
public final class EvictingDualNodeHashTable {
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lgw;"
)
DualNode field1974;
@ObfuscatedName("i")
@Export("capacity")
int capacity;
@ObfuscatedName("y")
@Export("remainingCapacity")
int remainingCapacity;
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "Llc;"
)
@Export("hashTable")
IterableNodeHashTable hashTable;
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "Lji;"
)
@Export("deque")
IterableDualNodeQueue deque;
public EvictingDualNodeHashTable(int var1) {
this.field1974 = 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("f")
@ObfuscatedSignature(
signature = "(J)Lgw;"
)
@Export("get")
public DualNode get(long var1) {
DualNode var3 = (DualNode)this.hashTable.get(var1);
if (var3 != null) {
this.deque.add(var3);
}
return var3;
}
@ObfuscatedName("i")
@Export("remove")
public void remove(long var1) {
DualNode var3 = (DualNode)this.hashTable.get(var1);
if (var3 != null) {
var3.remove();
var3.removeDual();
++this.remainingCapacity;
}
}
@ObfuscatedName("y")
@ObfuscatedSignature(
signature = "(Lgw;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.field1974) {
var4 = this.deque.removeLast();
var4.remove();
var4.removeDual();
}
} else {
--this.remainingCapacity;
}
this.hashTable.put(var1, var2);
this.deque.add(var1);
}
@ObfuscatedName("w")
@Export("clear")
public void clear() {
this.deque.clear();
this.hashTable.clear();
this.field1974 = new DualNode();
this.remainingCapacity = this.capacity;
}
}