Class UnaryStatement<T extends IVariable<T>>

All Implemented Interfaces:
IFixedPointStatement<T>, INodeWithNumber
Direct Known Subclasses:
AssignEquation, BasicUnaryStatement

public abstract class UnaryStatement<T extends IVariable<T>> extends AbstractStatement<T,UnaryOperator<T>>
Represents a single step, restricted to a unary operator.
  • Field Details

    • lhs

      protected final @Nullable T extends IVariable<T> lhs
      The operands
    • rhs

      protected final T extends IVariable<T> rhs
  • Constructor Details

    • UnaryStatement

      protected UnaryStatement(@Nullable T lhs, T rhs)
      Constructor for case of one operand on the right-hand side.
      Parameters:
      lhs - the lattice cell set by this equation
      rhs - the first operand on the rhs
  • Method Details

    • evaluate

      public byte evaluate()
      Evaluate this equation, setting a new value for the left-hand side.
      Returns:
      true if the lhs value changed. false otherwise
    • getLHS

      public @Nullable T getLHS()
      Return the left-hand side of this equation.
      Returns:
      the lattice cell this equation computes
    • getRightHandSide

      public T getRightHandSide()
      Returns:
      the right-hand side of this equation.
    • getOperands

      public IVariable<T>[] getOperands()
      Return the operands in this equation.
    • hasVariable

      public boolean hasVariable(T cell)
      Does this equation contain an appearance of a given cell?
      Parameters:
      cell - the cell in question
      Returns:
      true or false
    • toString

      public String toString()
      Return a string representation of this object
      Overrides:
      toString in class AbstractStatement<T extends IVariable<T>,UnaryOperator<T extends IVariable<T>>>
      Returns:
      a string representation of this object
    • equals

      public boolean equals(Object o)
      Specified by:
      equals in class AbstractStatement<T extends IVariable<T>,UnaryOperator<T extends IVariable<T>>>
    • hashCode

      public int hashCode()
      Description copied from class: AbstractStatement
      Subclasses must implement this, to prevent non-determinism.
      Specified by:
      hashCode in class AbstractStatement<T extends IVariable<T>,UnaryOperator<T extends IVariable<T>>>
    • getRHS

      public T[] getRHS() throws UnsupportedOperationException
      Description copied from interface: IFixedPointStatement
      returns the list of free variables appearing in the right-hand side of the statement
      Throws:
      UnsupportedOperationException