soot
Interface Unit

All Known Subinterfaces:
AddInst, AndInst, ArrayLengthInst, ArrayReadInst, ArrayWriteInst, AssignStmt, BreakpointStmt, CmpgInst, CmpInst, CmplInst, DefinitionStmt, DivInst, Dup1_x1Inst, Dup1_x2Inst, Dup1Inst, Dup2_x1Inst, Dup2_x2Inst, Dup2Inst, DupInst, EnterMonitorInst, EnterMonitorStmt, ExitMonitorInst, ExitMonitorStmt, FieldArgInst, FieldGetInst, FieldPutInst, GotoInst, GotoStmt, IdentityInst, IdentityStmt, IdentityUnit, IfCmpEqInst, IfCmpGeInst, IfCmpGtInst, IfCmpLeInst, IfCmpLtInst, IfCmpNeInst, IfEqInst, IfGeInst, IfGtInst, IfLeInst, IfLtInst, IfNeInst, IfNonNullInst, IfNullInst, IfStmt, IncInst, Inst, InstanceCastInst, InstanceOfInst, InterfaceInvokeInst, InvokeStmt, LoadInst, LookupSwitchInst, LookupSwitchStmt, MethodArgInst, MonitorStmt, MulInst, NegInst, NewArrayInst, NewInst, NewMultiArrayInst, NoArgInst, NopInst, NopStmt, OpTypeArgInst, OrInst, PopInst, PrimitiveCastInst, PushInst, RemInst, RetInst, RetStmt, ReturnInst, ReturnStmt, ReturnVoidInst, ReturnVoidStmt, ShlInst, ShrInst, SpecialInvokeInst, StaticGetInst, StaticInvokeInst, StaticPutInst, Stmt, StoreInst, SubInst, SwapInst, TableSwitchInst, TableSwitchStmt, TargetArgInst, ThrowInst, ThrowStmt, UshrInst, VirtualInvokeInst, XorInst
All Known Implementing Classes:
AbstractUnit

public interface Unit
extends Switchable, Host, java.io.Serializable

A code fragment (eg Stmt or Inst), used within Body classes. Intermediate representations must use an implementation of Unit for their code. In general, a unit denotes some sort of unit for execution.


Method Summary
 void addBoxPointingToThis(UnitBox b)
          Adds a box to the list returned by getBoxesPointingToThis.
 boolean branches()
          Returns true if execution after this statement does not necessarily continue at the following statement.
 void clearUnitBoxes()
          Clears any pointers to and from this Unit's UnitBoxes.
 java.lang.Object clone()
           
 boolean fallsThrough()
          Returns true if execution after this statement may continue at the following statement.
 java.util.List getBoxesPointingToThis()
          Returns a list of Boxes pointing to this Unit.
 java.util.List getDefBoxes()
          Returns a list of Boxes containing Values defined in this Unit.
 java.util.List getUnitBoxes()
          Returns a list of Boxes containing Units defined in this Unit; typically branch targets.
 java.util.List getUseAndDefBoxes()
          Returns a list of Boxes containing any Value either used or defined in this Unit.
 java.util.List getUseBoxes()
          Returns a list of Boxes containing Values used in this Unit.
 void redirectJumpsToThisTo(Unit newLocation)
          Redirects jumps to this Unit to newLocation.
 void removeBoxPointingToThis(UnitBox b)
          Removes a box from the list returned by getBoxesPointingToThis.
 void toString(UnitPrinter up)
           
 
Methods inherited from interface soot.util.Switchable
apply
 
Methods inherited from interface soot.tagkit.Host
addAllTagsOf, addTag, getTag, getTags, hasTag, removeAllTags, removeTag
 

Method Detail

getUseBoxes

public java.util.List getUseBoxes()
Returns a list of Boxes containing Values used in this Unit.

getDefBoxes

public java.util.List getDefBoxes()
Returns a list of Boxes containing Values defined in this Unit.

getUnitBoxes

public java.util.List getUnitBoxes()
Returns a list of Boxes containing Units defined in this Unit; typically branch targets.

getBoxesPointingToThis

public java.util.List getBoxesPointingToThis()
Returns a list of Boxes pointing to this Unit.

addBoxPointingToThis

public void addBoxPointingToThis(UnitBox b)
Adds a box to the list returned by getBoxesPointingToThis.

removeBoxPointingToThis

public void removeBoxPointingToThis(UnitBox b)
Removes a box from the list returned by getBoxesPointingToThis.

clearUnitBoxes

public void clearUnitBoxes()
Clears any pointers to and from this Unit's UnitBoxes.

getUseAndDefBoxes

public java.util.List getUseAndDefBoxes()
Returns a list of Boxes containing any Value either used or defined in this Unit.

clone

public java.lang.Object clone()
Overrides:
clone in class java.lang.Object

fallsThrough

public boolean fallsThrough()
Returns true if execution after this statement may continue at the following statement. GotoStmt will return false but IfStmt will return true.

branches

public boolean branches()
Returns true if execution after this statement does not necessarily continue at the following statement. GotoStmt and IfStmt will both return true.

toString

public void toString(UnitPrinter up)

redirectJumpsToThisTo

public void redirectJumpsToThisTo(Unit newLocation)
Redirects jumps to this Unit to newLocation. In general, you shouldn't have to use this directly.
See Also:
PatchingChain.getNonPatchingChain(), Shimple.redirectToPreds(Chain, Unit), Shimple.redirectPointers(Unit, Unit)