Package net.sf.saxon.expr.elab
Class PullElaborator
java.lang.Object
net.sf.saxon.expr.elab.Elaborator
net.sf.saxon.expr.elab.PullElaborator
- Direct Known Subclasses:
AdjacentTextNodeMerger.AdjacentTextNodeMergerElaborator
,AnalyzeString.AnalyzeStringElaborator
,AtomicSequenceConverter.AtomicSequenceConverterElaborator
,Atomizer.AtomizerElaborator
,AxisExpression.AxisExpressionElaborator
,Block.BlockElaborator
,CardinalityChecker.CardinalityCheckerElaborator
,Choose.ChooseExprElaborator
,ConditionalSorter.ConditionalSorterElaborator
,DocumentSorter.DocumentSorterElaborator
,EmptyTextNodeRemover.EmptyTextNodeRemoverElaborator
,FilterExpression.FilterExprElaborator
,ForEach.ForEachElaborator
,ForExpression.ForExprElaborator
,FunctionCall.FunctionCallElaborator
,GlobalVariableReference.GlobalVariableReferenceElaborator
,HomogeneityChecker.HomogeneityCheckerElaborator
,ItemChecker.ItemCheckerElaborator
,JAXPVariableReference.CallableElaborator
,LetExpression.LetExprElaborator
,Literal.LiteralElaborator
,LocalVariableReference.LocalVariableReferenceElaborator
,LookupAllExpression.LookupAllElaborator
,LookupExpression.LookupElaborator
,MultithreadedForEach.MultithreadedForEachElaborator
,ObjectLookupExpression.ObjectLookupElaborator
,OuterForExpression.OuterForExprElaborator
,RangeExpression.RangeElaborator
,SimpleStepExpression.SimpleStepExprElaborator
,SlashExpression.SlashExprElaborator
,SortExpression.SortExprElaborator
,SuppliedParameterReference.SuppliedParameterReferenceElaborator
,SwitchExpression.SwitchExprElaborator
,TailExpression.TailExprElaborator
,UntypedSequenceConverter.UntypedSequenceConverterElaborator
,VennExpression.VennElaborator
Abstract implementation of
Elaborator
for expressions that primarily evaluate in pull mode,
that is, by returning a SequenceIterator
over the result. The method elaborateForPull()
must be implemented in subclasses; other evaluation methods such as elaborateForPush()
are
by default implemented by calling elaborateForPull()
, though they may have optimized
implementations in subclasses.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioneagerly()
Get a function that evaluates the underlying expression eagerlyGet a function that evaluates the underlying expression in the form of a boolean, this being the effective boolean value of the expression.Get a function that evaluates the underlying expression in the form of aItem
.abstract PullEvaluator
Get a function that evaluates the underlying expression in the form of aSequenceIterator
Get a function that evaluates the underlying expression in push mode, by writing events to anOutputter
elaborateForUnicodeString
(boolean zeroLengthWhenAbsent) Get a function that evaluates the underlying expression in the form of a unicode string, this being the result of applying fn:string() to the result of the expression.Methods inherited from class net.sf.saxon.expr.elab.Elaborator
elaborateForString, elaborateForUpdate, getConfiguration, getExpression, handleNullString, handleNullUnicodeString, handlePossiblyNullString, handlePossiblyNullUnicodeString, lazily, setExpression
-
Constructor Details
-
PullElaborator
public PullElaborator()
-
-
Method Details
-
elaborateForPull
Description copied from class:Elaborator
Get a function that evaluates the underlying expression in the form of aSequenceIterator
- Specified by:
elaborateForPull
in classElaborator
- Returns:
- an evaluator for the expression that returns a
SequenceIterator
-
eagerly
Description copied from class:Elaborator
Get a function that evaluates the underlying expression eagerly- Overrides:
eagerly
in classElaborator
- Returns:
- an evaluator for the expression that returns a
GroundedValue
. The classSequenceEvaluator
is declared to return aSequence
not aGroundedValue
; we can't specialize it because it's a limitation of C# delegates, but the result can safely be cast toGroundedValue
.
-
elaborateForPush
Description copied from class:Elaborator
Get a function that evaluates the underlying expression in push mode, by writing events to anOutputter
- Specified by:
elaborateForPush
in classElaborator
- Returns:
- an evaluator for the expression in push mode
-
elaborateForItem
Description copied from class:Elaborator
Get a function that evaluates the underlying expression in the form of aItem
. This must only be called for expressions whose result has cardinality zero or one.- Specified by:
elaborateForItem
in classElaborator
- Returns:
- an evaluator for the expression that returns an
Item
, or null to represent an empty sequence.
-
elaborateForBoolean
Description copied from class:Elaborator
Get a function that evaluates the underlying expression in the form of a boolean, this being the effective boolean value of the expression.- Specified by:
elaborateForBoolean
in classElaborator
- Returns:
- an evaluator for the expression that returns a boolean.
-
elaborateForUnicodeString
Description copied from class:Elaborator
Get a function that evaluates the underlying expression in the form of a unicode string, this being the result of applying fn:string() to the result of the expression.- Specified by:
elaborateForUnicodeString
in classElaborator
- Parameters:
zeroLengthWhenAbsent
- if true, then when the result of the expression is an empty sequence, the result of the StringEvaluator should be a zero-length string. If false, the return value should be null. For an expression or function that never returns an empty sequence (for example, a call on string() or normalize-space()), the argument has no effect.- Returns:
- an evaluator for the expression that returns a string.
-