Interface InfixOperator

All Superinterfaces:
Serializable
All Known Implementing Classes:
AbstractCompareOperator, AbstractNumericOperator, AddOperator, ConcatOperator, DivideOperator, EqualOperator, GreaterEqualOperator, GreaterOperator, LesserEqualOperator, LesserOperator, MultiplyOperator, NotEqualOperator, PowerOperator, SubtractOperator

public interface InfixOperator extends Serializable
An operator. An operator always takes two arguments. Prefix and postfix operators are implemented differently.
Author:
Thomas Morgner
  • Method Details

    • evaluate

      TypeValuePair evaluate(FormulaContext context, TypeValuePair value1, TypeValuePair value2) throws EvaluationException
      Evaluates the comptuation for both parameters. This method must never return null.
      Parameters:
      context -
      value1 -
      value2 -
      Returns:
      Throws:
      EvaluationException
    • getLevel

      int getLevel()
    • isLeftOperation

      boolean isLeftOperation()
      Defines the bind-direction of the operator. That direction defines, in which direction a sequence of equal operators is resolved.
      Returns:
      true, if the operation is left-binding, false if right-binding
    • isAssociative

      boolean isAssociative()
      Defines, whether the operation is associative. For associative operations, the evaluation order does not matter, if the operation appears more than once in an expression, and therefore we can optimize them a lot better than non-associative operations (ie. merge constant parts and precompute them once).
      Returns:
      true, if the operation is associative, false otherwise