Bindery
Date: 2016-07-03

com.icl.saxon

## Class Bindery

- java.lang.Object
- - com.icl.saxon.Bindery

-     public final class Bindery
      extends java.lang.Object

  The Bindery class holds information about variables and their values. Variables are identified by a Binding object. Values can be any object, though values of XSL variables will always be of class Value.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Bindery()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `allocateGlobals(int n)` Define how many slots are needed for global variables
    `void` | `allocateLocals(int n)` Define how many slots are needed for local variables.
    `void` | `assignVariable(Binding binding, Value value)` Assign a new value to a variable
    `void` | `closeStackFrame()` Close the current stack frame for local variables
    `void` | `defineGlobalParameters(ParameterSet params)` Define global parameters
    `void` | `defineGlobalVariable(Binding binding, Value value)` Define global variable
    `void` | `defineLocalVariable(Binding binding, Value value)` Define local variable
    `int` | `getFrameId()` Get the id of the current frame.
    `Value` | `getLocalParameter(int fingerprint)` Get local parameter.
    `Value` | `getValue(Binding binding)` Get the value of a variable
    `Value` | `getValue(Binding binding, int frameId)` Get the value of a variable in the given frame
    `boolean` | `isEvaluated(Binding binding)` Test if global variable has already been evaluated
    `void` | `openStackFrame(ParameterSet localParameters)` Start a new stack frame for local variables
    `void` | `setExecuting(Binding binding, boolean executing)` Set/Unset a flag to indicate that a particular global variable is currently being evaluated.
    `boolean` | `useGlobalParameter(int fingerprint, Binding binding)` Use global parameter.
    `boolean` | `useLocalParameter(int fingerprint, Binding binding)` Use local parameter.

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

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

- - ### Constructor Detail

    - #### Bindery

          public Bindery()

  - ### Method Detail

    - #### allocateGlobals

          public void allocateGlobals(int n)

      Define how many slots are needed for global variables

    - #### defineGlobalParameters

          public void defineGlobalParameters(ParameterSet params)

      Define global parameters
      Parameters:
        `params` - The ParameterSet passed in by the user, eg. from the command line

    - #### useGlobalParameter

          public boolean useGlobalParameter(int fingerprint,
                                   Binding binding)

      Use global parameter. This is called when a global xsl:param element is processed. If a parameter of the relevant name was supplied, it is bound to the xsl:param element. Otherwise the method returns false, so the xsl:param default will be evaluated
      Parameters:
        `fingerprint` - The fingerprint of the parameter
        `binding` - The XSLParam element to bind its value to
      Returns:
        true if a parameter of this name was supplied, false if not

    - #### defineGlobalVariable

          public void defineGlobalVariable(Binding binding,
                                  Value value)

      Define global variable
      Parameters:
        `name` - the name of the variable
        `value` - the value of the variable
      Throws:
        `SAXException` - if the variable is already declared

    - #### setExecuting

          public void setExecuting(Binding binding,
                          boolean executing)
                            throws XPathException

      Set/Unset a flag to indicate that a particular global variable is currently being evaluated.
      Throws:
        `XPathException` - If an attempt is made to set the flag when it is already set, this means the definition of the variable is circular.

    - #### isEvaluated

          public boolean isEvaluated(Binding binding)

      Test if global variable has already been evaluated

    - #### allocateLocals

          public void allocateLocals(int n)

      Define how many slots are needed for local variables. We work on the basis of "one size fits all": all stackframes are allocated as large as the largest one needed

    - #### openStackFrame

          public void openStackFrame(ParameterSet localParameters)

      Start a new stack frame for local variables

    - #### closeStackFrame

          public void closeStackFrame()

      Close the current stack frame for local variables

    - #### useLocalParameter

          public boolean useLocalParameter(int fingerprint,
                                  Binding binding)

      Use local parameter. This is called when a local xsl:param element is processed. If a parameter of the relevant name was supplied, it is bound to the xsl:param element. Otherwise the method returns false, so the xsl:param default will be evaluated
      Parameters:
        `fingerprint` - The fingerprint of the parameter name
        `binding` - The XSLParam element to bind its value to
      Returns:
        true if a parameter of this name was supplied, false if not

    - #### getLocalParameter

          public Value getLocalParameter(int fingerprint)

      Get local parameter. This method is available to user-written node handlers invoked via the saxon:handler interface, it allows them to retrieve the values of parameters set up within a calling XSL template.
      Returns:
        The value of the parameter, or null if not supplied

    - #### defineLocalVariable

          public void defineLocalVariable(Binding binding,
                                 Value value)

      Define local variable
      Parameters:
        `name` - the name of the variable
        `value` - the value of the variable

    - #### getValue

          public Value getValue(Binding binding)

      Get the value of a variable
      Parameters:
        `binding` - the Binding that establishes the unique instance of the variable
      Returns:
        the Value of the variable if defined, null otherwise.

    - #### getValue

          public Value getValue(Binding binding,
                       int frameId)

      Get the value of a variable in the given frame
      Parameters:
        `binding` - the Binding that establishes the unique instance of the variable
        `frameId` - the id of the frame, see getFrameId
      Returns:
        the Value of the variable if defined, null otherwise.

    - #### getFrameId

          public int getFrameId()

      Get the id of the current frame.
      Returns:
        an id, that may be given to getValue(Binding,int)

    - #### assignVariable

          public void assignVariable(Binding binding,
                            Value value)

      Assign a new value to a variable
      Parameters:
        `name` - the name of the local or global variable or parameter (without a $ sign)
      Throws:
        `SAXException` - if the variable has not been declared