Files
runelite/runescape-client/src/main/java/IterableNodeHashTableIterator.java
2019-07-05 00:49:24 +02:00

102 lines
2.5 KiB
Java

import java.util.Iterator;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("lk")
@Implements("IterableNodeHashTableIterator")
public class IterableNodeHashTableIterator implements Iterator {
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "Llh;"
)
@Export("hashTable")
IterableNodeHashTable hashTable;
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lgw;"
)
@Export("head")
Node head;
@ObfuscatedName("q")
@Export("index")
int index;
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "Lgw;"
)
@Export("last")
Node last;
@ObfuscatedSignature(
signature = "(Llh;)V"
)
IterableNodeHashTableIterator(IterableNodeHashTable var1) {
this.last = null;
this.hashTable = var1;
this.start();
}
@ObfuscatedName("u")
@Export("start")
void start() {
this.head = this.hashTable.buckets[0].previous;
this.index = 1;
this.last = null;
}
@Export("next")
@ObfuscatedName("next")
public Object next() {
Node var1;
if (this.hashTable.buckets[this.index - 1] != this.head) {
var1 = this.head;
this.head = var1.previous;
this.last = var1;
return var1;
} else {
while (this.index < this.hashTable.size) {
var1 = this.hashTable.buckets[this.index++].previous;
if (var1 != this.hashTable.buckets[this.index - 1]) {
this.head = var1.previous;
this.last = var1;
return var1;
}
}
return null;
}
}
@Export("hasNext")
@ObfuscatedName("hasNext")
public boolean hasNext() {
if (this.hashTable.buckets[this.index - 1] != this.head) {
return true;
} else {
while (this.index < this.hashTable.size) {
if (this.hashTable.buckets[this.index++].previous != this.hashTable.buckets[this.index - 1]) {
this.head = this.hashTable.buckets[this.index - 1].previous;
return true;
}
this.head = this.hashTable.buckets[this.index - 1];
}
return false;
}
}
@ObfuscatedName("remove")
@Export("remove")
public void remove() {
if (this.last == null) {
throw new IllegalStateException();
} else {
this.last.remove();
this.last = null;
}
}
}