Class NullWrappedOperatorTable

  • All Implemented Interfaces:
    JepComponent, OperatorTableI, java.io.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:
    NullSafeEquals, Serialized Form
    • Constructor Detail

      • 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
    • Method Detail

      • 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