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
intcomputeCardinality()
Determine the static cardinality of the expression
intcomputeSpecialProperties()
Determine the special properties of this expression
protected StringdisplayOperator(NamePool pool)
Give a string representation of the operator 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
Expressionsimplify(StaticContext env)
Simplify an expression
ExpressiontypeCheck(StaticContext env, 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 allowEmpty true if the result sequence is allowed to be empty.

Method Detail

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.

displayOperator

protected String displayOperator(NamePool pool)
Give a string representation of the operator for use in diagnostics

Returns: the operator, as a string

evaluateItem

public Item evaluateItem(XPathContext context)
Evaluate as an Item. This should only be called if the Atomizer has cardinality zero-or-one, which will only be the case if the underlying expression has cardinality zero-or-one.

getItemType

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

Parameters: th

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.

simplify

public Expression simplify(StaticContext env)
Simplify an expression

typeCheck

public Expression typeCheck(StaticContext env, ItemType contextItemType)
Type-check the expression