net.sf.saxon.expr
Class SingletonComparison

java.lang.Object
  extended by net.sf.saxon.expr.Expression
      extended by net.sf.saxon.expr.BinaryExpression
          extended by net.sf.saxon.expr.SingletonComparison
All Implemented Interfaces:
Serializable, SourceLocator, ComparisonExpression, EvaluableItem, SequenceIterable, InstructionInfoProvider

public class SingletonComparison
extends BinaryExpression
implements ComparisonExpression

Class to handle comparisons of singletons. Unlike ValueComparison, this class converts untyped atomic values to the type of the other argument, and returns false (rather than ()) if either operand is ().

See Also:
Serialized Form

Field Summary
 
Fields inherited from class net.sf.saxon.expr.Expression
EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD
 
Constructor Summary
SingletonComparison(Expression p1, int operator, Expression p2)
           
 
Method Summary
 int computeCardinality()
          Determine the static cardinality.
 boolean convertsUntypedToOther()
          Determine whether untyped atomic values should be converted to the type of the other operand
 Expression copy()
          Copy an expression.
 boolean effectiveBooleanValue(XPathContext context)
          Evaluate the expression in a boolean context
 Item evaluateItem(XPathContext context)
          Evaluate the expression in a given context
 AtomicComparer getAtomicComparer()
          Get the AtomicComparer used to compare atomic values.
 ItemType getItemType(TypeHierarchy th)
          Determine the data type of the expression
 int getSingletonOperator()
          Get the primitive (singleton) operator used: one of Token.FEQ, Token.FNE, Token.FLT, Token.FGT, Token.FLE, Token.FGE
 void setAtomicComparer(AtomicComparer comp)
           
 
Methods inherited from class net.sf.saxon.expr.BinaryExpression
computeSpecialProperties, equals, explain, getOperands, getOperator, hashCode, iterateSubExpressions, optimize, promote, replaceSubExpression, setFlattened, simplify, toString, typeCheck
 
Methods inherited from class net.sf.saxon.expr.Expression
addToPathMap, adoptChildExpression, checkPermittedContents, computeDependencies, computeStaticProperties, display, doPromotion, evaluateAsString, explain, findParentOf, getCardinality, getColumnNumber, getContainer, getDependencies, getExecutable, getHostLanguage, getImplementationMethod, getInstructionInfo, getIntrinsicDependencies, getLineNumber, getLocationId, getLocationProvider, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, hasLoopingSubexpression, implementsStaticTypeCheck, iterate, iterateEvents, markTailFunctionCalls, process, setContainer, setFiltered, setLocationId, staticTypeCheck, suppressValidation
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.saxon.expr.ComparisonExpression
getOperands
 

Constructor Detail

SingletonComparison

public SingletonComparison(Expression p1,
                           int operator,
                           Expression p2)
Method Detail

setAtomicComparer

public void setAtomicComparer(AtomicComparer comp)

getAtomicComparer

public AtomicComparer getAtomicComparer()
Description copied from interface: ComparisonExpression
Get the AtomicComparer used to compare atomic values. This encapsulates any collation that is used

Specified by:
getAtomicComparer in interface ComparisonExpression

getSingletonOperator

public int getSingletonOperator()
Description copied from interface: ComparisonExpression
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.

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

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

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


Copyright (C) Michael H. Kay. All rights reserved.