@Override public List<Object> getSequentialObjects() { List<Object> lst = new ArrayList<>(); switch (looptype) { case LOOP_FOR: if (getInitExprent() != null) { lst.add(getInitExprent()); } case LOOP_WHILE: lst.add(getConditionExprent()); } lst.add(first); switch (looptype) { case LOOP_DOWHILE: lst.add(getConditionExprent()); break; case LOOP_FOR: lst.add(getIncExprent()); } return lst; }
loop.getIncExprent() == null) { // "downgrade" loop to 'while' loop.setLooptype(DoStatement.LOOP_WHILE);
List<Exprent> lstSpecial = Arrays.asList(dstat.getConditionExprent(), dstat.getIncExprent()); for (VarExprent var : getAllVars(lstSpecial)) { if (var.getIndex() == index) {
public static void lowContinueLabels(Statement stat, HashSet<StatEdge> edges) { boolean ok = (stat.type != Statement.TYPE_DO); if (!ok) { DoStatement dostat = (DoStatement)stat; ok = dostat.getLooptype() == DoStatement.LOOP_DO || dostat.getLooptype() == DoStatement.LOOP_WHILE || (dostat.getLooptype() == DoStatement.LOOP_FOR && dostat.getIncExprent() == null); } if (ok) { edges.addAll(stat.getPredecessorEdges(StatEdge.TYPE_CONTINUE)); } if (ok && stat.type == Statement.TYPE_DO) { for (StatEdge edge : edges) { if (stat.containsStatementStrict(edge.getSource())) { edge.getDestination().removePredecessor(edge); edge.getSource().changeEdgeNode(Statement.DIRECTION_FORWARD, edge, stat); stat.addPredecessor(edge); stat.addLabeledEdge(edge); } } } for (Statement st : stat.getStats()) { if (st == stat.getFirst()) { lowContinueLabels(st, edges); } else { lowContinueLabels(st, new HashSet<>()); } } }
public List<Object> getSequentialObjects() { List<Object> lst = new ArrayList<>(); switch (looptype) { case LOOP_FOR: if (getInitExprent() != null) { lst.add(getInitExprent()); } case LOOP_WHILE: lst.add(getConditionExprent()); } lst.add(first); switch (looptype) { case LOOP_DOWHILE: lst.add(getConditionExprent()); break; case LOOP_FOR: lst.add(getIncExprent()); } return lst; }
loop.getIncExprent() == null) { // "downgrade" loop to 'while' loop.setLooptype(DoStatement.LOOP_WHILE);
List<Exprent> lstSpecial = Arrays.asList(dstat.getConditionExprent(), dstat.getIncExprent()); for (VarExprent var : getAllVars(lstSpecial)) { if (var.getIndex() == index.intValue()) {
public static void lowContinueLabels(Statement stat, HashSet<StatEdge> edges) { boolean ok = (stat.type != Statement.TYPE_DO); if (!ok) { DoStatement dostat = (DoStatement)stat; ok = dostat.getLooptype() == DoStatement.LOOP_DO || dostat.getLooptype() == DoStatement.LOOP_WHILE || (dostat.getLooptype() == DoStatement.LOOP_FOR && dostat.getIncExprent() == null); } if (ok) { edges.addAll(stat.getPredecessorEdges(StatEdge.TYPE_CONTINUE)); } if (ok && stat.type == Statement.TYPE_DO) { for (StatEdge edge : edges) { if (stat.containsStatementStrict(edge.getSource())) { edge.getDestination().removePredecessor(edge); edge.getSource().changeEdgeNode(Statement.DIRECTION_FORWARD, edge, stat); stat.addPredecessor(edge); stat.addLabeledEdge(edge); } } } for (Statement st : stat.getStats()) { if (st == stat.getFirst()) { lowContinueLabels(st, edges); } else { lowContinueLabels(st, new HashSet<>()); } } }