com.ibm.wala.shrikeBT.analysis
Class ClassHierarchy

java.lang.Object
  extended by com.ibm.wala.shrikeBT.analysis.ClassHierarchy

public final class ClassHierarchy
extends java.lang.Object

This class takes the raw information from a ClassHierarchyProvider and computes type operations (subtype check, type union). All operations are static. Because ClassHierarchyProvider sometimes only provides partial information, these routines sometimes answer "don't know".


Field Summary
static int MAYBE
          Equals Constants.MAYBE
static int NO
          Equals Constants.NO
static int YES
          Equals Constants.YES
 
Method Summary
static java.lang.String findCommonSupertype(ClassHierarchyProvider hierarchy, java.lang.String t1, java.lang.String t2)
          Compute the most specific common supertype.
static int isSubtypeOf(ClassHierarchyProvider hierarchy, java.lang.String t1, java.lang.String t2)
          Perform subtype check.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO

public static final int NO
Equals Constants.NO

See Also:
Constant Field Values

YES

public static final int YES
Equals Constants.YES

See Also:
Constant Field Values

MAYBE

public static final int MAYBE
Equals Constants.MAYBE

See Also:
Constant Field Values
Method Detail

isSubtypeOf

public static int isSubtypeOf(ClassHierarchyProvider hierarchy,
                              java.lang.String t1,
                              java.lang.String t2)
Perform subtype check.

Parameters:
hierarchy - the hierarchy information to use for the decision
t1 - a type in JVM format
t2 - a type in JVM format
Returns:
whether t1 is a subtype of t2 (YES, NO, MAYBE)

findCommonSupertype

public static java.lang.String findCommonSupertype(ClassHierarchyProvider hierarchy,
                                                   java.lang.String t1,
                                                   java.lang.String t2)
Compute the most specific common supertype.

Parameters:
hierarchy - the hierarchy information to use for the decision
t1 - a type in JVM format
t2 - a type in JVM format
Returns:
the most specific common supertype of t1 and t2, or TYPE_unknown if it cannot be determined or cannot be represented as a Java type, or null if there is no common supertype