Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## net.sf.saxon.expr
Class ArithmeticExpression

    java.lang.Object
      net.sf.saxon.expr.Expression
          net.sf.saxon.expr.BinaryExpression
              net.sf.saxon.expr.ArithmeticExpression

All Implemented Interfaces:
  Serializable, SourceLocator, LocationProvider, SaxonLocator, InstructionInfo, Locator

    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`

See Also:
  Serialized Form

Field Summary
`protected boolean` | `simplified`

Fields inherited from class net.sf.saxon.expr.BinaryExpression
`operand0, operand1, operator`

Fields inherited from class net.sf.saxon.expr.Expression
`EFFECTIVE_BOOLEAN_VALUE, EVALUATE_METHOD, EVENT_FEED_METHOD, ITEM_FEED_METHOD, ITERATE_METHOD, locationId, MAX_SEQUENCE_LENGTH, MAX_STRING_LENGTH, PROCESS_METHOD, PUSH_SELECTION, staticProperties, UNBOUNDED_LOWER, UNBOUNDED_UPPER, WATCH_METHOD`

Constructor Summary
`ArithmeticExpression(Expression p0, int operator, Expression p1)` Create an arithmetic expression

Method Summary
`static AtomicValue` | `compute(AtomicValue value0, int operator, AtomicValue value1, XPathContext context)` Static method to apply arithmetic to two values
`Expression` | `copy()` Copy an expression.
`Item` | `evaluateItem(XPathContext context)` Evaluate the expression.
`Calculator` | `getCalculator()` Get the calculator allocated to evaluate this expression
`String` | `getExpressionName()` Get a name identifying the kind of expression, in terms meaningful to a user.
`IntegerValue[]` | `getIntegerBounds()` For an expression that returns an integer or a sequence of integers, get a lower and upper bound on the values of the integers that may be returned, from static analysis.
`ItemType` | `getItemType(TypeHierarchy th)` Determine the data type of the expression, insofar as this is known statically
`static int` | `mapOpCode(int op)` Map operator codes from those in the Token class to those in the Calculator class
`Expression` | `simplify(ExpressionVisitor visitor)` Simplify an expression
`Expression` | `typeCheck(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType)` Type-check the expression statically.

Methods inherited from class net.sf.saxon.expr.BinaryExpression
`computeCardinality, computeSpecialProperties, displayOperator, equals, explain, explainExtraAttributes, getArguments, getOperands, getOperator, hashCode, isAssociative, isCommutative, isInverse, iterateSubExpressions, optimize, promote, replaceSubExpression, setFlattened, 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, getEvaluationMethod, getExecutable, getHostLanguage, getImplementationMethod, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, hasLoopingSubexpression, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterate, iterateEvents, iterateSameFocusSubExpressions, markTailFunctionCalls, process, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setLocationId, staticTypeCheck, suppressValidation, typeError`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

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 `Token.PLUS`
    `p1` - the second operand

Method Detail

### getExpressionName

    public String getExpressionName()

  Get a name identifying the kind of expression, in terms meaningful to a user.

  Overrides:
    `getExpressionName` in class `Expression`
  Returns:
    a name identifying the kind of expression, in terms meaningful to a user. The name will always be in the form of a lexical XML QName, and should match the name used in explain() output displaying the expression.

### simplify

    public Expression simplify(ExpressionVisitor visitor)
                        throws XPathException

  Description copied from class: `BinaryExpression`
  Simplify an expression

  Overrides:
    `simplify` in class `BinaryExpression`
  Parameters:
    `visitor` - an expression visitor
  Returns:
    the simplified expression
  Throws:
    `XPathException` - if an error is discovered during expression rewriting

### getCalculator

    public Calculator getCalculator()

  Get the calculator allocated to evaluate this expression

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

### typeCheck

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

### getIntegerBounds

    public IntegerValue[] getIntegerBounds()

  For an expression that returns an integer or a sequence of integers, get a lower and upper bound on the values of the integers that may be returned, from static analysis. The default implementation returns null, meaning "unknown" or "not applicable". Other implementations return an array of two IntegerValue objects, representing the lower and upper bounds respectively. The values UNBOUNDED_LOWER and UNBOUNDED_UPPER are used by convention to indicate that the value may be arbitrarily large. The values MAX_STRING_LENGTH and MAX_SEQUENCE_LENGTH are used to indicate values limited by the size of a string or the size of a sequence.

  Overrides:
    `getIntegerBounds` in class `Expression`
  Returns:
    the lower and upper bounds of integer values in the result, or null to indicate unknown or not applicable.

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

### compute

    public static AtomicValue compute(AtomicValue value0,
                                      int operator,
                                      AtomicValue value1,
                                      XPathContext context)
                               throws XPathException

  Static method to apply arithmetic to two values

  Parameters:
    `value0` - the first value
    `operator` - the operator as denoted in the Calculator class, for example `Calculator.PLUS`
    `value1` - the second value
    `context` - the XPath dynamic evaluation context
  Returns:
    the result of the arithmetic operation
  Throws:
    `XPathException`

### 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 `Token.PLUS`
  Returns:
    an operator denoted by a constant defined in the `Calculator` class, for example `Calculator.PLUS`

### getItemType

    public ItemType getItemType(TypeHierarchy th)

  Determine the data type of the expression, insofar as this is known statically

  Specified by:
    `getItemType` in class `Expression`
  Parameters:
    `th` - the type hierarchy cache
  Returns:
    the atomic type of the result of this arithmetic expression

### evaluateItem

    public Item evaluateItem(XPathContext context)
                      throws XPathException

  Evaluate the expression.

  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

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.