@Override public Statement getSimpleCopy() { return new SwitchStatement(); }
private static void hideDefaultSwitchEdges(Statement stat) { if (stat.type == Statement.TYPE_SWITCH) { SwitchStatement swst = (SwitchStatement)stat; int last = swst.getCaseStatements().size() - 1; if (last >= 0) { // empty switch possible Statement stlast = swst.getCaseStatements().get(last); if (stlast.getExprents() != null && stlast.getExprents().isEmpty()) { if (!stlast.getAllSuccessorEdges().get(0).explicit) { List<StatEdge> lstEdges = swst.getCaseEdges().get(last); lstEdges.remove(swst.getDefault_edge()); if (lstEdges.isEmpty()) { swst.getCaseStatements().remove(last); swst.getCaseEdges().remove(last); } } } } } for (Statement st : stat.getStats()) { hideDefaultSwitchEdges(st); } }
public static void simplify(SwitchStatement switchStatement) { SwitchExprent switchExprent = (SwitchExprent)switchStatement.getHeadexprent(); Exprent value = switchExprent.getValue(); if (isEnumArray(value)) { List<List<Exprent>> caseValues = switchStatement.getCaseValues(); Map<Exprent, Exprent> mapping = new HashMap<>(caseValues.size()); ArrayExprent array = (ArrayExprent)value;
@Override public void initSimpleCopy() { first = stats.get(0); default_edge = first.getSuccessorEdges(Statement.STATEDGE_DIRECT_ALL).get(0); sortEdgesAndNodes(); }
case Statement.TYPE_SWITCH: SwitchStatement swst = (SwitchStatement)parent; for (int i = 0; i < swst.getCaseStatements().size() - 1; i++) { Statement stt = swst.getCaseStatements().get(i); if (stt == stat) { Statement stnext = swst.getCaseStatements().get(i + 1);
if ((res = SwitchStatement.isHead(head)) != null) { return res;
buf.append(first.toJava(indent, tracer)); if (isLabeled()) { buf.appendIndent(indent).append("label").append(this.id.toString()).append(":").appendLineSeparator(); tracer.incrementCurrentSourceLine();
break; case Statement.TYPE_SWITCH: tailexprlst = ((SwitchStatement)stat).getHeadexprentList(); break; case Statement.TYPE_IF:
((SwitchStatement)parent).sortEdgesAndNodes();
lst.addAll(((SwitchStatement)parent).getCaseStatements());
if ((res = SwitchStatement.isHead(head)) != null) { return res;
buf.append(first.toJava(indent, tracer)); if (isLabeled()) { buf.appendIndent(indent).append("label").append(this.id.toString()).append(":").appendLineSeparator(); tracer.incrementCurrentSourceLine();
break; case Statement.TYPE_SWITCH: tailexprlst = ((SwitchStatement)stat).getHeadexprentList(); break; case Statement.TYPE_IF:
private static void hideDefaultSwitchEdges(Statement stat) { if (stat.type == Statement.TYPE_SWITCH) { SwitchStatement swst = (SwitchStatement)stat; int last = swst.getCaseStatements().size() - 1; if (last >= 0) { // empty switch possible Statement stlast = swst.getCaseStatements().get(last); if (stlast.getExprents() != null && stlast.getExprents().isEmpty()) { if (!stlast.getAllSuccessorEdges().get(0).explicit) { List<StatEdge> lstEdges = swst.getCaseEdges().get(last); lstEdges.remove(swst.getDefault_edge()); if (lstEdges.isEmpty()) { swst.getCaseStatements().remove(last); swst.getCaseEdges().remove(last); } } } } } for (Statement st : stat.getStats()) { hideDefaultSwitchEdges(st); } }
public static void simplify(SwitchStatement switchStatement) { SwitchExprent switchExprent = (SwitchExprent)switchStatement.getHeadexprent(); Exprent value = switchExprent.getValue(); if (isEnumArray(value)) { List<List<Exprent>> caseValues = switchStatement.getCaseValues(); Map<Exprent, Exprent> mapping = new HashMap<>(caseValues.size()); ArrayExprent array = (ArrayExprent)value;
((SwitchStatement)stat).sortEdgesAndNodes();
SwitchStatement swst = (SwitchStatement)stat; for (int i = 0; i < swst.getCaseStatements().size() - 1; i++) { Statement stt = swst.getCaseStatements().get(i); Statement stnext = swst.getCaseStatements().get(i + 1); int last = swst.getCaseStatements().size() - 1; if (last >= 0) { // empty switch possible Statement stlast = swst.getCaseStatements().get(last); if (stlast.getExprents() != null && stlast.getExprents().isEmpty()) { StatEdge edge = stlast.getAllSuccessorEdges().get(0);
public static Statement isHead(Statement head) { if (head.type == Statement.TYPE_BASICBLOCK && head.getLastBasicType() == Statement.LASTBASICTYPE_SWITCH) { List<Statement> lst = new ArrayList<>(); if (DecHelper.isChoiceStatement(head, lst)) { Statement post = lst.remove(0); for (Statement st : lst) { if (st.isMonitorEnter()) { return null; } } if (DecHelper.checkStatementExceptions(lst)) { return new SwitchStatement(head, post); } } } return null; }
public void initSimpleCopy() { first = stats.get(0); default_edge = first.getSuccessorEdges(Statement.STATEDGE_DIRECT_ALL).get(0); sortEdgesAndNodes(); }
case Statement.TYPE_SWITCH: SwitchStatement swst = (SwitchStatement)parent; for (int i = 0; i < swst.getCaseStatements().size() - 1; i++) { Statement stt = swst.getCaseStatements().get(i); if (stt == stat) { Statement stnext = swst.getCaseStatements().get(i + 1);