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

public abstract class PullElaborator extends Elaborator
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 Details

    • PullElaborator

      public PullElaborator()
  • Method Details

    • elaborateForPull

      public abstract PullEvaluator elaborateForPull()
      Description copied from class: Elaborator
      Get a function that evaluates the underlying expression in the form of a SequenceIterator
      Specified by:
      elaborateForPull in class Elaborator
      Returns:
      an evaluator for the expression that returns a SequenceIterator
    • eagerly

      public SequenceEvaluator eagerly()
      Description copied from class: Elaborator
      Get a function that evaluates the underlying expression eagerly
      Overrides:
      eagerly in class Elaborator
      Returns:
      an evaluator for the expression that returns a GroundedValue. The class SequenceEvaluator is declared to return a Sequence not a GroundedValue; we can't specialize it because it's a limitation of C# delegates, but the result can safely be cast to GroundedValue.
    • elaborateForPush

      public PushEvaluator elaborateForPush()
      Description copied from class: Elaborator
      Get a function that evaluates the underlying expression in push mode, by writing events to an Outputter
      Specified by:
      elaborateForPush in class Elaborator
      Returns:
      an evaluator for the expression in push mode
    • elaborateForItem

      public ItemEvaluator elaborateForItem()
      Description copied from class: Elaborator
      Get a function that evaluates the underlying expression in the form of a Item. This must only be called for expressions whose result has cardinality zero or one.
      Specified by:
      elaborateForItem in class Elaborator
      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: 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 class Elaborator
      Returns:
      an evaluator for the expression that returns a boolean.
    • elaborateForUnicodeString

      public UnicodeStringEvaluator elaborateForUnicodeString(boolean zeroLengthWhenAbsent)
      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 class Elaborator
      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.