soot
Class Hierarchy

java.lang.Object
  extended by soot.Hierarchy

public class Hierarchy
extends Object

Represents the class hierarchy. It is closely linked to a Scene, and must be recreated if the Scene changes. The general convention is that if a method name contains "Including", then it returns the non-strict result; otherwise, it does a strict query (e.g. strict superclass).


Constructor Summary
Hierarchy()
          Constructs a hierarchy from the current scene.
 
Method Summary
 List getDirectImplementersOf(SootClass i)
          Returns a list of direct implementers of c, excluding itself.
 List getDirectSubclassesOf(SootClass c)
          Returns a list of direct subclasses of c, excluding c.
 List<SootClass> getDirectSubclassesOfIncluding(SootClass c)
          Returns a list of direct subclasses of c, including c.
 List getDirectSubinterfacesOf(SootClass c)
          Returns a list of direct subinterfaces of c.
 List<SootClass> getDirectSubinterfacesOfIncluding(SootClass c)
          Returns a list of direct subinterfaces of c, including itself.
 List getDirectSuperclassesOf(SootClass c)
          Returns a list of direct superclasses of c, excluding c.
 List getDirectSuperinterfacesOf(SootClass c)
          Returns a list of direct superinterfaces of c.
 List<SootClass> getImplementersOf(SootClass i)
          Returns a list of implementers of c, excluding itself.
 SootClass getLeastCommonSuperclassOf(SootClass c1, SootClass c2)
          Returns the most specific type which is an ancestor of both c1 and c2.
 List<SootClass> getSubclassesOf(SootClass c)
          Returns a list of subclasses of c, excluding itself.
 List<SootClass> getSubclassesOfIncluding(SootClass c)
          Returns a list of subclasses of c, including itself.
 List<SootClass> getSubinterfacesOf(SootClass c)
          Returns a list of subinterfaces of c, excluding itself.
 List<SootClass> getSubinterfacesOfIncluding(SootClass c)
          Returns a list of subinterfaces of c, including itself.
 List<SootClass> getSuperclassesOf(SootClass c)
          Returns a list of strict superclasses of c, starting with c's parent.
 List<SootClass> getSuperclassesOfIncluding(SootClass c)
          Returns a list of superclasses of c, including itself.
 List getSuperinterfacesOf(SootClass c)
          Returns a list of superinterfaces of c, excluding itself.
 boolean isClassDirectSubclassOf(SootClass c, SootClass c2)
          Returns true if child is a direct subclass of possibleParent.
 boolean isClassSubclassOf(SootClass child, SootClass possibleParent)
          Returns true if child is a subclass of possibleParent.
 boolean isClassSubclassOfIncluding(SootClass child, SootClass possibleParent)
          Returns true if child is, or is a subclass of, possibleParent.
 boolean isClassSuperclassOf(SootClass parent, SootClass possibleChild)
          Returns true if child is a superclass of possibleParent.
 boolean isClassSuperclassOfIncluding(SootClass parent, SootClass possibleChild)
          Returns true if parent is, or is a superclass of, possibleChild.
 boolean isInterfaceDirectSubinterfaceOf(SootClass child, SootClass possibleParent)
          Returns true if child is a direct subinterface of possibleParent.
 boolean isInterfaceSubinterfaceOf(SootClass child, SootClass possibleParent)
          Returns true if child is a subinterface of possibleParent.
 boolean isVisible(SootClass from, SootMethod m)
          Returns true if the method m is visible from code in the class from.
 List resolveAbstractDispatch(List classes, SootMethod m)
          Returns a list of possible targets for the given method and set of receiver types.
 List resolveAbstractDispatch(SootClass c, SootMethod m)
          Given an abstract dispatch to an object of type c and a method m, gives a list of possible receiver methods.
 List resolveConcreteDispatch(List classes, SootMethod m)
          Given a set of definite receiver types, returns a list of possible targets.
 SootMethod resolveConcreteDispatch(SootClass concreteType, SootMethod m)
          Given an object of actual type C (o = new C()), returns the method which will be called on an o.f() invocation.
 SootMethod resolveSpecialDispatch(SpecialInvokeExpr ie, SootMethod container)
          Returns the target for the given SpecialInvokeExpr.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Hierarchy

public Hierarchy()
Constructs a hierarchy from the current scene.

Method Detail

getSubclassesOfIncluding

public List<SootClass> getSubclassesOfIncluding(SootClass c)
Returns a list of subclasses of c, including itself.


getSubclassesOf

