Class JSwitchStmt

java.lang.Object
sootup.core.jimple.common.stmt.AbstractStmt
sootup.core.jimple.javabytecode.stmt.JSwitchStmt
All Implemented Interfaces:
EquivTo, BranchingStmt, Stmt, Acceptor<StmtVisitor>

public class JSwitchStmt extends AbstractStmt implements BranchingStmt
  • Constructor Details

    • JSwitchStmt

      public JSwitchStmt(@NonNull Immediate key, int lowIndex, int highIndex, @NonNull StmtPositionInfo positionInfo)
    • JSwitchStmt

      public JSwitchStmt(@NonNull Immediate key, @NonNull List<IntConstant> lookupValues, @NonNull StmtPositionInfo positionInfo)
      Constructs a new JSwitchStmt. lookupValues should be a list of IntConst s.
  • Method Details

    • isTableSwitch

      public boolean isTableSwitch()
    • getDefaultTarget

      public @NonNull Optional<Stmt> getDefaultTarget(@NonNull Body body)
    • getKey

      public Immediate getKey()
    • getUses

      public @NonNull Stream<Value> getUses()
      Description copied from class: AbstractStmt
      Returns a list of Values used in this Stmt. Note that they are returned in usual evaluation order.
      Specified by:
      getUses in interface Stmt
      Overrides:
      getUses in class AbstractStmt
    • fallsThrough

      public boolean fallsThrough()
      Description copied from interface: Stmt
      Returns true if execution after this statement may continue at the following statement. (e.g. GotoStmt will return false and e.g. IfStmt will return true).
      Specified by:
      fallsThrough in interface Stmt
    • branches

      public boolean branches()
      Description copied from interface: Stmt
      Returns true if execution after this statement does not necessarily continue at the following statement. The BranchingStmt's GotoStmt, JSwitchStmt and IfStmt will return true.
      Specified by:
      branches in interface BranchingStmt
      Specified by:
      branches in interface Stmt
    • accept

      public <V extends StmtVisitor> V accept(@NonNull V v)
      Description copied from interface: Acceptor
      Called when this object is visited.
      Specified by:
      accept in interface Acceptor<StmtVisitor>
    • getValueCount

      public int getValueCount()
      Amount of labels +1 for default handler
    • getValue

      public int getValue(int index)
    • getValues

      public @NonNull List<IntConstant> getValues()
    • getTargetStmts

      public @NonNull List<Stmt> getTargetStmts(Body body)
      Specified by:
      getTargetStmts in interface BranchingStmt
    • getExpectedSuccessorCount

      public int getExpectedSuccessorCount()
      Description copied from class: AbstractStmt
      Returns the amount of unexceptional successors the Stmt needs to have in the StmtGraph.
      Specified by:
      getExpectedSuccessorCount in interface Stmt
      Overrides:
      getExpectedSuccessorCount in class AbstractStmt
    • equivTo

      public boolean equivTo(@NonNull Object o, @NonNull JimpleComparator comparator)
      Description copied from interface: EquivTo
      Returns true if this object is equivalent to o according to the given comparator.
      Specified by:
      equivTo in interface EquivTo
    • equivHashCode

      public int equivHashCode()
      Description copied from interface: EquivTo
      Returns a (not necessarily fixed) hash code for this object. This hash code coincides with equivTo; it is undefined in the presence of mutable objects. The contract is defined in JimpleComparator.
      Specified by:
      equivHashCode in interface EquivTo
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toString

      public void toString(@NonNull StmtPrinter stmtPrinter)
      Specified by:
      toString in interface Stmt
    • withKey

      public @NonNull JSwitchStmt withKey(@NonNull Immediate key)
    • withValues

      public @NonNull JSwitchStmt withValues(@NonNull List<IntConstant> values)
    • withPositionInfo

      public @NonNull JSwitchStmt withPositionInfo(@NonNull StmtPositionInfo positionInfo)