package jqian.sootex.util.graph;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import soot.toolkits.graph.DirectedGraph;
import soot.toolkits.graph.DominatorNode;
import soot.toolkits.graph.DominatorTree;
/**
*
*/
@SuppressWarnings("unchecked")
public class DominatorTreeGraph implements DirectedGraph<DominatorNode>{
DominatorTree tree;
public DominatorTreeGraph(DominatorTree tree){
this.tree = tree;
}
public List<DominatorNode> getHeads() {
List<DominatorNode> list = new ArrayList<DominatorNode>(1);
list.add(tree.getHead());
return list;
}
public List<DominatorNode> getTails() {
return tree.getTails();
}
public List<DominatorNode> getPredsOf(DominatorNode s) {
List<DominatorNode> list = new ArrayList<DominatorNode>(1);
list.add(s.getParent());
return list;
}
public List<DominatorNode> getSuccsOf(DominatorNode s) {
return s.getChildren();
}
public int size() {
return tree.size();
}
public Iterator<DominatorNode> iterator() {
return tree.iterator();
}
}