net.sf.saxon.expr
Class ArithmeticExpression10

java.lang.Object
  extended by net.sf.saxon.expr.Expression
      extended by net.sf.saxon.expr.BinaryExpression
          extended by net.sf.saxon.expr.ArithmeticExpression10
All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, EvaluableItem, SequenceIterable, InstructionInfo, Locator

public class ArithmeticExpression10
extends BinaryExpression

Arithmetic Expression: an expression using one of the operators plus, minus, multiply, div, idiv, mod, in backwards compatibility mode: see ArithmeticExpression for the non-backwards compatible case.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class net.sf.saxon.expr.BinaryExpression
operand0, operand1, operator
 
Fields inherited from class net.sf.saxon.expr.Expression
EVALUATE_METHOD, ITERATE_METHOD, locationId, PROCESS_METHOD, staticProperties
 
Constructor Summary
ArithmeticExpression10(Expression p0, int operator, Expression p1)
          Create an arithmetic expression to be evaluated in XPath 1.0 mode
 
Method Summary
 Expression copy()
          Copy an expression.
 Item evaluateItem(XPathContext context)
          Evaluate the expression.
 ItemType getItemType(TypeHierarchy th)
          Determine the data type of the expression, if this is known statically
 boolean isBackwardsCompatible()
          Determine whether the expression is to be evaluated in backwards-compatible mode
 Expression typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
          Type-check the expression statically.
 
Methods inherited from class net.sf.saxon.expr.BinaryExpression
computeCardinality, computeSpecialProperties, displayOperator, equals, explain, explainExtraAttributes, getOperands, getOperator, hashCode, isAssociative, isCommutative, isInverse, iterateSubExpressions, optimize, promote, replaceSubExpression, setFlattened, simplify, toString
 
Methods inherited from class net.sf.saxon.expr.Expression
addToPathMap, adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluateAsString, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getConstructType, getContainer, getDependencies, getExecutable, getHostLanguage, getImplementationMethod, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, hasLoopingSubexpression, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterate, iterateEvents, iterateSameFocusSubExpressions, markTailFunctionCalls, process, resetLocalStaticProperties, setContainer, setFiltered, setLocationId, staticTypeCheck, suppressValidation, typeError
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ArithmeticExpression10

public ArithmeticExpression10(Expression p0,
                              int operator,
                              Expression p1)
Create an arithmetic expression to be evaluated in XPath 1.0 mode

Parameters:
p0 - the first operand
operator - the operator, for example Token.PLUS
p1 - the second operand
Method Detail

isBackwardsCompatible

public boolean isBackwardsCompatible()
Determine whether the expression is to be evaluated in backwards-compatible mode

Returns:
true, always

typeCheck

public Expression typeCheck(ExpressionVisitor visitor,
                            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.

Overrides:
typeCheck in class BinaryExpression
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)

getItemType

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

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)

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

evaluateItem

public Item evaluateItem(XPathContext context)
                  throws XPathException
Evaluate the expression.

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


Copyright (c) Saxonica Limited. All rights reserved.