net.sf.saxon.expr
Class IntegerRangeTest

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

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.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class net.sf.saxon.expr.Expression
EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD
 
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, computeDependencies, computeStaticProperties, display, doPromotion, effectiveBooleanValue, 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, promote, setContainer, setFiltered, setFlattened, setLocationId, simplify, staticTypeCheck, suppressValidation, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

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 Detail

getValueExpression

public Expression getValueExpression()
Get the value to be tested

Returns:
the expression that evaluates to the value being tested

getMinValueExpression

public Expression getMinValueExpression()
Get the expression denoting the start of the range

Returns:
the expression denoting the minumum value

getMaxValueExpression

public Expression getMaxValueExpression()
Get the expression denoting the end of the range

Returns:
the expression denoting the maximum value

typeCheck

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

Overrides:
typeCheck in class 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 to perform necessary run-time type checks, and to perform other type-related optimizations
Throws:
XPathException - if an error is discovered during this phase (typically a type error)

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 class 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)

getItemType

public ItemType getItemType(TypeHierarchy th)
Get the data type of the items returned

Specified by:
getItemType in class Expression
Parameters:
th - the type hierarchy cache
Returns:
a value such as Type.STRING, Type.BOOLEAN, Type.NUMBER, Type.NODE, or Type.ITEM (meaning not known at compile time)

computeCardinality

public int computeCardinality()
Determine the static cardinality

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

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

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 class Expression
Returns:
an iterator containing the sub-expressions of this expression

replaceSubExpression

public boolean replaceSubExpression(Expression original,
                                    Expression replacement)
Replace one subexpression by a replacement subexpression

Overrides:
replaceSubExpression in class Expression
Parameters:
original - the original subexpression
replacement - the replacement subexpression
Returns:
true if the original subexpression is found

evaluateItem

public Item evaluateItem(XPathContext c)
                  throws XPathException
Evaluate the expression

Specified by:
evaluateItem in interface EvaluableItem
Overrides:
evaluateItem in class Expression
Parameters:
c - The context in which the expression is to be evaluated
Returns:
the node or atomic value that results from evaluating the expression; or null to indicate that the result is an empty sequence
Throws:
XPathException - if any dynamic error occurs evaluating the expression

explain

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

Specified by:
explain in class Expression
Parameters:
destination - the expression presenter used to display the structure


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