Class LimitOperation

java.lang.Object
org.kigalisim.lang.operation.LimitOperation
All Implemented Interfaces:
Operation

public class LimitOperation extends Object implements Operation
Operation to limit a value to a range.
  • Constructor Details

    • LimitOperation

      public LimitOperation(Operation operand, Operation lowerBound, Operation upperBound)
      Create a new LimitOperation with both lower and upper bounds.
      Parameters:
      operand - The operand to limit.
      lowerBound - The lower bound.
      upperBound - The upper bound.
    • LimitOperation

      public LimitOperation(Operation operand, Operation upperBound)
      Create a new LimitOperation with only an upper bound.
      Parameters:
      operand - The operand to limit.
      upperBound - The upper bound.
    • LimitOperation

      public LimitOperation(Operation operand, Operation lowerBound, boolean isLowerBound)
      Create a new LimitOperation with only a lower bound.
      Parameters:
      operand - The operand to limit.
      lowerBound - The lower bound.
      isLowerBound - Flag to indicate this is a lower bound (to disambiguate from upper bound constructor).
  • Method Details

    • execute

      public void execute(PushDownMachine machine)
      Execute the calculation and leave the result at the top of the stack.
      Specified by:
      execute in interface Operation
      Parameters:
      machine - The machine in which to execute the calculation if needed.
    • getStaticSemantics

      public OperationStaticSemantics getStaticSemantics()
      Get a record describing this operation's semantics.

      Get a record describing this operation's semantics that are inferrable from its static expression in code. In other words, properties and effects which do not require inspection at time of executing the operation.

      Specified by:
      getStaticSemantics in interface Operation
      Returns:
      Inference of common static properties found for this operation.