net.sf.saxon.expr

Class ItemChecker

Implemented Interfaces:
EvaluableItem, InstructionInfoProvider, SequenceIterable, Serializable, SourceLocator

public final class ItemChecker
extends UnaryExpression

A ItemChecker implements the item type checking of "treat as": that is, it returns the supplied sequence, checking that all its items are of the correct type

Field Summary

Fields inherited from class net.sf.saxon.expr.UnaryExpression

operand

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

EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD, locationId, staticProperties

Constructor Summary

ItemChecker(Expression sequence, ItemType itemType, RoleLocator role)
Constructor

Method Summary

Expression
copy()
Copy an expression.
boolean
equals(Object other)
Is this expression the same as another expression?
Item
evaluateItem(XPathContext context)
Evaluate as an Item.
void
explain(ExpressionPresenter out)
Diagnostic print of expression structure.
int
getImplementationMethod()
An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process().
ItemType
getItemType(TypeHierarchy th)
Determine the data type of the items returned by the expression
ItemType
getRequiredType()
Get the required type
RoleLocator
getRoleLocator()
Get the RoleLocator (used to construct error messages)
SequenceIterator
iterate(XPathContext context)
Iterate over the sequence of values
void
process(XPathContext context)
Process the instruction, without returning any tail calls
Expression
simplify(ExpressionVisitor visitor)
Simplify an expression
Expression
typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression

Methods inherited from class net.sf.saxon.expr.UnaryExpression

computeCardinality, computeSpecialProperties, displayExpressionName, displayOperator, equals, explain, getBaseExpression, getItemType, hashCode, iterateSubExpressions, optimize, promote, replaceSubExpression, simplify, toString, typeCheck

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

addToPathMap, adoptChildExpression, checkPermittedContents, computeCardinality, computeDependencies, computeSpecialProperties, computeStaticProperties, copy, display, doPromotion, dynamicError, effectiveBooleanValue, evaluateAsString, evaluateItem, explain, explain, findParentOf, getCardinality, getColumnNumber, getConstructType, getContainer, getDependencies, getExecutable, getHostLanguage, getImplementationMethod, getInstructionInfo, getIntrinsicDependencies, getItemType, getLineNumber, getLocationId, getLocationProvider, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, hasLoopingSubexpression, implementsStaticTypeCheck, iterate, iterateEvents, iterateSubExpressions, markTailFunctionCalls, optimize, process, promote, replaceSubExpression, resetLocalStaticProperties, setContainer, setFiltered, setFlattened, setLocationId, simplify, staticTypeCheck, suppressValidation, toString, typeCheck, typeError

Constructor Details

ItemChecker

public ItemChecker(Expression sequence,
                   ItemType itemType,
                   RoleLocator role)
Constructor
Parameters:
sequence - the expression whose value we are checking
itemType - the required type of the items in the sequence
role - information used in constructing an error message

Method Details

copy

public Expression copy()
Copy an expression. This makes a deep copy.
Overrides:
copy in interface Expression
Returns:
the copy of the original expression

equals

public boolean equals(Object other)
Is this expression the same as another expression?
Overrides:
equals in interface UnaryExpression

evaluateItem

public Item evaluateItem(XPathContext context)
            throws XPathException
Evaluate as an Item.
Specified by:
evaluateItem in interface EvaluableItem
Overrides:
evaluateItem in interface Expression

explain

public void explain(ExpressionPresenter out)
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.
Overrides:
explain in interface UnaryExpression

getImplementationMethod

public int getImplementationMethod()
An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process(). This method indicates which of these methods is provided. This implementation provides both iterate() and process() methods natively.
Overrides:
getImplementationMethod in interface Expression

getItemType

public ItemType getItemType(TypeHierarchy th)
Determine the data type of the items returned by the expression
Overrides:
getItemType in interface UnaryExpression
Parameters:
th - the type hierarchy cache

getRequiredType

public ItemType getRequiredType()
Get the required type
Returns:
the required type of the items in the sequence

getRoleLocator

public RoleLocator getRoleLocator()
Get the RoleLocator (used to construct error messages)
Returns:
the RoleLocator

iterate

public SequenceIterator iterate(XPathContext context)
            throws XPathException
Iterate over the sequence of values
Specified by:
iterate in interface SequenceIterable
Overrides:
iterate in interface Expression

process

public void process(XPathContext context)
            throws XPathException
Process the instruction, without returning any tail calls
Overrides:
process in interface Expression
Parameters:
context - The dynamic context, giving access to the current node, the current variables, etc.

simplify

public Expression simplify(ExpressionVisitor visitor)
            throws XPathException
Simplify an expression
Overrides:
simplify in interface UnaryExpression
Parameters:
visitor - an expression visitor

typeCheck

public Expression typeCheck(ExpressionVisitor visitor,
                            ItemType contextItemType)
            throws XPathException
Type-check the expression
Overrides:
typeCheck in interface UnaryExpression