Class ExpressionTreeElement

java.lang.Object
com.igormaznitsa.jcp.expression.ExpressionTreeElement

public class ExpressionTreeElement extends Object
The class describes a wrapper around an expression item to be saved into an expression tree
Author:
Igor Maznitsa (igor.maznitsa@igormaznitsa.com)
  • Field Details

  • Method Details

    • isEmptySlot

      public boolean isEmptySlot()
      Allows to check that the element is EMPTY_SLOT
      Returns:
      true if the element is empty slot, false otherwise
    • getItem

      public ExpressionItem getItem()
      Get the wrapped item
      Returns:
      the item to be wrapped by the object
    • getArity

      public int getArity()
      Get arity for the element (I mean possible children number)
      Returns:
      the arity, zero for elements without children
    • getParent

      public ExpressionTreeElement getParent()
      Get the parent for the element
      Returns:
      the parent for the element or null if the element is the tree root
    • getPriority

      public int getPriority()
      Get the current priority of the element
      Returns:
      the priority
    • addSubTree

      public ExpressionTreeElement addSubTree(ExpressionTree tree)
      Add a tree as new child and make the maximum priority for it
      Parameters:
      tree - a tree to be added as a child, must not be null
      Returns:
      it returns this
    • replaceElement

      public boolean replaceElement(ExpressionTreeElement oldOne, ExpressionTreeElement newOne)
      It replaces a child element
      Parameters:
      oldOne - the old expression element to be replaced (must not be null)
      newOne - the new expression element to be used instead the old one (must not be null)
      Returns:
      true if the element was found and replaced, else false
    • getChildForIndex

      public ExpressionTreeElement getChildForIndex(int index)
      Get the child element for its index (the first is 0)
      Parameters:
      index - the index of the needed child
      Returns:
      the child or EMPTY_SLOT
      Throws:
      ArrayIndexOutOfBoundsException - it will be thrown if an impossible index is being used
      See Also:
    • addTreeElement

      public ExpressionTreeElement addTreeElement(ExpressionTreeElement element)
      Add tree element with sorting operation depends on priority of the elements
      Parameters:
      element - the element to be added, must not be null
      Returns:
      the element which should be used as the last for the current tree
    • isFull

      public boolean isFull()
      It allows to check that all children slots have been filled
      Returns:
      true if there is not any free child slot else false
    • fillArguments

      public void fillArguments(@MustNotContainNull List<ExpressionTree> arguments)
      It fills children slots from a list containing expression trees
      Parameters:
      arguments - the list containing trees to be used as children
    • postProcess

      public void postProcess()
      Post-processing after the tree is formed, the unary minus operation will be optimized