Class PushElaborator

java.lang.Object
net.sf.saxon.expr.elab.Elaborator
net.sf.saxon.expr.elab.PushElaborator
Direct Known Subclasses:
ApplyTemplates.ApplyTemplatesElaborator, BreakInstr.BreakElaborator, CallTemplate.CallTemplateElaborator, Copy.CopyElaborator, DocumentInstr.DocumentInstrElaborator, DoInstr.DoInstructionElaborator, ForEachGroup.ForEachGroupElaborator, IterateInstr.IterateElaborator, LocalParam.LocalParamElaborator, LocalParamBlock.LocalParamBlockElaborator, NextIteration.NextIterationElaborator, SequenceInstr.SequenceInstrElaborator, SimpleExpression.SimpleExpressionElaborator, StreamInstr.StreamInstrElaborator, UseAttributeSet.UseAttributeSetElaborator, While.WhileElaborator

public abstract class PushElaborator extends Elaborator
Abstract superclass for elaborators whose primary evaluation method is in push mode. This class provides olternative modes of evaluation (such as pull and item evaluation), all implemented in terms of the push evaluator which must be supplied in a subclass.
  • Constructor Details

    • PushElaborator

      public PushElaborator()
  • Method Details

    • elaborateForPull

      public 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.