Class GeneralComparison

    • Field Detail

      • singletonOperator

        protected int singletonOperator
    • Constructor Detail

      • GeneralComparison

        public GeneralComparison​(Expression p0,
                                 int op,
                                 Expression p1)
        Create a relational expression identifying the two operands and the operator
        Parameters:
        p0 - the left-hand operand
        op - the operator, as a token returned by the Tokenizer (e.g. Token.LT)
        p1 - the right-hand operand
    • Method Detail

      • getSingletonOperator

        public int getSingletonOperator()
        Get the primitive (singleton) operator used: one of Token.FEQ, Token.FNE, Token.FLT, Token.FGT, Token.FLE, Token.FGE
        Specified by:
        getSingletonOperator in interface ComparisonExpression
      • convertsUntypedToOther

        public boolean convertsUntypedToOther()
        Determine whether untyped atomic values should be converted to the type of the other operand
        Specified by:
        convertsUntypedToOther in interface ComparisonExpression
        Returns:
        true if untyped values should be converted to the type of the other operand, false if they should be converted to strings.
      • typeCheck

        public Expression typeCheck​(ExpressionVisitor visitor,
                                    ItemType contextItemType)
                             throws XPathException
        Type-check the expression
        Overrides:
        typeCheck in class BinaryExpression
        Parameters:
        visitor - an expression visitor
        contextItemType - the static type of "." at the point where this expression is invoked. The parameter is set to null if it is known statically that the context item will be undefined. If the type of the context item is not known statically, the argument is set to Type.ITEM_TYPE
        Returns:
        the checked expression
        Throws:
        XPathException - if an error is discovered during this phase (typically a type error)
      • optimize

        public Expression optimize​(ExpressionVisitor visitor,
                                   ItemType contextItemType)
                            throws XPathException
        Optimize the expression
        Overrides:
        optimize in class BinaryExpression
        Parameters:
        visitor - an expression visitor
        contextItemType - the static type of "." at the point where this expression is invoked. The parameter is set to null if it is known statically that the context item will be undefined. If the type of the context item is not known statically, the argument is set to Type.ITEM_TYPE
        Returns:
        the checked expression
        Throws:
        XPathException - if an error is discovered during this phase (typically a type error)
      • copy

        public Expression copy()
        Copy an expression. This makes a deep copy.
        Specified by:
        copy in class Expression
        Returns:
        the copy of the original expression
      • evaluateItem

        public Item evaluateItem​(XPathContext context)
                          throws XPathException
        Evaluate the expression in a given context
        Specified by:
        evaluateItem in interface EvaluableItem
        Overrides:
        evaluateItem in class Expression
        Parameters:
        context - the given context for evaluation
        Returns:
        a BooleanValue representing the result of the numeric comparison of the two operands
        Throws:
        XPathException - if any dynamic error occurs evaluating the expression
      • effectiveBooleanValue

        public boolean effectiveBooleanValue​(XPathContext context)
                                      throws XPathException
        Evaluate the expression in a boolean context
        Overrides:
        effectiveBooleanValue in class Expression
        Parameters:
        context - the given context for evaluation
        Returns:
        a boolean representing the result of the numeric comparison of the two operands
        Throws:
        XPathException - if any dynamic error occurs evaluating the expression
      • compare

        protected static boolean compare​(AtomicValue a1,
                                         int operator,
                                         AtomicValue a2,
                                         AtomicComparer comparer,
                                         XPathContext context)
                                  throws XPathException
        Compare two atomic values
        Parameters:
        a1 - the first value
        operator - the operator, for example Token.EQUALS
        a2 - the second value
        comparer - the comparer to be used to perform the comparison
        context - the XPath evaluation context
        Returns:
        true if the comparison succeeds
        Throws:
        XPathException
      • getItemType

        public ItemType getItemType​(TypeHierarchy th)
        Determine the data type of the expression
        Specified by:
        getItemType in class Expression
        Parameters:
        th - the type hierarchy cache
        Returns:
        the value BuiltInAtomicType.BOOLEAN