project: Injector and mixins
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
import java.util.Iterator;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
public class RuneLiteIterableNodeHashTable implements Iterator
|
||||
{
|
||||
public Node node;
|
||||
public final NodeHashTable nodeHashTable;
|
||||
public int it;
|
||||
|
||||
public RuneLiteIterableNodeHashTable(NodeHashTable nodeHashTable)
|
||||
{
|
||||
this.nodeHashTable = nodeHashTable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext()
|
||||
{
|
||||
if (this.it > 0 && this.nodeHashTable.buckets[this.it - 1] != this.node)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = this.it; i < this.nodeHashTable.size; ++i)
|
||||
{
|
||||
Node bucket = this.nodeHashTable.buckets[i];
|
||||
Node previous = bucket.previous;
|
||||
|
||||
if (bucket != previous)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Node next()
|
||||
{
|
||||
if (this.it > 0 && this.nodeHashTable.buckets[this.it - 1] != this.node)
|
||||
{
|
||||
Node node = this.node;
|
||||
this.node = node.previous;
|
||||
|
||||
return node;
|
||||
}
|
||||
else
|
||||
{
|
||||
Node node;
|
||||
Node previous;
|
||||
|
||||
do
|
||||
{
|
||||
if (this.it >= this.nodeHashTable.size)
|
||||
{
|
||||
throw new NoSuchElementException();
|
||||
}
|
||||
|
||||
node = this.nodeHashTable.buckets[this.it++];
|
||||
previous = node.previous;
|
||||
} while (node == previous);
|
||||
|
||||
this.node = previous.previous;
|
||||
|
||||
return previous;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user