com.icl.saxon
Class Bindery

java.lang.Object
  extended bycom.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
Bindery()
           
 
Method Summary
 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:
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:
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

Returns:
the Value of the variable
Throws:
SAXException - if the variable has not been declared