Package net.sf.saxon.expr.instruct

## Class SlotManager

- java.lang.Object
- - net.sf.saxon.expr.instruct.SlotManager

- Direct Known Subclasses:
    `SlotManagerEE`

      public class SlotManager
      extends java.lang.Object

  A SlotManager supports functions, templates, etc: specifically, any executable code that requires a stack frame containing local variables. In XSLT a SlotManager underpins any top-level element that can contain local variable declarations, specifically, a top-level xsl:template, xsl:variable, xsl:param, or xsl:function element or an xsl:attribute-set element or xsl:key element. In XQuery it underpins functions and global variables. The purpose of the SlotManager is to allocate slot numbers to variables in the stack, and to record how many slots are needed. A Debugger may define a subclass with additional functionality.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static SlotManager` | `EMPTY` | An empty SlotManager

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SlotManager()` | The constructor should not be called directly.
    `SlotManager​(int n)` | Create a SlotManager with a given number of slots

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `allocateSlotNumber​(StructuredQName qName)` | Allocate a slot number for a variable
    `int` | `getNumberOfVariables()` | Get number of variables (size of stack frame)
    `java.util.List<StructuredQName>` | `getVariableMap()` | Get the variable map (simply a list of variable names as structured QNames).
    `void` | `setNumberOfVariables​(int numberOfVariables)` | Set the number of variables
    `void` | `showStackFrame​(XPathContext context, Logger logger)` | Display the values of the variables and parameters in an XPathContext stack frame to a Logger

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

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

- - ### Field Detail

    - #### EMPTY

          public static SlotManager EMPTY

      An empty SlotManager

  - ### Constructor Detail

    - #### SlotManager

          public SlotManager()

      The constructor should not be called directly. A new SlotManager should be obtained using the factory method `Configuration.makeSlotManager()`.

    - #### SlotManager

          public SlotManager​(int n)

      Create a SlotManager with a given number of slots
      Parameters:
        `n` - the number of slots

  - ### Method Detail

    - #### getNumberOfVariables

          public int getNumberOfVariables()

      Get number of variables (size of stack frame)
      Returns:
        the number of slots for variables

    - #### setNumberOfVariables

          public void setNumberOfVariables​(int numberOfVariables)

      Set the number of variables
      Parameters:
        `numberOfVariables` - the space to be allocated for variables

    - #### allocateSlotNumber

          public int allocateSlotNumber​(StructuredQName qName)

      Allocate a slot number for a variable
      Parameters:
        `qName` - the name of the variable
      Returns:
        the allocated slot number (the next one available)

    - #### getVariableMap

          public java.util.List<StructuredQName> getVariableMap()

      Get the variable map (simply a list of variable names as structured QNames). Note that it is possible for several variables to have the same name.
      Returns:
        the list of variable names for this stack frame

    - #### showStackFrame

          public void showStackFrame​(XPathContext context,
                                     Logger logger)

      Display the values of the variables and parameters in an XPathContext stack frame to a Logger
      Parameters:
        `context` - the XPathContext holding the stack frame
        `logger` - the destination for the output