Class AbstractVariable<T extends AbstractVariable<T>>

    • Constructor Detail

      • AbstractVariable

        protected AbstractVariable()
    • Method Detail

      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • nextHash

        public static int nextHash()
        I know this is theoretically bad. However,
        • we need this to be extremely fast .. it's in the inner loop of lots of stuff.
        • these objects will probably only be hashed with each other AbstractVariables, in which case incrementing hash codes is OK.
        • we want determinism, so we don't want to rely on System.identityHashCode
      • hashCode

        public final int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • getOrderNumber

        public int getOrderNumber()
        Description copied from interface: IVariable
        Variables must allow the solver implementation to get/set an order number, which the solver uses to control evaluation order. It might be cleaner to hold this on the side, but we cannot tolerate any extra space. TODO: consider moving this functionality to a subinterface?
        Specified by:
        getOrderNumber in interface IVariable<T extends AbstractVariable<T>>
        Returns:
        a number used to order equation evaluation
      • setOrderNumber

        public void setOrderNumber​(int orderNumber)
        Description copied from interface: IVariable
        Variables must allow the solver implementation to get/set an order number, which the solver uses to control evaluation order. It might be cleaner to hold this on the side, but we cannot tolerate any extra space. TODO: consider moving this functionality to a subinterface?
        Specified by:
        setOrderNumber in interface IVariable<T extends AbstractVariable<T>>