public class CrossLanguageClassHierarchy extends Object implements IClassHierarchy
Modifier and Type | Method and Description |
---|---|
boolean |
addClass(IClass klass) |
Collection<IClass> |
computeSubClasses(TypeReference type)
Return set of all subclasses of type in the Class Hierarchy
|
ClassLoaderFactory |
getFactory() |
Collection<IClass> |
getImmediateSubclasses(IClass klass) |
Set<IClass> |
getImplementors(TypeReference type) |
Collection<TypeReference> |
getJavaLangErrorTypes()
Solely for optimization; return a Collection
|
Collection<TypeReference> |
getJavaLangRuntimeExceptionTypes()
Solely for optimization; return a Collection
RuntimeException
kind of ugly. |
IClass |
getLeastCommonSuperclass(IClass A,
IClass B) |
TypeReference |
getLeastCommonSuperclass(TypeReference A,
TypeReference B) |
IClassLoader |
getLoader(ClassLoaderReference loaderRef) |
IClassLoader[] |
getLoaders() |
int |
getNumber(IClass c) |
int |
getNumberOfClasses() |
int |
getNumberOfImmediateSubclasses(IClass klass) |
Set<IMethod> |
getPossibleTargets(IClass receiverClass,
MethodReference ref)
Find the possible targets of a call to a method reference where the receiver is of a certain type
|
Set<IMethod> |
getPossibleTargets(MethodReference ref)
Find the possible targets of a call to a method reference
|
IClass |
getRootClass() |
AnalysisScope |
getScope() |
Set<TypeReference> |
getUnresolvedClasses()
BEGIN Custom change: unresolved classes
|
boolean |
implementsInterface(IClass c,
IClass i)
Does c implement i?
|
boolean |
isAssignableFrom(IClass c1,
IClass c2)
Does an expression c1 x := c2 y typecheck?
i.e.
|
boolean |
isInterface(TypeReference type) |
boolean |
isRootClass(IClass c) |
boolean |
isSubclassOf(IClass c,
IClass T)
Is c a subclass of T?
|
Iterator<IClass> |
iterator() |
IClass |
lookupClass(TypeReference A)
Load a class using one of the loaders specified for this class hierarchy
|
static CrossLanguageClassHierarchy |
make(AnalysisScope scope,
ClassLoaderFactory factory) |
IField |
resolveField(FieldReference f) |
IField |
resolveField(IClass klass,
FieldReference f) |
IMethod |
resolveMethod(IClass receiver,
Selector selector)
Return the unique receiver of an invocation of method on an object of type declaringClass
|
IMethod |
resolveMethod(MethodReference m)
Return the unique receiver of an invocation of method on an object of type m.getDeclaredClass
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
forEach, spliterator
public ClassLoaderFactory getFactory()
getFactory
in interface IClassHierarchy
public AnalysisScope getScope()
getScope
in interface IClassHierarchy
public IClassLoader[] getLoaders()
getLoaders
in interface IClassHierarchy
public IClassLoader getLoader(ClassLoaderReference loaderRef)
getLoader
in interface IClassHierarchy
public boolean addClass(IClass klass)
addClass
in interface IClassHierarchy
public int getNumberOfClasses()
getNumberOfClasses
in interface IClassHierarchy
public boolean isRootClass(IClass c)
isRootClass
in interface IClassHierarchy
public IClass getRootClass()
getRootClass
in interface IClassHierarchy
public int getNumber(IClass c)
getNumber
in interface IClassHierarchy
public Set<IMethod> getPossibleTargets(MethodReference ref)
IClassHierarchy
getPossibleTargets
in interface IClassHierarchy
ref
- method referencepublic Set<IMethod> getPossibleTargets(IClass receiverClass, MethodReference ref)
IClassHierarchy
getPossibleTargets
in interface IClassHierarchy
receiverClass
- the class of the receiverref
- method referencepublic IMethod resolveMethod(MethodReference m)
IClassHierarchy
resolveMethod
in interface IClassHierarchy
public IField resolveField(FieldReference f)
resolveField
in interface IClassHierarchy
public IField resolveField(IClass klass, FieldReference f)
resolveField
in interface IClassHierarchy
public IMethod resolveMethod(IClass receiver, Selector selector)
IClassHierarchy
resolveMethod
in interface IClassHierarchy
receiver
- type of receiverselector
- method signaturepublic IClass lookupClass(TypeReference A)
IClassHierarchy
lookupClass
in interface IClassHierarchy
public boolean isInterface(TypeReference type)
isInterface
in interface IClassHierarchy
public IClass getLeastCommonSuperclass(IClass A, IClass B)
getLeastCommonSuperclass
in interface IClassHierarchy
public TypeReference getLeastCommonSuperclass(TypeReference A, TypeReference B)
getLeastCommonSuperclass
in interface IClassHierarchy
public boolean isSubclassOf(IClass c, IClass T)
IClassHierarchy
isSubclassOf
in interface IClassHierarchy
public boolean implementsInterface(IClass c, IClass i)
IClassHierarchy
implementsInterface
in interface IClassHierarchy
public Collection<IClass> computeSubClasses(TypeReference type)
IClassHierarchy
computeSubClasses
in interface IClassHierarchy
public Collection<TypeReference> getJavaLangRuntimeExceptionTypes()
IClassHierarchy
RuntimeException
kind of ugly. a better scheme?getJavaLangRuntimeExceptionTypes
in interface IClassHierarchy
public Collection<TypeReference> getJavaLangErrorTypes()
IClassHierarchy
getJavaLangErrorTypes
in interface IClassHierarchy
public Set<IClass> getImplementors(TypeReference type)
getImplementors
in interface IClassHierarchy
type
- an interfacepublic int getNumberOfImmediateSubclasses(IClass klass)
getNumberOfImmediateSubclasses
in interface IClassHierarchy
public Collection<IClass> getImmediateSubclasses(IClass klass)
getImmediateSubclasses
in interface IClassHierarchy
public boolean isAssignableFrom(IClass c1, IClass c2)
IClassHierarchy
isAssignableFrom
in interface IClassHierarchy
public static CrossLanguageClassHierarchy make(AnalysisScope scope, ClassLoaderFactory factory) throws ClassHierarchyException
ClassHierarchyException
public Set<TypeReference> getUnresolvedClasses()
getUnresolvedClasses
in interface IClassHierarchy