Class BreakInstr

All Implemented Interfaces:
ExportAgent, Locatable, TailCallLoop.TailCallInfo, IdentityComparable, Traceable

public class BreakInstr extends Instruction implements TailCallLoop.TailCallInfo
A compiled xsl:break instruction. The effect of executing this instruction is to register with the dynamic context that a tail call on a pseudo-function break() has been made; the enclosing xsl:iterate loop detects this tail call request and uses it as a signal to terminate execution of the loop.
  • Constructor Details

    • BreakInstr

      public BreakInstr()
      Create the instruction
  • Method Details

    • operands

      public Iterable<Operand> operands()
      Description copied from class: Expression
      Get the immediate sub-expressions of this expression, with information about the relationship of each expression to its parent expression.

      If the expression is a Callable, then it is required that the order of the operands returned by this function is the same as the order of arguments supplied to the corresponding call() method.

      Specified by:
      operands in class Instruction
      Returns:
      an iterator containing the sub-expressions of this expression
    • copy

      public Expression copy(RebindingMap rebindings)
      Description copied from class: Expression
      Copy an expression. This makes a deep copy.
      Specified by:
      copy in class Expression
      Parameters:
      rebindings - a mutable list of (old binding, new binding) pairs that is used to update the bindings held in any local variable references that are copied.
      Returns:
      the copy of the original expression
    • mayCreateNewNodes

      public boolean mayCreateNewNodes()
      Description copied from class: Instruction
      Ask whether this instruction potentially creates and returns new nodes. Returns true if some branches or dynamic conditions result in new nodes being created. This implementation returns a default value of false
      Overrides:
      mayCreateNewNodes in class Instruction
      Returns:
      true if the instruction creates new nodes under some input conditions (or if it can't be proved that it doesn't)
    • isLiftable

      public boolean isLiftable(boolean forStreaming)
      Ask whether the expression can be lifted out of a loop, assuming it has no dependencies on the controlling variable/focus of the loop
      Overrides:
      isLiftable in class Expression
      Parameters:
      forStreaming - true if we are optimizing for streamed evaluation
      Returns:
      for a BreakInstr, always false
    • getInstructionNameCode

      public int getInstructionNameCode()
      Get the namecode of the instruction for use in diagnostics
      Overrides:
      getInstructionNameCode in class Instruction
      Returns:
      a code identifying the instruction: typically but not always the fingerprint of a name in the XSLT namespace
    • markContext

      public void markContext(XPathContext context)
    • getExpressionName

      public String getExpressionName()
      Description copied from class: Instruction
      Get a name identifying the kind of expression, in terms meaningful to a user.
      Overrides:
      getExpressionName in class Instruction
      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.
    • export

      public void export(ExpressionPresenter out) throws XPathException
      Description copied from class: Expression
      Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.
      Specified by:
      export in interface ExportAgent
      Specified by:
      export in class Expression
      Parameters:
      out - the expression presenter used to display the structure
      Throws:
      XPathException - if the export fails, for example if an expression is found that won't work in the target environment.
    • getElaborator

      public Elaborator getElaborator()
      Description copied from class: Expression
      Make an elaborator for this expression
      Overrides:
      getElaborator in class Expression
      Returns:
      an appropriate Elaborator