Class NullWrappedOperatorTable

java.lang.Object
com.singularsys.jep.EmptyOperatorTable
com.singularsys.jep.OperatorTable2
com.singularsys.jep.misc.nullwrapper.NullWrappedOperatorTable
All Implemented Interfaces:
JepComponent, OperatorTableI, Serializable

public class NullWrappedOperatorTable extends OperatorTable2
An operator table where the operators generally return null if either argument is null. The table can optionally add a null-safe equals operator <=> which acts like equals but returns 1 if both arguments are null.
Since:
3.4
Author:
Richard Morris
See Also:
  • Field Details

  • Constructor Details

    • NullWrappedOperatorTable

      public NullWrappedOperatorTable(OperatorTable2 root, boolean hasNullSafeEquals)
      Create a new operator table which wraps all the existing operators in the original table. Calls NullWrappedFunctionFactory.getWrappedFunction(PostfixMathCommandI) to find the appropriate PFMC for each operator.
      Parameters:
      root - the original operator table
      hasNullSafeEquals - if true adds a NullSafeEquals operator "<=>" to the table
    • NullWrappedOperatorTable

      public NullWrappedOperatorTable(OperatorTable2 root, NullWrappedFunctionFactory factory, boolean hasNullSafeEquals)
      A table where a specific NullWrapperFunctionFactory is defined.
      Parameters:
      root -
      factory -
      hasNullSafeEquals -
      Since:
      Jep 3.5
    • NullWrappedOperatorTable

      protected NullWrappedOperatorTable(Map<EmptyOperatorTable.OperatorKey,Operator> map)
  • Method Details

    • 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