package xsched.analysis.wala.schedule_extraction;
import java.util.HashSet;
import java.util.Set;
public class LoopContext {
private final Set<BackEdgeFlowData> backEdges = new HashSet<BackEdgeFlowData>();
private LoopContext() {
}
public static LoopContext emptyLoopContext() {
return new LoopContext();
}
public boolean isEmpty() {
return backEdges.isEmpty();
}
LoopContext contextByAddingLoop(BackEdgeFlowData backEdge) {
if(backEdges.contains(backEdge))
return this;
LoopContext lc = new LoopContext();
lc.backEdges.addAll(backEdges);
lc.backEdges.add(backEdge);
return lc;
}
@Override
public boolean equals(Object otherObj) {
return (otherObj == this) || (otherObj instanceof LoopContext && ((LoopContext)otherObj).backEdges.equals(backEdges));
}
@Override
public int hashCode() {
return backEdges.hashCode();
}
@Override
public String toString() {
return "{" + backEdges.toString() + "}";
}
}