Package net.sf.saxon.expr.instruct

## Class CallTemplate.CallTemplatePackage

- java.lang.Object
- - net.sf.saxon.expr.instruct.CallTemplate.CallTemplatePackage

- All Implemented Interfaces:
    `TailCall`
  Enclosing class:
    CallTemplate

      public static class CallTemplate.CallTemplatePackage
      extends java.lang.Object
      implements TailCall

  A CallTemplatePackage is an object that encapsulates the name of a template to be called, the parameters to be supplied, and the execution context. This object can be returned as a tail call, so that the actual call is made from a lower point on the stack, allowing a tail-recursive template to execute in a finite stack size

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `CallTemplatePackage​(Component targetComponent, ParameterSet params, ParameterSet tunnelParams, CallTemplate instruction, Outputter output, XPathContext evaluationContext)` | Construct a CallTemplatePackage that contains information about a call.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `TailCall` | `processLeavingTail()` | Process the template call encapsulated by this package.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### CallTemplatePackage

          public CallTemplatePackage​(Component targetComponent,
                                     ParameterSet params,
                                     ParameterSet tunnelParams,
                                     CallTemplate instruction,
                                     Outputter output,
                                     XPathContext evaluationContext)

      Construct a CallTemplatePackage that contains information about a call.
      Parameters:
        `targetComponent` - the Template to be called
        `params` - the parameters to be supplied to the called template
        `tunnelParams` - the tunnel parameter supplied to the called template
        `instruction` - the xsl:call-template instruction
        `evaluationContext` - saved context information from the Controller (current mode, etc) which must be reset to ensure that the template is called with all the context information intact

  - ### Method Detail

    - #### processLeavingTail

          public TailCall processLeavingTail()
                                      throws XPathException

      Process the template call encapsulated by this package.
      Specified by:
        `processLeavingTail` in interface `TailCall`
      Returns:
        another TailCall. This will never be the original call, but it may be the next recursive call. For example, if A calls B which calls C which calls D, then B may return a TailCall to A representing the call from B to C; when this is processed, the result may be a TailCall representing the call from C to D.
      Throws:
        `XPathException` - if a dynamic error occurs