4 public class TypeUtil {
5 public static final String StringClass="java.lang.String";
9 public TypeUtil(State state) {
14 public ClassDescriptor getClass(String classname) {
15 ClassDescriptor cd=(ClassDescriptor)state.getClassSymbolTable().get(classname);
19 private void createTables() {
20 supertable=new Hashtable();
21 Iterator classit=state.getClassSymbolTable().getDescriptorsIterator();
22 while(classit.hasNext()) {
23 ClassDescriptor cd=(ClassDescriptor)classit.next();
24 String superc=cd.getSuper();
26 ClassDescriptor cd_super=getClass(superc);
27 supertable.put(cd,cd_super);
32 public ClassDescriptor getSuper(ClassDescriptor cd) {
33 return (ClassDescriptor)supertable.get(cd);
36 public boolean isSuperorType(TypeDescriptor possiblesuper, TypeDescriptor cd2) {
37 if ((possiblesuper.getClassDesc()==null)||
38 cd2.getClassDesc()==null)
40 return isSuperorType(possiblesuper.getClassDesc(), cd2.getClassDesc());
44 public boolean isSuperorType(ClassDescriptor possiblesuper, ClassDescriptor cd2) {
45 if (possiblesuper==cd2)
48 return isSuper(possiblesuper, cd2);
51 public boolean isSuper(ClassDescriptor possiblesuper, ClassDescriptor cd2) {
54 if (cd2==possiblesuper)