package de.gaalop.tba.cfgImport; import de.gaalop.cfg.BlockEndNode; import de.gaalop.cfg.BreakNode; import de.gaalop.cfg.ControlFlowGraph; import de.gaalop.cfg.EmptyControlFlowVisitor; import de.gaalop.cfg.IfThenElseNode; import de.gaalop.cfg.LoopNode; /** * Visitor for checking of Control Flow in a ControlFlowGraph * @author Christian Steinmetz */ public class ContainsControlFlow extends EmptyControlFlowVisitor { private boolean containsControlFlow = false; public boolean isContainsControlFlow() { return containsControlFlow; } @Override public void visit(IfThenElseNode node) { containsControlFlow = true; } @Override public void visit(LoopNode node) { containsControlFlow = true; } @Override public void visit(BreakNode node) { containsControlFlow = true; } @Override public void visit(BlockEndNode node) { containsControlFlow = true; } /** * Determines, if a given ControlFlowGraph contains Control Flow * @param graph The ControlFlowGraph, which should be checked * @return <value>true</value> if the graph contains Control Flow, <value>false</value> otherwise */ public static boolean containsControlFlow(ControlFlowGraph graph) { ContainsControlFlow c = new ContainsControlFlow(); graph.accept(c); return c.isContainsControlFlow(); } }