net.sf.saxon.expr

## Class GeneralComparison10

- java.lang.Object
- - net.sf.saxon.expr.Expression
  - - net.sf.saxon.expr.BinaryExpression
    - - net.sf.saxon.expr.GeneralComparison10

- All Implemented Interfaces:
    Serializable, SourceLocator, LocationProvider, SaxonLocator, Callable, InstructionInfo, Locator

      public class GeneralComparison10
      extends BinaryExpression
      implements Callable

  GeneralComparison10: a boolean expression that compares two expressions for equals, not-equals, greater-than or less-than. This implements the operators =, !=, <, >, etc. This version of the class implements general comparisons in XPath 1.0 backwards compatibility mode, as defined in the Oct 2004 revision of the specifications.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected AtomicComparer` | `comparer`
    `protected int` | `singletonOperator`

    - ### Fields inherited from class net.sf.saxon.expr.BinaryExpression

      `operand0, operand1, operator`

    - ### Fields inherited from class net.sf.saxon.expr.Expression

      `EFFECTIVE_BOOLEAN_VALUE, EVALUATE_METHOD, EVENT_FEED_METHOD, INHERITED_CONTEXT, INSPECTION_CONTEXT, ITEM_FEED_METHOD, ITERATE_METHOD, locationId, MAX_SEQUENCE_LENGTH, MAX_STRING_LENGTH, NAVIGATION_CONTEXT, NODE_VALUE_CONTEXT, PROCESS_METHOD, PUSH_SELECTION, staticProperties, UNBOUNDED_LOWER, UNBOUNDED_UPPER, W3C_CONSUMING, W3C_FREE_RANGING, W3C_GROUP_CONSUMING, W3C_MOTIONLESS, WATCH_METHOD`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GeneralComparison10(Expression p0, int op, Expression p1)` Create a general comparison identifying the two operands and the operator

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Sequence` | `call(XPathContext context, Sequence[] arguments)` Evaluate the expression: interface for use by compiled bytecode
    `int` | `computeCardinality()` Determine the static cardinality.
    `Expression` | `copy()` Copy an expression.
    `boolean` | `effectiveBooleanValue(XPathContext context)` Evaluate the expression giving a boolean result
    `BooleanValue` | `evaluateItem(XPathContext context)` Evaluate the expression in a given context
    `protected void` | `explainExtraAttributes(ExpressionPresenter out)` Add subclass-specific attributes to the expression tree explanation.
    `ItemType` | `getItemType(TypeHierarchy th)` Determine the data type of the expression
    `Expression` | `optimize(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType)` Optimize the expression
    `void` | `setAtomicComparer(AtomicComparer comparer)`
    `Expression` | `typeCheck(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType)` Type-check the expression

    - ### Methods inherited from class net.sf.saxon.expr.BinaryExpression

      `computeSpecialProperties, displayOperator, equals, explain, getArguments, getOperands, getOperator, hashCode, isAssociative, isCommutative, isInverse, iterateSubExpressionInfo, iterateSubExpressions, promote, replaceSubExpression, setFlattened, simplify, toString`

    - ### Methods inherited from class net.sf.saxon.expr.Expression

      `addToPathMap, adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, evaluateAsString, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getConstructType, getContainer, getDependencies, getEvaluationMethod, getExecutable, getExpressionCompiler, getExpressionName, getHostLanguage, getImplementationMethod, getIntegerBounds, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getStreamability, getStreamingAdjunct, getSystemId, getSystemId, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterate, iterateEvents, markTailFunctionCalls, process, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setLocationId, staticTypeCheck, suppressValidation, toPattern, toStreamingPattern, typeError`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### singletonOperator

          protected int singletonOperator

    - #### comparer

          protected AtomicComparer comparer

  - ### Constructor Detail

    - #### GeneralComparison10

          public GeneralComparison10(Expression p0,
                             int op,
                             Expression p1)

      Create a general comparison 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

    - #### computeCardinality

          public int computeCardinality()

      Determine the static cardinality. Returns [1..1]
      Overrides:
        `computeCardinality` in class `BinaryExpression`
      Returns:
        the computed cardinality, as one of the values `StaticProperty.ALLOWS_ZERO_OR_ONE`, `StaticProperty.EXACTLY_ONE`, `StaticProperty.ALLOWS_ONE_OR_MORE`, `StaticProperty.ALLOWS_ZERO_OR_MORE`

    - #### typeCheck

          public Expression typeCheck(ExpressionVisitor visitor,
                             ExpressionVisitor.ContextItemType 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)

    - #### setAtomicComparer

          public void setAtomicComparer(AtomicComparer comparer)

    - #### optimize

          public Expression optimize(ExpressionVisitor visitor,
                            ExpressionVisitor.ContextItemType 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)

    - #### evaluateItem

          public BooleanValue evaluateItem(XPathContext context)
                                    throws XPathException

      Evaluate the expression in a given context
      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

    - #### call

          public Sequence call(XPathContext context,
                      Sequence[] arguments)
                        throws XPathException

      Evaluate the expression: interface for use by compiled bytecode
      Specified by:
        `call` in interface `Callable`
      Parameters:
        `context` - the dynamic evaluation context
        `arguments` - the values of the arguments, supplied as SequenceIterators
      Returns:
        the result of the evaluation, in the form of a SequenceIterator
      Throws:
        `XPathException` - if a dynamic error occurs during the evaluation of the expression

    - #### effectiveBooleanValue

          public boolean effectiveBooleanValue(XPathContext context)
                                        throws XPathException

      Evaluate the expression giving a boolean result
      Overrides:
        `effectiveBooleanValue` in class `Expression`
      Parameters:
        `context` - the given context for evaluation
      Returns:
        a boolean representing the result of the comparison of the two operands
      Throws:
        `XPathException` - if any dynamic error occurs evaluating the expression

    - #### 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

    - #### 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:
        Type.BOOLEAN

    - #### explainExtraAttributes

          protected void explainExtraAttributes(ExpressionPresenter out)

      Description copied from class: `BinaryExpression`
      Add subclass-specific attributes to the expression tree explanation. Default implementation does nothing; this is provided for subclasses to override.
      Overrides:
        `explainExtraAttributes` in class `BinaryExpression`
      Parameters:
        `out` - the output destination for the displayed expression tree

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.