com.saxonica.expr.ee
Class MultithreadedForEach

java.lang.Object
  extended by net.sf.saxon.expr.Expression
      extended by net.sf.saxon.expr.instruct.Instruction
          extended by net.sf.saxon.expr.instruct.ForEach
              extended by com.saxonica.expr.ee.MultithreadedForEach
All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, ContextMappingFunction<Item>, ContextSwitchingExpression, TailCallReturner, InstructionInfo, Locator

public class MultithreadedForEach
extends ForEach

This instruction represents an xsl:for-each instruction using more than one thread

See Also:
Serialized Form

Field Summary
 
Fields inherited from class net.sf.saxon.expr.instruct.ForEach
action, containsTailCall, select, threads
 
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
MultithreadedForEach(Expression select, Expression action, boolean containsTailCall, Expression threads)
           
 
Method Summary
 Expression copy()
          Copy an expression.
protected  void explainThreads(ExpressionPresenter out)
          Add the value of the saxon:threads attribute to the explain output
 int getImplementationMethod()
          An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process().
 SequenceIterator iterate(XPathContext context)
          Return an Iterator to iterate over the values of the sequence.
 TailCall processLeavingTail(XPathContext context)
          ProcessLeavingTail: called to do the real work of this instruction.
 
Methods inherited from class net.sf.saxon.expr.instruct.ForEach
addToPathMap, checkPermittedContents, computeDependencies, computeSpecialProperties, createsNewNodes, explain, getActionExpression, getControlledExpression, getControllingExpression, getInstructionNameCode, getItemType, getNumberOfThreadsExpression, getSelectExpression, hasLoopingSubexpression, iterateSameFocusSubExpressions, iterateSubExpressions, map, optimize, promoteInst, replaceSubExpression, setActionExpression, setSelectExpression, simplify, typeCheck
 
Methods inherited from class net.sf.saxon.expr.instruct.Instruction
assembleParams, assembleTunnelParams, computeCardinality, dynamicError, evaluateAsString, evaluateItem, getConstructType, getExpressionName, getInstructionName, getIteratorFromProcessMethod, getSourceLocator, isXSLT, process, promote
 
Methods inherited from class net.sf.saxon.expr.Expression
adoptChildExpression, checkForUpdatingSubexpressions, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getContainer, getDependencies, getEvaluationMethod, getExecutable, getHostLanguage, getIntegerBounds, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterateEvents, markTailFunctionCalls, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, toString, typeError
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface javax.xml.transform.SourceLocator
getColumnNumber, getLineNumber, getPublicId, getSystemId
 

Constructor Detail

MultithreadedForEach

public MultithreadedForEach(Expression select,
                            Expression action,
                            boolean containsTailCall,
                            Expression threads)
Method Detail

copy

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

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

getImplementationMethod

public int getImplementationMethod()
An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process(). This method indicates which of these methods is provided. This implementation provides only the process() method natively.

Overrides:
getImplementationMethod in class ForEach
Returns:
the implementation method, for example Expression.ITERATE_METHOD or Expression.EVALUATE_METHOD or Expression.PROCESS_METHOD

processLeavingTail

public TailCall processLeavingTail(XPathContext context)
                            throws XPathException
Description copied from class: Instruction
ProcessLeavingTail: called to do the real work of this instruction. This method must be implemented in each subclass. The results of the instruction are written to the current Receiver, which can be obtained via the Controller.

Specified by:
processLeavingTail in interface TailCallReturner
Overrides:
processLeavingTail in class ForEach
Parameters:
context - The dynamic context of the transformation, giving access to the current node, the current variables, etc.
Returns:
null if the instruction has completed execution; or a TailCall indicating a function call or template call that is delegated to the caller, to be made after the stack has been unwound so as to save stack space.
Throws:
XPathException - if a dynamic error occurs during the evaluation of the instruction

iterate

public SequenceIterator iterate(XPathContext context)
                         throws XPathException
Return an Iterator to iterate over the values of the sequence.

Overrides:
iterate in class ForEach
Parameters:
context - supplies the context for evaluation
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

explainThreads

protected void explainThreads(ExpressionPresenter out)
Add the value of the saxon:threads attribute to the explain output

Overrides:
explainThreads in class ForEach
Parameters:
out - the destination for explain output


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