com.googlecode.dex2jar.ir.StmtTraveler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle Show documentation
Show all versions of gradle Show documentation
fakeradnroid gradle builder
package com.googlecode.dex2jar.ir;
import com.googlecode.dex2jar.ir.expr.Value;
import com.googlecode.dex2jar.ir.stmt.Stmt;
import com.googlecode.dex2jar.ir.stmt.StmtList;
import java.util.Iterator;
public class StmtTraveler {
public void travel(IrMethod method) {
travel(method.stmts);
}
public void travel(StmtList stmts) {
for (Iterator it = stmts.iterator(); it.hasNext(); ) {
Stmt stmt = it.next();
Stmt n = travel(stmt);
if (n != stmt) {
stmts.insertBefore(stmt, n);
it.remove();
}
}
}
public Stmt travel(Stmt stmt) {
switch (stmt.et) {
case E0:
break;
case E1:
stmt.setOp(travel(stmt.getOp()));
break;
case E2:
stmt.setOp1(travel(stmt.getOp1()));
stmt.setOp2(travel(stmt.getOp2()));
break;
case En:
Value[] ops = stmt.getOps();
for (int i = 0; i < ops.length; i++) {
ops[i] = travel(ops[i]);
}
break;
}
return stmt;
}
public Value travel(Value op) {
switch (op.et) {
case E0:
break;
case E1:
op.setOp(travel(op.getOp()));
break;
case E2:
op.setOp1(travel(op.getOp1()));
op.setOp2(travel(op.getOp2()));
break;
case En:
Value[] ops = op.getOps();
for (int i = 0; i < ops.length; i++) {
ops[i] = travel(ops[i]);
}
break;
}
return op;
}
}