105 lines
2.5 KiB
Java
105 lines
2.5 KiB
Java
import net.runelite.mapping.Export;
|
|
import net.runelite.mapping.Implements;
|
|
import net.runelite.mapping.ObfuscatedName;
|
|
import net.runelite.mapping.ObfuscatedSignature;
|
|
|
|
@ObfuscatedName("iq")
|
|
@Implements("EvictingDualNodeHashTable")
|
|
public final class EvictingDualNodeHashTable {
|
|
@ObfuscatedName("v")
|
|
@ObfuscatedSignature(
|
|
descriptor = "Loh;"
|
|
)
|
|
@Export("dualNode")
|
|
DualNode dualNode;
|
|
@ObfuscatedName("o")
|
|
@Export("capacity")
|
|
int capacity;
|
|
@ObfuscatedName("h")
|
|
@Export("remainingCapacity")
|
|
int remainingCapacity;
|
|
@ObfuscatedName("g")
|
|
@ObfuscatedSignature(
|
|
descriptor = "Lpq;"
|
|
)
|
|
@Export("hashTable")
|
|
IterableNodeHashTable hashTable;
|
|
@ObfuscatedName("l")
|
|
@ObfuscatedSignature(
|
|
descriptor = "Lmq;"
|
|
)
|
|
@Export("deque")
|
|
IterableDualNodeQueue deque;
|
|
|
|
public EvictingDualNodeHashTable(int var1) {
|
|
this.dualNode = new DualNode(); // L: 8
|
|
this.deque = new IterableDualNodeQueue(); // L: 12
|
|
this.capacity = var1; // L: 15
|
|
this.remainingCapacity = var1; // L: 16
|
|
|
|
int var2;
|
|
for (var2 = 1; var2 + var2 < var1; var2 += var2) { // L: 17 18
|
|
}
|
|
|
|
this.hashTable = new IterableNodeHashTable(var2); // L: 19
|
|
} // L: 20
|
|
|
|
@ObfuscatedName("v")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(J)Loh;"
|
|
)
|
|
@Export("get")
|
|
public DualNode get(long var1) {
|
|
DualNode var3 = (DualNode)this.hashTable.get(var1); // L: 24
|
|
if (var3 != null) { // L: 25
|
|
this.deque.add(var3); // L: 26
|
|
}
|
|
|
|
return var3; // L: 29
|
|
}
|
|
|
|
@ObfuscatedName("o")
|
|
@Export("remove")
|
|
public void remove(long var1) {
|
|
DualNode var3 = (DualNode)this.hashTable.get(var1); // L: 33
|
|
if (var3 != null) { // L: 34
|
|
var3.remove(); // L: 35
|
|
var3.removeDual(); // L: 36
|
|
++this.remainingCapacity; // L: 37
|
|
}
|
|
|
|
} // L: 39
|
|
|
|
@ObfuscatedName("h")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(Loh;J)V"
|
|
)
|
|
@Export("put")
|
|
public void put(DualNode var1, long var2) {
|
|
if (this.remainingCapacity == 0) { // L: 42
|
|
DualNode var4 = this.deque.removeLast(); // L: 43
|
|
var4.remove(); // L: 44
|
|
var4.removeDual(); // L: 45
|
|
if (var4 == this.dualNode) { // L: 46
|
|
var4 = this.deque.removeLast(); // L: 47
|
|
var4.remove(); // L: 48
|
|
var4.removeDual(); // L: 49
|
|
}
|
|
} else {
|
|
--this.remainingCapacity; // L: 52
|
|
}
|
|
|
|
this.hashTable.put(var1, var2); // L: 53
|
|
this.deque.add(var1); // L: 54
|
|
} // L: 55
|
|
|
|
@ObfuscatedName("g")
|
|
@Export("clear")
|
|
public void clear() {
|
|
this.deque.clear(); // L: 58
|
|
this.hashTable.clear(); // L: 59
|
|
this.dualNode = new DualNode(); // L: 60
|
|
this.remainingCapacity = this.capacity; // L: 61
|
|
} // L: 62
|
|
}
|