net.sf.saxon.expr.instruct

## Interface TailCall

- All Known Implementing Classes:
    ApplyTemplates.ApplyTemplatesPackage, CallTemplate.CallTemplatePackage, MultithreadedApplyTemplates.ApplyTemplatesPackage

      public interface TailCall

  Interface representing a Tail Call. This is a package of information passed back by a called instruction to its caller, representing a call (and its arguments) that needs to be made by the caller. This saves stack space by unwinding the stack before making the call.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `TailCall` | `processLeavingTail()` Process this TailCall (that is, executed the template call that is packaged in this object).

- - ### Method Detail

    - #### processLeavingTail

          TailCall processLeavingTail()
                                      throws XPathException

      Process this TailCall (that is, executed the template call that is packaged in this object). This may return a further TailCall, which should also be processed: this is the mechanism by which a nested set of recursive calls is converted into an iteration.
      Returns:
        a further TailCall, if the recursion continues, or null, indicating that the recursion has terminated.
      Throws:
        `XPathException` - if any error occurs processing the tail call

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.