2007-06-01 03:26:18 +00:00
|
|
|
package com.ibm.wala.classLoader;
|
|
|
|
|
2007-12-06 14:31:45 +00:00
|
|
|
import java.util.Set;
|
|
|
|
|
2007-06-01 18:50:24 +00:00
|
|
|
import com.ibm.wala.types.ClassLoaderReference;
|
|
|
|
import com.ibm.wala.types.TypeReference;
|
2008-01-24 22:05:28 +00:00
|
|
|
import com.ibm.wala.util.strings.Atom;
|
2007-06-01 03:26:18 +00:00
|
|
|
|
|
|
|
public interface Language {
|
|
|
|
|
2007-12-06 14:31:45 +00:00
|
|
|
public static Language JAVA = new LanguageImpl() {
|
2007-06-01 18:50:24 +00:00
|
|
|
public Atom getName() {
|
|
|
|
return ClassLoaderReference.Java;
|
|
|
|
}
|
2007-06-01 03:26:18 +00:00
|
|
|
|
2007-06-01 18:50:24 +00:00
|
|
|
public TypeReference getRootType() {
|
|
|
|
return TypeReference.JavaLangObject;
|
|
|
|
}
|
2007-06-01 03:26:18 +00:00
|
|
|
|
2007-06-01 18:50:24 +00:00
|
|
|
public TypeReference getConstantType(Object o) {
|
|
|
|
if (o instanceof String) {
|
|
|
|
return TypeReference.JavaLangString;
|
2008-02-21 18:44:22 +00:00
|
|
|
} else if (o instanceof IMethod) {
|
|
|
|
IMethod m = (IMethod) o;
|
|
|
|
return m.isInit() ? TypeReference.JavaLangReflectConstructor : TypeReference.JavaLangReflectMethod;
|
2007-06-01 18:50:24 +00:00
|
|
|
} else {
|
|
|
|
return null;
|
2007-06-01 03:26:18 +00:00
|
|
|
}
|
2007-06-01 18:50:24 +00:00
|
|
|
}
|
2007-06-28 14:27:38 +00:00
|
|
|
|
|
|
|
public boolean isNullType(TypeReference type) {
|
|
|
|
return false;
|
|
|
|
}
|
2007-06-01 18:50:24 +00:00
|
|
|
};
|
2007-06-01 03:26:18 +00:00
|
|
|
|
2007-06-01 18:50:24 +00:00
|
|
|
Atom getName();
|
2007-06-01 03:26:18 +00:00
|
|
|
|
2007-12-06 14:31:45 +00:00
|
|
|
Language getBaseLanguage();
|
|
|
|
|
|
|
|
void registerDerivedLanguage(Language l);
|
|
|
|
|
|
|
|
Set<Language> getDerivedLanguages();
|
|
|
|
|
2007-06-01 18:50:24 +00:00
|
|
|
TypeReference getRootType();
|
2007-06-01 03:26:18 +00:00
|
|
|
|
2007-06-01 18:50:24 +00:00
|
|
|
TypeReference getConstantType(Object o);
|
2007-06-01 03:26:18 +00:00
|
|
|
|
2007-06-28 14:27:38 +00:00
|
|
|
boolean isNullType(TypeReference type);
|
|
|
|
|
|
|
|
}
|