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("a") @ObfuscatedSignature( signature = "Lfa;" ) DualNode field1936; @ObfuscatedName("t") @Export("capacity") int capacity; @ObfuscatedName("n") @Export("remainingCapacity") int remainingCapacity; @ObfuscatedName("q") @ObfuscatedSignature( signature = "Llr;" ) @Export("hashTable") IterableNodeHashTable hashTable; @ObfuscatedName("v") @ObfuscatedSignature( signature = "Ljq;" ) @Export("deque") IterableDualNodeQueue deque; public EvictingDualNodeHashTable(int var1) { this.field1936 = 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("a") @ObfuscatedSignature( signature = "(J)Lfa;" ) @Export("get") public DualNode get(long var1) { DualNode var3 = (DualNode)this.hashTable.get(var1); if (var3 != null) { this.deque.add(var3); } return var3; } @ObfuscatedName("t") @Export("remove") public void remove(long var1) { DualNode var3 = (DualNode)this.hashTable.get(var1); if (var3 != null) { var3.remove(); var3.removeDual(); ++this.remainingCapacity; } } @ObfuscatedName("n") @ObfuscatedSignature( signature = "(Lfa;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.field1936) { var4 = this.deque.removeLast(); var4.remove(); var4.removeDual(); } } else { --this.remainingCapacity; } this.hashTable.put(var1, var2); this.deque.add(var1); } @ObfuscatedName("q") @Export("clear") public void clear() { this.deque.clear(); this.hashTable.clear(); this.field1936 = new DualNode(); this.remainingCapacity = this.capacity; } }