Package net.sf.saxon.expr.flwor
Class OuterForExpression
- java.lang.Object
-
- net.sf.saxon.expr.Expression
-
- net.sf.saxon.expr.Assignation
-
- net.sf.saxon.expr.ForExpression
-
- net.sf.saxon.expr.flwor.OuterForExpression
-
- All Implemented Interfaces:
Binding,ExportAgent,LocalBinding,Locatable,IdentityComparable,Traceable
public class OuterForExpression extends ForExpression
Expression class that implements the "outer for" clause of XQuery 3.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classOuterForExpression.OuterForExprElaboratorAn elaborator for a "for" expression, typically written as {for $x in SEQ return R}.-
Nested classes/interfaces inherited from class net.sf.saxon.expr.ForExpression
ForExpression.ForExprElaborator, ForExpression.MappingAction
-
-
Field Summary
-
Fields inherited from class net.sf.saxon.expr.Assignation
hasLoopingReference, indexedVariable, references, requiredType, slotNumber, variableName
-
Fields inherited from class net.sf.saxon.expr.Expression
EFFECTIVE_BOOLEAN_VALUE, EVALUATE_METHOD, ITEM_FEED_METHOD, ITERATE_METHOD, MAX_COST, MAX_SEQUENCE_LENGTH, MAX_STRING_LENGTH, PROCESS_METHOD, staticProperties, UNBOUNDED_LOWER, UNBOUNDED_UPPER, UPDATE_METHOD, WATCH_METHOD
-
-
Constructor Summary
Constructors Constructor Description OuterForExpression()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.StringallowingEmptyString()Expressioncopy(RebindingMap rebindings)Copy an expression.protected voidexplainSpecializedAttributes(ExpressionPresenter out)ElaboratorgetElaborator()Make an elaborator for this expressionjava.lang.StringgetExpressionName()Get a name identifying the kind of expression, in terms meaningful to a user.protected intgetRangeVariableCardinality()Get the cardinality of the range variableSequenceIteratoriterate(XPathContext context)Iterate over the result of the expressionExpressionoptimize(ExpressionVisitor visitor, ContextItemStaticInfo contextItemType)Optimize the expressionvoidprocess(Outputter output, XPathContext context)Process this expression as an instruction, writing results to the current outputter-
Methods inherited from class net.sf.saxon.expr.ForExpression
checkPermittedContents, computeCardinality, export, getImplementationMethod, getIntegerBounds, getItemType, getStaticUType, getStreamerName, isVacuousExpression, markTailFunctionCalls, toShortString, toString, typeCheck, unordered
-
Methods inherited from class net.sf.saxon.expr.Assignation
addReference, addToPathMap, checkForUpdatingSubexpressions, computeDependencies, evaluateVariable, getAction, getActionOp, getCost, getIntegerBoundsForVariable, getLocalSlotNumber, getNominalReferenceCount, getObjectName, getRequiredSlots, getRequiredType, getSequence, getSequenceOp, getVariableEQName, getVariableName, getVariableQName, hasVariableBinding, isAssignable, isGlobal, isIndexedVariable, isUpdatingExpression, operands, rebuildReferenceList, refineTypeInformation, removeDeadReferences, replaceVariable, setAction, setIndexedVariable, setRequiredType, setSequence, setSlotNumber, setVariableQName, suppressValidation, verifyReferences
-
Methods inherited from class net.sf.saxon.expr.Expression
adoptChildExpression, allowExtractingCommonSubexpressions, checkedOperands, computeHashCode, computeSpecialProperties, computeStaticProperties, dispatchTailCall, dynamicError, effectiveBooleanValue, equals, evaluateAsString, evaluateItem, explain, getCardinality, getConfiguration, getDependencies, getEvaluationMethod, getExtraProperty, getIntrinsicDependencies, getLocalRetainedStaticContext, getLocation, getNetCost, getPackageData, getParentExpression, getProperties, getProperty, getRetainedStaticContext, getScopingExpression, getSlotsUsed, getSpecialProperties, getStaticBaseURI, getStaticBaseURIString, getStaticType, getTracingTag, hasCompatibleStaticContext, hashCode, hasSpecialProperty, identityHashCode, implementsStaticTypeCheck, isCallOn, isEqual, isIdentical, isInstruction, isLiftable, isMultiThreaded, isStaticPropertiesKnown, isSubtreeExpression, makeElaborator, operandList, operandSparseList, optimizeChildren, prepareForStreaming, resetLocalStaticProperties, restoreParentPointers, setEvaluationMethod, setExtraProperty, setFiltered, setFlattened, setLocation, setParentExpression, setRetainedStaticContext, setRetainedStaticContextLocally, setRetainedStaticContextThoroughly, setStaticProperty, simplify, simplifyChildren, staticTypeCheck, supportsLazyEvaluation, toPattern, typeCheckChildren, typeError, verifyParentPointers
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface net.sf.saxon.trace.Traceable
gatherProperties
-
-
-
-
Method Detail
-
getRangeVariableCardinality
protected int getRangeVariableCardinality()
Get the cardinality of the range variable- Overrides:
getRangeVariableCardinalityin classForExpression- Returns:
- the cardinality of the range variable (StaticProperty.EXACTLY_ONE). in a subclass
-
optimize
public Expression optimize(ExpressionVisitor visitor, ContextItemStaticInfo contextItemType) throws XPathException
Optimize the expression- Overrides:
optimizein classForExpression- Parameters:
visitor- an expression visitorcontextItemType- 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 toType.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(RebindingMap rebindings)
Copy an expression. This makes a deep copy.- Overrides:
copyin classForExpression- Parameters:
rebindings- the rebinding map- Returns:
- the copy of the original expression
-
iterate
public SequenceIterator iterate(XPathContext context) throws XPathException
Iterate over the result of the expression- Overrides:
iteratein classForExpression- 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
-
process
public void process(Outputter output, XPathContext context) throws XPathException
Process this expression as an instruction, writing results to the current outputter- Overrides:
processin classForExpression- Parameters:
output- the destination for the resultcontext- The dynamic context, giving access to the current node, the current variables, etc.- Throws:
XPathException- if a dynamic error occurs
-
getExpressionName
public java.lang.String getExpressionName()
Get a name identifying the kind of expression, in terms meaningful to a user.- Overrides:
getExpressionNamein classForExpression- 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.
-
allowingEmptyString
protected java.lang.String allowingEmptyString()
- Overrides:
allowingEmptyStringin classForExpression
-
explainSpecializedAttributes
protected void explainSpecializedAttributes(ExpressionPresenter out)
- Overrides:
explainSpecializedAttributesin classForExpression
-
getElaborator
public Elaborator getElaborator()
Make an elaborator for this expression- Overrides:
getElaboratorin classForExpression- Returns:
- a suitable elaborator
-
-