package com.plectix.simulator.staticanalysis.stories.compressions;
import java.util.Iterator;
import com.plectix.simulator.staticanalysis.stories.storage.StateOfLink;
import com.plectix.simulator.staticanalysis.stories.storage.StoryStorageException;
/*package*/final class LinkStateIterator implements Iterator<StateOfLink> {
private final Iterator<StateOfLink> stateIterator;
private StateOfLink freeLinkState = new StateOfLink();
public LinkStateIterator(WeakCompression weak) throws StoryStorageException {
stateIterator = weak.getStorage().getInformationAboutWires()
.wireLinkStateIterator(
weak.getEvent().getWireKey(weak.getWireIdx()));
}
@Override
public final boolean hasNext() {
return freeLinkState != null;
}
@Override
public final StateOfLink next() {
if (stateIterator.hasNext())
return stateIterator.next();
if (freeLinkState != null) {
StateOfLink freeState = freeLinkState;
freeLinkState = null;
return freeState;
}
return null;
}
@Override
public final void remove() {
}
}