public List<SootClass> getSubclassesOf(SootClass c)
Returns a list of subclasses of c, excluding itself.


getSuperclassesOfIncluding

public List<SootClass> getSuperclassesOfIncluding(SootClass c)
Returns a list of superclasses of c, including itself.


getSuperclassesOf

public List<SootClass> getSuperclassesOf(SootClass c)
Returns a list of strict superclasses of c, starting with c's parent.


getSubinterfacesOfIncluding

public List<SootClass> getSubinterfacesOfIncluding(SootClass c)
Returns a list of subinterfaces of c, including itself.


getSubinterfacesOf

public List<SootClass> getSubinterfacesOf(SootClass c)
Returns a list of subinterfaces of c, excluding itself.


getSuperinterfacesOf

public List getSuperinterfacesOf(SootClass c)
Returns a list of superinterfaces of c, excluding itself.


getDirectSuperclassesOf

public List getDirectSuperclassesOf(SootClass c)
Returns a list of direct superclasses of c, excluding c.


getDirectSubclassesOf

public List getDirectSubclassesOf(SootClass c)
Returns a list of direct subclasses of c, excluding c.


getDirectSubclassesOfIncluding

public List<SootClass> getDirectSubclassesOfIncluding(SootClass c)
Returns a list of direct subclasses of c, including c.


getDirectSuperinterfacesOf

public List getDirectSuperinterfacesOf(SootClass c)
Returns a list of direct superinterfaces of c.


getDirectSubinterfacesOf

public List getDirectSubinterfacesOf(SootClass c)
Returns a list of direct subinterfaces of c.


getDirectSubinterfacesOfIncluding

public List<SootClass> getDirectSubinterfacesOfIncluding(SootClass c)
Returns a list of direct subinterfaces of c, including itself.


getDirectImplementersOf

public List getDirectImplementersOf(SootClass i)
Returns a list of direct implementers of c, excluding itself.


getImplementersOf

public List<SootClass> getImplementersOf(SootClass i)
Returns a list of implementers of c, excluding itself.


isClassSubclassOf

public boolean isClassSubclassOf(SootClass child,
                                 SootClass possibleParent)
Returns true if child is a subclass of possibleParent.


isClassSubclassOfIncluding

public boolean isClassSubclassOfIncluding(SootClass child,
                                          SootClass possibleParent)
Returns true if child is, or is a subclass of, possibleParent.


isClassDirectSubclassOf

public boolean isClassDirectSubclassOf(SootClass c,
                                       SootClass c2)
Returns true if child is a direct subclass of possibleParent.


isClassSuperclassOf

public boolean isClassSuperclassOf(SootClass parent,
                                   SootClass possibleChild)
Returns true if child is a superclass of possibleParent.


isClassSuperclassOfIncluding

public boolean isClassSuperclassOfIncluding(SootClass parent,
                                            SootClass possibleChild)
Returns true if parent is, or is a superclass of, possibleChild.


isInterfaceSubinterfaceOf

public boolean isInterfaceSubinterfaceOf(SootClass child,
                                         SootClass possibleParent)
Returns true if child is a subinterface of possibleParent.


isInterfaceDirectSubinterfaceOf

public boolean isInterfaceDirectSubinterfaceOf(SootClass child,
                                               SootClass possibleParent)
Returns true if child is a direct subinterface of possibleParent.


getLeastCommonSuperclassOf

public SootClass getLeastCommonSuperclassOf(SootClass c1,
                                            SootClass c2)
Returns the most specific type which is an ancestor of both c1 and c2.


isVisible

public boolean isVisible(SootClass from,
                         SootMethod m)
Returns true if the method m is visible from code in the class from.


resolveConcreteDispatch

public SootMethod resolveConcreteDispatch(SootClass concreteType,
                                          SootMethod m)
Given an object of actual type C (o = new C()), returns the method which will be called on an o.f() invocation.


resolveConcreteDispatch

public List resolveConcreteDispatch(List classes,
                                    SootMethod m)
Given a set of definite receiver types, returns a list of possible targets.


resolveAbstractDispatch

public List resolveAbstractDispatch(SootClass c,
                                    SootMethod m)
Given an abstract dispatch to an object of type c and a method m, gives a list of possible receiver methods.


resolveAbstractDispatch

public List resolveAbstractDispatch(List classes,
                                    SootMethod m)
Returns a list of possible targets for the given method and set of receiver types.


resolveSpecialDispatch

public SootMethod resolveSpecialDispatch(SpecialInvokeExpr ie,
                                         SootMethod container)
Returns the target for the given SpecialInvokeExpr.