net.sf.saxon.expr
Class ArithmeticExpression.DateDifference

java.lang.Object
  extended bynet.sf.saxon.expr.ComputedExpression
      extended bynet.sf.saxon.expr.BinaryExpression
          extended bynet.sf.saxon.expr.ArithmeticExpression
              extended bynet.sf.saxon.expr.ArithmeticExpression.DateDifference
All Implemented Interfaces:
Container, Expression, InstructionInfoProvider, java.io.Serializable, javax.xml.transform.SourceLocator
Enclosing class:
net.sf.saxon.expr.ArithmeticExpression

public static class ArithmeticExpression.DateDifference
extends net.sf.saxon.expr.ArithmeticExpression

Inner class to handle subtraction of a Date (or Time, or DateTime) from another, to return a Duration

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.DateDifference(Expression p1, int operator, Expression p2)
           
 
Method Summary
static Item doArithmetic(Expression operand0, Expression operand1, XPathContext context)
           
 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, simplify
 
Methods inherited from class net.sf.saxon.expr.ComputedExpression
adoptChildExpression, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, 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, suppressValidation, typeError, typeError
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ArithmeticExpression.DateDifference

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

evaluateItem

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

Throws:
XPathException

doArithmetic

public static Item doArithmetic(Expression operand0,
                                Expression operand1,
                                XPathContext context)
                         throws XPathException
Throws:
XPathException

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)