Class StandardOperatorTable2

All Implemented Interfaces:
JepComponent, OperatorTableI, Serializable
Direct Known Subclasses:
BigDecOperatorTable, BitwiseOperatorTable, ExtendedOperatorSet

public class StandardOperatorTable2 extends OperatorTable2
Provides the standard implementations of operators used by Jep. The logic is specified by the superclass OperatorTable2.
Author:
Richard Morris
See Also:
  • Constructor Details

    • StandardOperatorTable2

      public StandardOperatorTable2()
      Create the standard set of operators. Calls setBasicPfmcs(), setSpecialPfmcs(), setPsudoPfmcs().
    • StandardOperatorTable2

      public StandardOperatorTable2(OperatorTable2 oldTable)
      Decorator constructor. Shares the same set of operators as the argument and calls setBasicPfmcs(), setSpecialPfmcs(), setPsudoPfmcs() to assign new PFMC's to the operators.
      Parameters:
      oldTable - base table
    • StandardOperatorTable2

      protected StandardOperatorTable2(Map<EmptyOperatorTable.OperatorKey,Operator> oldTable)
      Constructor with pre-specified table of operators
      Parameters:
      oldTable -
  • Method Details

    • setBasicPfmcs

      protected void setBasicPfmcs()
      Sets the standard set of pfmc's for basic operators. This method is called by the constructor and subclasses can override this method to change or prevent building of these pfmcs.
      See Also:
    • setSpecialPfmcs

      protected void setSpecialPfmcs()
      Sets the standard set of pfmcs for special operator: assignment, dot product, cross product, the list operator and the element-of operator. This method is called by the constructor and subclasses can override this method to change or prevent building of these pfmcs.
      See Also:
    • setPsudoPfmcs

      protected void setPsudoPfmcs()
    • shallowCopy

      public OperatorTableI shallowCopy()
      Description copied from class: EmptyOperatorTable
      Create a new version of this OperatorTable. Operators are copied into new table. However, Operators whose pfmc implement JepComponent are duplicated. This means the table could be used in a separate thread without problem. Subclasses should override with method to return a table of the correct type, a typical implementation would be
          @Override
          public OperatorTableI shallowCopy() {
              Map<OperatorKey, Operator> map = this.threadSafeMapCopy();
              return new MyOperatorTable(map);
          }
       
      using the EmptyOperatorTable.threadSafeMapCopy() method to return a copy of the map of operators and a constructor taking this map which uses the EmptyOperatorTable(Map) constructor.
      Specified by:
      shallowCopy in interface OperatorTableI
      Overrides:
      shallowCopy in class OperatorTable2
      Returns:
      a new Table