net.sf.saxon.sort

Class TupleExpression

public class TupleExpression extends Expression

A tuple expression is an expression that returns a tuple. Specifically, it is a list of n expressions, which are evaluated to create a list of n items. Tuple expressions are used during the evaluation of a FLWR expression. A tuple is not a value within the XPath/XQuery type system, so it is represented as an external object, specifically as a Java array wrapped inside an ObjectValue.
Field Summary
Expression[]components
int[]evaluationModes
Constructor Summary
TupleExpression(int width)
Method Summary
intcomputeCardinality()
Get the cardinality of the expression.
Expressioncopy()
Copy an expression.
ItemevaluateItem(XPathContext context)
voidexplain(ExpressionPresenter out)
Diagnostic print of expression structure.
Expression[]getComponents()
Get the component expressions
intgetIntrinsicDependencies()
ItemTypegetItemType(TypeHierarchy th)
Iterator<Expression>iterateSubExpressions()
Expressionoptimize(ExpressionVisitor visitor, ItemType contextItemType)
Perform optimisation of an expression and its subexpressions.
Expressionpromote(PromotionOffer offer, Expression parent)
booleanreplaceSubExpression(Expression original, Expression replacement)
Replace one subexpression by a replacement subexpression
voidsetExpression(int i, Expression exp)
Set the i'th component expression of the tuple
Expressionsimplify(ExpressionVisitor visitor)
ExpressiontypeCheck(ExpressionVisitor visitor, ItemType contextItemType)

Field Detail

components

Expression[] components

evaluationModes

int[] evaluationModes

Constructor Detail

TupleExpression

public TupleExpression(int width)

Method Detail

computeCardinality

public int computeCardinality()
Get the cardinality of the expression. This is exactly one, in the sense that evaluating the TupleExpression returns a single tuple.

Returns: the static cardinality - EXACTLY_ONE

copy

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

Returns: the copy of the original expression

evaluateItem

public Item evaluateItem(XPathContext context)

explain

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

getComponents

public Expression[] getComponents()
Get the component expressions

Returns: the component expressions, as an array

getIntrinsicDependencies

public int getIntrinsicDependencies()

getItemType

public ItemType getItemType(TypeHierarchy th)

iterateSubExpressions

public Iterator<Expression> iterateSubExpressions()

optimize

public Expression optimize(ExpressionVisitor visitor, ItemType contextItemType)
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.

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

promote

public Expression promote(PromotionOffer offer, Expression parent)

replaceSubExpression

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

Parameters: original the original subexpression replacement the replacement subexpression

Returns: true if the original subexpression is found

setExpression

public void setExpression(int i, Expression exp)
Set the i'th component expression of the tuple

Parameters: i identifies the component to set exp the component expression

simplify

public Expression simplify(ExpressionVisitor visitor)

typeCheck

public Expression typeCheck(ExpressionVisitor visitor, ItemType contextItemType)