soot.toolkits.graph.pdg
Class PDGRegion
java.lang.Object
soot.toolkits.graph.pdg.PDGRegion
- All Implemented Interfaces:
- Iterable<PDGNode>, IRegion
public class PDGRegion
- extends Object
- implements IRegion, Iterable<PDGNode>
This represents a region of control dependence obtained by constructing a
program dependence graph. A PDGRegion is slightly different than a weak or
strong region; the loops and conditional relations between regions are
explicitly represented in the PDGRegion.
- Author:
- Hossein Sadat-Mohtasham
Sep 2009
PDGRegion
public PDGRegion(int id,
SootMethod m,
SootClass c,
UnitGraph ug,
PDGNode node)
PDGRegion
public PDGRegion(int id,
List<PDGNode> nodes,
SootMethod m,
SootClass c,
UnitGraph ug,
PDGNode node)
PDGRegion
public PDGRegion(PDGNode node)
getCorrespondingPDGNode
public PDGNode getCorrespondingPDGNode()
clone
public Object clone()
- Overrides:
clone in class Object
getSootMethod
public SootMethod getSootMethod()
- Specified by:
getSootMethod in interface IRegion
getSootClass
public SootClass getSootClass()
- Specified by:
getSootClass in interface IRegion
getNodes
public List<PDGNode> getNodes()
getUnitGraph
public UnitGraph getUnitGraph()
- Specified by:
getUnitGraph in interface IRegion
iterator
public Iterator<PDGNode> iterator()
- return an iterator that know how to follow the control flow in a region. This
actually returns a ChildPDGFlowIterator that only iterates through the
dependent nodes that contribute to the units that belong to a region as defined
by a weak region.
- Specified by:
iterator in interface Iterable<PDGNode>
getUnits
public List<Unit> getUnits()
- Specified by:
getUnits in interface IRegion
unit2PDGNode
public PDGNode unit2PDGNode(Unit u)
- Parameters:
a - Statement within the region
- Returns:
- The PDGNode that contains that unit, if this unit is in this region.
getUnits
public List<Unit> getUnits(Unit from,
Unit to)
- Specified by:
getUnits in interface IRegion
getLast
public Unit getLast()
- Specified by:
getLast in interface IRegion
getFirst
public Unit getFirst()
- Specified by:
getFirst in interface IRegion
getBlocks
public List<Block> getBlocks()
- Specified by:
getBlocks in interface IRegion
addPDGNode
public void addPDGNode(PDGNode node)
getID
public int getID()
- Specified by:
getID in interface IRegion
occursBefore
public boolean occursBefore(Unit u1,
Unit u2)
- Specified by:
occursBefore in interface IRegion
setParent
public void setParent(IRegion pr)
- Specified by:
setParent in interface IRegion
getParent
public IRegion getParent()
- Specified by:
getParent in interface IRegion
addChildRegion
public void addChildRegion(IRegion chr)
- Specified by:
addChildRegion in interface IRegion
getChildRegions
public List<IRegion> getChildRegions()
- Specified by:
getChildRegions in interface IRegion
toString
public String toString()
- Overrides:
toString in class Object