1 19 20 26 27 28 29 30 31 32 package soot.grimp.internal; 33 34 import soot.*; 35 import soot.grimp.*; 36 import soot.util.*; 37 import java.util.*; 38 import soot.jimple.*; 39 import soot.jimple.internal.*; 40 41 public class GArrayRef extends JArrayRef implements Precedence 42 { 43 public GArrayRef(Value base, Value index) 44 { 45 super(Grimp.v().newObjExprBox(base), 46 Grimp.v().newExprBox(index)); 47 } 48 49 public int getPrecedence() { return 950; } 50 51 private String toString(Value op1, 52 String leftOp, String rightOp) 53 { 54 if (op1 instanceof Precedence && 55 ((Precedence)op1).getPrecedence() < getPrecedence()) 56 leftOp = "(" + leftOp + ")"; 57 58 return leftOp + "[" + rightOp + "]"; 59 } 60 61 public void toString( UnitPrinter up ) { 62 if( PrecedenceTest.needsBrackets( baseBox, this ) ) up.literal("("); 63 baseBox.toString(up); 64 if( PrecedenceTest.needsBrackets( baseBox, this ) ) up.literal(")"); 65 up.literal("["); 66 indexBox.toString(up); 67 up.literal("]"); 68 } 69 70 public String toString() 71 { 72 Value op1 = getBase(), op2 = getIndex(); 73 String leftOp = op1.toString(), rightOp = op2.toString(); 74 75 return toString(op1, leftOp, rightOp); 76 } 77 78 public Object clone() 79 { 80 return new GArrayRef(Grimp.cloneIfNecessary(getBase()), Grimp.cloneIfNecessary(getIndex())); 81 } 82 83 } 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | Popular Tags |