1 19 20 package soot.dava.internal.javaRep; 21 22 import soot.*; 23 import java.util.*; 24 import soot.grimp.*; 25 import soot.jimple.*; 26 import soot.jimple.internal.*; 27 28 public class DNewMultiArrayExpr extends AbstractNewMultiArrayExpr 29 { 30 public DNewMultiArrayExpr(ArrayType type, List sizes) 31 { 32 super(type, new ValueBox[sizes.size()]); 33 34 for(int i = 0; i < sizes.size(); i++) 35 sizeBoxes[i] = Grimp.v().newExprBox((Value) sizes.get(i)); 36 } 37 38 public Object clone() 39 { 40 List clonedSizes = new ArrayList(getSizeCount()); 41 42 for(int i = 0; i < getSizeCount(); i++) { 43 clonedSizes.add(i, Grimp.cloneIfNecessary(getSize(i))); 44 } 45 46 return new DNewMultiArrayExpr(getBaseType(), clonedSizes); 47 } 48 49 public void toString( UnitPrinter up ) 50 { 51 up.literal( "new" ); 52 up.literal( " " ); 53 up.type( getBaseType().baseType ); 54 for( int i = 0; i < sizeBoxes.length; i++ ) { 55 up.literal( "[" ); 56 sizeBoxes[i].toString( up ); 57 up.literal( "]" ); 58 } 59 60 for (int i=getSizeCount(); i<getBaseType().numDimensions; i++) 61 up.literal( "[]"); 62 } 63 public String toString() 64 { 65 StringBuffer buffer = new StringBuffer (); 66 67 buffer.append( "new " + getBaseType().baseType); 68 List sizes = getSizes(); 69 Iterator it = getSizes().iterator(); 70 while (it.hasNext()) 71 buffer.append( "[" + it.next().toString() + "]"); 72 73 for (int i=getSizeCount(); i<getBaseType().numDimensions; i++) 74 buffer.append( "[]"); 75 76 return buffer.toString(); 77 } 78 79 } 80 | Popular Tags |