net.sf.saxon.expr
Class SimpleStepExpression

java.lang.Object
  extended by net.sf.saxon.expr.Expression
      extended by net.sf.saxon.expr.SlashExpression
          extended by net.sf.saxon.expr.SimpleStepExpression
All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, ContextMappingFunction<Item>, ContextSwitchingExpression, InstructionInfo, Locator

public final class SimpleStepExpression
extends SlashExpression

An SimpleStepExpression is a special case of a SlashExpression in which the start expression selects a single item (or nothing), and the step expression is a simple AxisExpression. This is designed to avoid the costs of creating a new dynamic context for expressions (common in XQuery) such as for $b in EXPR return $b/title

See Also:
Serialized Form

Field Summary
 
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
SimpleStepExpression(Expression start, Expression step)
           
 
Method Summary
 Expression copy()
          Copy an expression.
 SequenceIterator iterate(XPathContext context)
          Evaluate the expression, returning an iterator over the result
 Expression optimize(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType)
          Perform optimisation of an expression and its subexpressions.
 Expression typeCheck(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType)
          Type-check the expression
 
Methods inherited from class net.sf.saxon.expr.SlashExpression
addToPathMap, computeCardinality, computeDependencies, computeSpecialProperties, equals, explain, getControlledExpression, getControllingExpression, getFirstStep, getIntegerBounds, getItemType, getLastStep, getLeadingSteps, getRemainingSteps, getStep, hashCode, hasLoopingSubexpression, isAbsolute, iterateSameFocusSubExpressions, iterateSubExpressions, map, promote, promoteFocusIndependentSubexpressions, replaceSubExpression, setStartExpression, setStepExpression, simplify, toString, tryToMakeAbsolute
 
Methods inherited from class net.sf.saxon.expr.Expression
adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluateAsString, evaluateItem, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getConstructType, getContainer, getDependencies, getEvaluationMethod, getExecutable, getExpressionName, getHostLanguage, getImplementationMethod, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterateEvents, markTailFunctionCalls, process, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, typeError
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SimpleStepExpression

public SimpleStepExpression(Expression start,
                            Expression step)
Method Detail

typeCheck

public Expression typeCheck(ExpressionVisitor visitor,
                            ExpressionVisitor.ContextItemType contextItemType)
                     throws XPathException
Description copied from class: SlashExpression
Type-check the expression

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

optimize

public Expression optimize(ExpressionVisitor visitor,
                           ExpressionVisitor.ContextItemType contextItemType)
                    throws XPathException
Description copied from class: Expression
Perform optimisation of an expression and its subexpressions. This is the third and final phase of static optimization.

This method is called after all references to functions and variables have been resolved to the declaration of the function or variable, and after all type checking has been done.

Overrides:
optimize in class SlashExpression
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 if appropriate to optimize execution
Throws:
XPathException - if an error is discovered during this phase (typically a type error)

copy

public Expression copy()
Copy an expression. This makes a deep copy.

Overrides:
copy in class SlashExpression
Returns:
the copy of the original expression

iterate

public SequenceIterator iterate(XPathContext context)
                         throws XPathException
Evaluate the expression, returning an iterator over the result

Overrides:
iterate in class SlashExpression
Parameters:
context - the evaluation context
Returns:
a SequenceIterator that can be used to iterate over the result of the expression
Throws:
XPathException - if any dynamic error occurs evaluating the expression


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