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, waitforEach, spliteratorpublic ClassLoaderFactory getFactory()
getFactory in interface IClassHierarchypublic AnalysisScope getScope()
getScope in interface IClassHierarchypublic IClassLoader[] getLoaders()
getLoaders in interface IClassHierarchypublic IClassLoader getLoader(ClassLoaderReference loaderRef)
getLoader in interface IClassHierarchypublic boolean addClass(IClass klass)
addClass in interface IClassHierarchypublic int getNumberOfClasses()
getNumberOfClasses in interface IClassHierarchypublic boolean isRootClass(IClass c)
isRootClass in interface IClassHierarchypublic IClass getRootClass()
getRootClass in interface IClassHierarchypublic int getNumber(IClass c)
getNumber in interface IClassHierarchypublic Set<IMethod> getPossibleTargets(MethodReference ref)
IClassHierarchygetPossibleTargets in interface IClassHierarchyref - method referencepublic Set<IMethod> getPossibleTargets(IClass receiverClass, MethodReference ref)
IClassHierarchygetPossibleTargets in interface IClassHierarchyreceiverClass - the class of the receiverref - method referencepublic IMethod resolveMethod(MethodReference m)
IClassHierarchyresolveMethod in interface IClassHierarchypublic IField resolveField(FieldReference f)
resolveField in interface IClassHierarchypublic IField resolveField(IClass klass, FieldReference f)
resolveField in interface IClassHierarchypublic IMethod resolveMethod(IClass receiver, Selector selector)
IClassHierarchyresolveMethod in interface IClassHierarchyreceiver - type of receiverselector - method signaturepublic IClass lookupClass(TypeReference A)
IClassHierarchylookupClass in interface IClassHierarchypublic boolean isInterface(TypeReference type)
isInterface in interface IClassHierarchypublic IClass getLeastCommonSuperclass(IClass A, IClass B)
getLeastCommonSuperclass in interface IClassHierarchypublic TypeReference getLeastCommonSuperclass(TypeReference A, TypeReference B)
getLeastCommonSuperclass in interface IClassHierarchypublic boolean isSubclassOf(IClass c, IClass T)
IClassHierarchyisSubclassOf in interface IClassHierarchypublic boolean implementsInterface(IClass c, IClass i)
IClassHierarchyimplementsInterface in interface IClassHierarchypublic Collection<IClass> computeSubClasses(TypeReference type)
IClassHierarchycomputeSubClasses in interface IClassHierarchypublic Collection<TypeReference> getJavaLangRuntimeExceptionTypes()
IClassHierarchyRuntimeException
kind of ugly. a better scheme?getJavaLangRuntimeExceptionTypes in interface IClassHierarchypublic Collection<TypeReference> getJavaLangErrorTypes()
IClassHierarchygetJavaLangErrorTypes in interface IClassHierarchypublic Set<IClass> getImplementors(TypeReference type)
getImplementors in interface IClassHierarchytype - an interfacepublic int getNumberOfImmediateSubclasses(IClass klass)
getNumberOfImmediateSubclasses in interface IClassHierarchypublic Collection<IClass> getImmediateSubclasses(IClass klass)
getImmediateSubclasses in interface IClassHierarchypublic boolean isAssignableFrom(IClass c1, IClass c2)
IClassHierarchyisAssignableFrom in interface IClassHierarchypublic static CrossLanguageClassHierarchy make(AnalysisScope scope, ClassLoaderFactory factory) throws ClassHierarchyException
ClassHierarchyExceptionpublic Set<TypeReference> getUnresolvedClasses()
getUnresolvedClasses in interface IClassHierarchy