1 19 20 25 26 27 package soot; 28 29 import soot.util.*; 30 import java.util.*; 31 import java.io.*; 32 33 34 public abstract class Type implements Switchable, Serializable, Numberable 35 { 36 public Type() { 37 Scene.v().getTypeNumberer().add( this ); 38 } 39 40 public abstract String toString(); 41 42 43 public static Type toMachineType(Type t) 44 { 45 if(t.equals(ShortType.v()) || t.equals(ByteType.v()) || 46 t.equals(BooleanType.v()) || t.equals(CharType.v())) 47 { 48 return IntType.v(); 49 } 50 else 51 return t; 52 } 53 54 55 56 public Type merge(Type other, Scene cm) 57 { 58 throw new RuntimeException ("illegal type merge: " 60 + this + " and " + other); 61 } 62 63 64 public void apply(Switch sw) 65 { 66 } 67 68 public void setArrayType( ArrayType at ) { 69 arrayType = at; 70 } 71 public ArrayType getArrayType() { 72 return arrayType; 73 } 74 public ArrayType makeArrayType() { 75 return ArrayType.v( this, 1 ); 76 } 77 78 public final int getNumber() { return number; } 79 public final void setNumber( int number ) { this.number = number; } 80 81 protected ArrayType arrayType; 82 private int number = 0; 83 } 84 | Popular Tags |