1 19 20 25 26 27 28 29 30 31 package soot.grimp.internal; 32 33 import soot.*; 34 import soot.grimp.*; 35 import soot.jimple.internal.*; 36 import soot.jimple.*; 37 import soot.grimp.*; 38 import soot.jimple.internal.*; 39 import soot.util.*; 40 import java.util.*; 41 42 public class GLookupSwitchStmt extends JLookupSwitchStmt 43 { 44 private static UnitBox[] getTargetBoxesArray(List targets) 46 { 47 UnitBox[] targetBoxes = new UnitBox[targets.size()]; 48 49 for(int i = 0; i < targetBoxes.length; i++) 50 targetBoxes[i] = Grimp.v().newStmtBox((Stmt) targets.get(i)); 51 52 return targetBoxes; 53 } 54 55 public GLookupSwitchStmt(Value key, List lookupValues, List targets, Unit defaultTarget) 56 { 57 super(Grimp.v().newExprBox(key), 58 lookupValues, getTargetBoxesArray(targets), 59 Grimp.v().newStmtBox(defaultTarget)); 60 } 61 62 63 public Object clone() 64 { 65 int lookupValueCount = getLookupValues().size(); 66 List clonedLookupValues = new ArrayList(lookupValueCount); 67 68 for( int i = 0; i < lookupValueCount ;i++) { 69 clonedLookupValues.add(i, new Integer (getLookupValue(i))); 70 } 71 72 return new GLookupSwitchStmt(Grimp.cloneIfNecessary(getKey()), clonedLookupValues, getTargets(), getDefaultTarget()); 73 } 74 75 } 76 | Popular Tags |