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
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:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
Key for the one operator NullSafeEquals added by the table.Nested classes/interfaces inherited from class com.singularsys.jep.OperatorTable2
OperatorTable2.BasicOperators, OperatorTable2.PsudoOperators, OperatorTable2.SpecialOperators
Nested classes/interfaces inherited from class com.singularsys.jep.EmptyOperatorTable
EmptyOperatorTable.OperatorKey
-
Field Summary
Modifier and TypeFieldDescriptionprotected NullWrappedFunctionFactory
protected boolean
protected OperatorTable2
-
Constructor Summary
ModifierConstructorDescriptionNullWrappedOperatorTable
(OperatorTable2 root, boolean hasNullSafeEquals) Create a new operator table which wraps all the existing operators in the original table.NullWrappedOperatorTable
(OperatorTable2 root, NullWrappedFunctionFactory factory, boolean hasNullSafeEquals) A table where a specific NullWrapperFunctionFactory is defined.protected
-
Method Summary
Modifier and TypeMethodDescriptionCreate a new version of this OperatorTable.Methods inherited from class com.singularsys.jep.OperatorTable2
getAdd, getAnd, getAssign, getCross, getDivide, getDot, getEle, getEQ, getGE, getGT, getLE, getList, getLT, getMod, getMultiply, getNE, getNop, getNot, getOr, getPower, getRange, getSubtract, getUDivide, getUMinus, getUPlus
Methods inherited from class com.singularsys.jep.EmptyOperatorTable
addOperator, addOperator, addOperator, appendOperator, appendOperator, entrySet, getKey, getLightWeightInstance, getNumOps, getOperator, getOperatorMap, getOperators, getOperatorsByName, getOperatorsBySymbol, init, insertOperator, insertOperator, keySet, removeOperator, removeOperator, replaceOperator, replaceOperator, setBinaryInverseOp, setDistributiveOver, setGroupOperatorRelations, setGroupOperatorRelations, setInverseOp, setPrecedenceTable, setRootOp, setStandardOperatorRelations, threadSafeMapCopy, toString
-
Field Details
-
root
-
factory
-
hasNullSafeEquals
protected boolean hasNullSafeEquals
-
-
Constructor Details
-
NullWrappedOperatorTable
Create a new operator table which wraps all the existing operators in the original table. CallsNullWrappedFunctionFactory.getWrappedFunction(PostfixMathCommandI)
to find the appropriate PFMC for each operator.- Parameters:
root
- the original operator tablehasNullSafeEquals
- 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
-
-
Method Details
-
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 theEmptyOperatorTable.threadSafeMapCopy()
method to return a copy of the map of operators and a constructor taking this map which uses theEmptyOperatorTable(Map)
constructor.- Specified by:
shallowCopy
in interfaceOperatorTableI
- Overrides:
shallowCopy
in classOperatorTable2
- Returns:
- a new Table
-