net.sf.saxon.expr

Class SingletonAtomizer

public final class SingletonAtomizer extends UnaryExpression

A SingletonAtomizer combines the functions of an Atomizer and a CardinalityChecker: it is used to atomize a sequence of nodes, checking that the result of the atomization contains zero or one atomic values. Note that the input may be a sequence of nodes or atomic values, even though the result must contain at most one atomic value.
Constructor Summary
SingletonAtomizer(Expression sequence, RoleLocator role, boolean allowEmpty)
Constructor
Method Summary
PathMap.PathMapNodeSetaddToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
intcomputeCardinality()
Determine the static cardinality of the expression
intcomputeSpecialProperties()
Determine the special properties of this expression
Expressioncopy()
Copy an expression.
protected StringdisplayExpressionName()
Give a string representation of the expression name for use in diagnostics
ItemevaluateItem(XPathContext context)
Evaluate as an Item.
ItemTypegetItemType(TypeHierarchy th)
Determine the data type of the items returned by the expression, if possible
RoleLocatorgetRole()
Get the RoleLocator (used to construct error messages)
Expressionoptimize(ExpressionVisitor visitor, ItemType contextItemType)
Expressionsimplify(ExpressionVisitor visitor)
Simplify an expression
ExpressiontypeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression

Constructor Detail

SingletonAtomizer

public SingletonAtomizer(Expression sequence, RoleLocator role, boolean allowEmpty)
Constructor

Parameters: sequence the sequence to be atomized role contains information about where the expression appears, for use in any error message allowEmpty true if the result sequence is allowed to be empty.

Method Detail

addToPathMap

public PathMap.PathMapNodeSet addToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)

computeCardinality

public int computeCardinality()
Determine the static cardinality of the expression

computeSpecialProperties

public int computeSpecialProperties()
Determine the special properties of this expression

Returns: NON_CREATIVE.

copy

public Expression copy()
Copy an expression. This makes a deep copy.

Returns: the copy of the original expression

displayExpressionName

protected String displayExpressionName()
Give a string representation of the expression name for use in diagnostics

Returns: the expression name, as a string

evaluateItem

public Item evaluateItem(XPathContext context)
Evaluate as an Item. This should only be called if a singleton or empty sequence is required; it throws a type error if the underlying sequence is multi-valued.

getItemType

public ItemType getItemType(TypeHierarchy th)
Determine the data type of the items returned by the expression, if possible

Parameters: th the type hierarchy cache

Returns: a value such as Type.STRING, Type.BOOLEAN, Type.NUMBER. For this class, the result is always an atomic type, but it might be more specific.

getRole

public RoleLocator getRole()
Get the RoleLocator (used to construct error messages)

Returns: the role locator

optimize

public Expression optimize(ExpressionVisitor visitor, ItemType contextItemType)

simplify

public Expression simplify(ExpressionVisitor visitor)
Simplify an expression

Parameters: visitor an expression visitor

typeCheck

public Expression typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression