Files
runelite/runescape-client/src/main/java/IterableNodeDeque.java
2019-07-07 21:43:55 +02:00

145 lines
3.2 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("ja")
@Implements("IterableNodeDeque")
public class IterableNodeDeque implements Iterable {
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "Lgw;"
)
@Export("sentinel")
Node sentinel;
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lgw;"
)
@Export("current")
Node current;
public IterableNodeDeque() {
this.sentinel = new Node();
this.sentinel.previous = this.sentinel;
this.sentinel.next = this.sentinel;
}
@ObfuscatedName("m")
@Export("clear")
public void clear() {
while (this.sentinel.previous != this.sentinel) {
this.sentinel.previous.remove();
}
}
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(Lgw;)V"
)
@Export("addFirst")
public void addFirst(Node node) {
if (node.next != null) {
node.remove();
}
node.next = this.sentinel.next;
node.previous = this.sentinel;
node.next.previous = node;
node.previous.next = node;
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(Lgw;)V"
)
@Export("addLast")
public void addLast(Node node) {
if (node.next != null) {
node.remove();
}
node.next = this.sentinel;
node.previous = this.sentinel.previous;
node.next.previous = node;
node.previous.next = node;
}
@ObfuscatedName("o")
@ObfuscatedSignature(
signature = "()Lgw;"
)
@Export("last")
public Node last() {
return this.previousOrLast((Node)null);
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Lgw;)Lgw;"
)
@Export("previousOrLast")
Node previousOrLast(Node node) {
Node var2;
if (node == null) {
var2 = this.sentinel.previous;
} else {
var2 = node;
}
if (var2 == this.sentinel) {
this.current = null;
return null;
} else {
this.current = var2.previous;
return var2;
}
}
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "()Lgw;"
)
@Export("previous")
public Node previous() {
Node var1 = this.current;
if (var1 == this.sentinel) {
this.current = null;
return null;
} else {
this.current = var1.previous;
return var1;
}
}
@ObfuscatedName("l")
@Export("isEmpty")
public boolean isEmpty() {
return this.sentinel.previous == this.sentinel;
}
@Export("iterator")
@ObfuscatedName("iterator")
public Iterator iterator() {
return new IterableNodeDequeDescendingIterator(this);
}
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "(Lgw;Lgw;)V"
)
@Export("IterableNodeDeque_addBefore")
public static void IterableNodeDeque_addBefore(Node node, Node old) {
if (node.next != null) {
node.remove();
}
node.next = old;
node.previous = old.previous;
node.next.previous = node;
node.previous.next = node;
}
}