net.sf.saxon.expr
Class ArithmeticExpression

java.lang.Object
  extended bynet.sf.saxon.expr.ComputedExpression
      extended bynet.sf.saxon.expr.BinaryExpression
          extended bynet.sf.saxon.expr.ArithmeticExpression
All Implemented Interfaces:
Container, Expression, InstructionInfoProvider, java.io.Serializable, javax.xml.transform.SourceLocator
Direct Known Subclasses:
ArithmeticExpression.DateAndDuration, ArithmeticExpression.DateDifference, ArithmeticExpression.DurationAddition, ArithmeticExpression.DurationDivision, ArithmeticExpression.DurationMultiplication, ArithmeticExpression.NumericArithmetic

public class ArithmeticExpression
extends BinaryExpression

Arithmetic Expression: an expression using one of the operators plus, minus, multiply, div, idiv, mod.

See Also:
Serialized Form

Nested Class Summary
static class ArithmeticExpression.DateAndDuration
          Inner class to handle addition or subtraction of a Date (or Time, or DateTime) and a Duration
static class ArithmeticExpression.DateDifference
          Inner class to handle subtraction of a Date (or Time, or DateTime) from another, to return a Duration
static class ArithmeticExpression.DurationAddition
          Inner class to handle addition and subtraction of two durations
static class ArithmeticExpression.DurationDivision
          Inner class to handle division of two durations to give a number
static class ArithmeticExpression.DurationMultiplication
          Inner class to handle multiplication (or division) of a duration by a number
static class ArithmeticExpression.NumericArithmetic
          Inner class to handle numeric arithmetic expressions
 
Field Summary
 
Fields inherited from class net.sf.saxon.expr.BinaryExpression
operand0, operand1, operator
 
Fields inherited from class net.sf.saxon.expr.ComputedExpression
locationId, staticProperties
 
Fields inherited from interface net.sf.saxon.expr.Expression
EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD
 
Constructor Summary
ArithmeticExpression(Expression p1, int operator, Expression p2)
           
 
Method Summary
 Item evaluateItem(XPathContext context)
          Evaluate the expression.
 ItemType getItemType(TypeHierarchy th)
          Determine the data type of the expression, if this is known statically
 Expression typeCheck(StaticContext env, ItemType contextItemType)
          Type-check the expression statically.
 
Methods inherited from class net.sf.saxon.expr.BinaryExpression
computeCardinality, computeSpecialProperties, display, displayOperator, equals, getOperands, getOperator, hashCode, isAssociative, isCommutative, isInverse, iterateSubExpressions, optimize, promote, replaceSubExpression, simplify
 
Methods inherited from class net.sf.saxon.expr.ComputedExpression
adoptChildExpression, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluateAsString, getCardinality, getColumnNumber, getConstructType, getDependencies, getExecutable, getHostLanguage, getImplementationMethod, getInstructionInfo, getIntrinsicDependencies, getLineNumber, getLocationId, getLocationProvider, getParentExpression, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, hasBadParentPointer, iterate, markTailFunctionCalls, process, resetStaticProperties, setLocationId, setParentExpression, setParentExpression, suppressValidation, typeError
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ArithmeticExpression

public ArithmeticExpression(Expression p1,
                            int operator,
                            Expression p2)
Method Detail

typeCheck

public Expression typeCheck(StaticContext env,
                            ItemType contextItemType)
                     throws XPathException
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.

Specified by:
typeCheck in interface Expression
Overrides:
typeCheck in class BinaryExpression
Throws:
XPathException

getItemType

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

Parameters:
th -
Returns:
a value such as Type.STRING, Type.BOOLEAN, Type.NUMBER, Type.NODE, or Type.ITEM (meaning not known at compile time)

evaluateItem

public Item evaluateItem(XPathContext context)
                  throws XPathException
Evaluate the expression. We only take this path if the type could not be determined statically.

Specified by:
evaluateItem in interface Expression
Overrides:
evaluateItem in class ComputedExpression
Parameters:
context - 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