net.sf.saxon.expr

Class IntegerRangeTest

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

public class IntegerRangeTest
extends Expression

An IntegerRangeTest is an expression of the form E = N to M where E is numeric, and N and M are both expressions of type integer.

Field Summary

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

EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD, locationId, staticProperties

Constructor Summary

IntegerRangeTest(Expression value, Expression min, Expression max)
Construct a IntegerRangeTest

Method Summary

int
computeCardinality()
Determine the static cardinality
Expression
copy()
Copy an expression.
Item
evaluateItem(XPathContext c)
Evaluate the expression
void
explain(ExpressionPresenter destination)
Diagnostic print of expression structure.
ItemType
getItemType(TypeHierarchy th)
Get the data type of the items returned
Expression
getMaxValueExpression()
Get the expression denoting the end of the range
Expression
getMinValueExpression()
Get the expression denoting the start of the range
Expression
getValueExpression()
Get the value to be tested
Iterator
iterateSubExpressions()
Get the immediate sub-expressions of this expression.
Expression
optimize(ExpressionVisitor visitor, ItemType contextItemType)
Perform optimisation of an expression and its subexpressions.
boolean
replaceSubExpression(Expression original, Expression replacement)
Replace one subexpression by a replacement subexpression
Expression
typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression

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

IntegerRangeTest

public IntegerRangeTest(Expression value,
                        Expression min,
                        Expression max)
Construct a IntegerRangeTest
Parameters:
value - the integer value to be tested to see if it is in the range min to max inclusive
min - the lowest permitted value
max - the highest permitted value

Method Details

computeCardinality

public int computeCardinality()
Determine the static cardinality
Overrides:
computeCardinality in interface Expression

copy

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

evaluateItem

public Item evaluateItem(XPathContext c)
            throws XPathException
Evaluate the expression
Specified by:
evaluateItem in interface EvaluableItem
Overrides:
evaluateItem in interface Expression

explain

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

getItemType

public ItemType getItemType(TypeHierarchy th)
Get the data type of the items returned
Overrides:
getItemType in interface Expression
Parameters:
th - the type hierarchy cache

getMaxValueExpression

public Expression getMaxValueExpression()
Get the expression denoting the end of the range
Returns:
the expression denoting the maximum value

getMinValueExpression

public Expression getMinValueExpression()
Get the expression denoting the start of the range
Returns:
the expression denoting the minumum value

getValueExpression

public Expression getValueExpression()
Get the value to be tested
Returns:
the expression that evaluates to the value being tested

iterateSubExpressions

public Iterator iterateSubExpressions()
Get the immediate sub-expressions of this expression. Default implementation returns a zero-length array, appropriate for an expression that has no sub-expressions.
Overrides:
iterateSubExpressions in interface Expression
Returns:
an iterator containing the sub-expressions of this expression

optimize

public Expression optimize(ExpressionVisitor visitor,
                           ItemType contextItemType)
            throws XPathException
Perform optimisation of an expression and its subexpressions.

This method is called after all references to functions and variables have been resolved to the declaration of the function or variable, and after all type checking has been done.

Overrides:
optimize in interface Expression
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 original expression, rewritten if appropriate to optimize execution
Throws:
XPathException - if an error is discovered during this phase (typically a type error)

replaceSubExpression

public boolean replaceSubExpression(Expression original,
                                    Expression replacement)
Replace one subexpression by a replacement subexpression
Overrides:
replaceSubExpression in interface Expression
Parameters:
original - the original subexpression
replacement - the replacement subexpression
Returns:
true if the original subexpression is found

typeCheck

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