net.sf.saxon.expr

Class ArithmeticExpression

public class ArithmeticExpression extends BinaryExpression

Arithmetic Expression: an expression using one of the operators plus, minus, multiply, div, idiv, mod. Note that this code does not handle backwards compatibility mode: see ArithmeticExpression10
Field Summary
protected booleansimplified
Constructor Summary
ArithmeticExpression(Expression p0, int operator, Expression p1)
Create an arithmetic expression
Method Summary
static AtomicValuecompute(AtomicValue value0, int operator, AtomicValue value1, XPathContext context)
Static method to apply arithmetic to two values
Expressioncopy()
Copy an expression.
ItemevaluateItem(XPathContext context)
Evaluate the expression.
CalculatorgetCalculator()
Get the calculator allocated to evaluate this expression
ItemTypegetItemType(TypeHierarchy th)
Determine the data type of the expression, insofar as this is known statically
static intmapOpCode(int op)
Map operator codes from those in the Token class to those in the Calculator class
Expressionsimplify(ExpressionVisitor visitor)
ExpressiontypeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression statically.

Field Detail

simplified

protected boolean simplified

Constructor Detail

ArithmeticExpression

public ArithmeticExpression(Expression p0, int operator, Expression p1)
Create an arithmetic expression

Parameters: p0 the first operand operator the operator, for example PLUS p1 the second operand

Method Detail

compute

public static AtomicValue compute(AtomicValue value0, int operator, AtomicValue value1, XPathContext context)
Static method to apply arithmetic to two values

Parameters: value0 the first value operator the operator as denoted in the Calculator class, for example PLUS value1 the second value context the XPath dynamic evaluation context

Returns: the result of the arithmetic operation

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)
Evaluate the expression.

getCalculator

public Calculator getCalculator()
Get the calculator allocated to evaluate this expression

Returns: the calculator, a helper object that does the actual calculation

getItemType

public ItemType getItemType(TypeHierarchy th)
Determine the data type of the expression, insofar as this is known statically

Parameters: th the type hierarchy cache

Returns: the atomic type of the result of this arithmetic expression

mapOpCode

public static int mapOpCode(int op)
Map operator codes from those in the Token class to those in the Calculator class

Parameters: op an operator denoted by a constant in the Token class, for example PLUS

Returns: an operator denoted by a constant defined in the Calculator class, for example PLUS

simplify

public Expression simplify(ExpressionVisitor visitor)

typeCheck

public Expression typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression statically. We try to work out which particular arithmetic function to use if the types of operands are known an compile time.