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,OuterForExpression.OuterForExprElaborator,RangeExpression.RangeElaborator,SimpleStepExpression.SimpleStepExprElaborator,SlashExpression.SlashExprElaborator,SortExpression.SortExprElaborator,SuppliedParameterReference.SuppliedParameterReferenceElaborator,TailExpression.TailExprElaborator,UntypedSequenceConverter.UntypedSequenceConverterElaborator,VennExpression.VennElaborator
public abstract class PullElaborator extends Elaborator
Abstract implementation ofElaboratorfor expressions that primarily evaluate in pull mode, that is, by returning aSequenceIteratorover the result. The methodelaborateForPull()must be implemented in subclasses; other evaluation methods such aselaborateForPush()are by default implemented by callingelaborateForPull(), though they may have optimized implementations in subclasses.
-
-
Constructor Summary
Constructors Constructor Description PullElaborator()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description SequenceEvaluatoreagerly()Get a function that evaluates the underlying expression eagerlyBooleanEvaluatorelaborateForBoolean()Get a function that evaluates the underlying expression in the form of a boolean, this being the effective boolean value of the expression.ItemEvaluatorelaborateForItem()Get a function that evaluates the underlying expression in the form of aItem.abstract PullEvaluatorelaborateForPull()Get a function that evaluates the underlying expression in the form of aSequenceIteratorPushEvaluatorelaborateForPush()Get a function that evaluates the underlying expression in push mode, by writing events to anOutputterUnicodeStringEvaluatorelaborateForUnicodeString(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
-
-
-
-
Method Detail
-
elaborateForPull
public abstract PullEvaluator elaborateForPull()
Description copied from class:ElaboratorGet a function that evaluates the underlying expression in the form of aSequenceIterator- Specified by:
elaborateForPullin classElaborator- Returns:
- an evaluator for the expression that returns a
SequenceIterator
-
eagerly
public SequenceEvaluator eagerly()
Description copied from class:ElaboratorGet a function that evaluates the underlying expression eagerly- Overrides:
eagerlyin classElaborator- Returns:
- an evaluator for the expression that returns a
GroundedValue. The classSequenceEvaluatoris declared to return aSequencenot aGroundedValue; we can't specialize it because it's a limitation of C# delegates, but the result can safely be cast toGroundedValue.
-
elaborateForPush
public PushEvaluator elaborateForPush()
Description copied from class:ElaboratorGet a function that evaluates the underlying expression in push mode, by writing events to anOutputter- Specified by:
elaborateForPushin classElaborator- Returns:
- an evaluator for the expression in push mode
-
elaborateForItem
public ItemEvaluator elaborateForItem()
Description copied from class:ElaboratorGet 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:
elaborateForItemin classElaborator- Returns:
- an evaluator for the expression that returns an
Item, or null to represent an empty sequence.
-
elaborateForBoolean
public BooleanEvaluator elaborateForBoolean()
Description copied from class:ElaboratorGet a function that evaluates the underlying expression in the form of a boolean, this being the effective boolean value of the expression.- Specified by:
elaborateForBooleanin classElaborator- Returns:
- an evaluator for the expression that returns a boolean.
-
elaborateForUnicodeString
public UnicodeStringEvaluator elaborateForUnicodeString(boolean zeroLengthWhenAbsent)
Description copied from class:ElaboratorGet 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:
elaborateForUnicodeStringin 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.
-
-