Class GlobalVariable

All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, Binding, Container, EvaluableItem, SequenceIterable, TailCallReturner, InstructionInfo, Locator
Direct Known Subclasses:
GlobalParam

public class GlobalVariable extends GeneralVariable implements Container
A compiled global variable in a stylesheet or query.
See Also:
  • Constructor Details

    • GlobalVariable

      public GlobalVariable()
      Create a global variable
  • Method Details

    • getExecutable

      public Executable getExecutable()
      Get the executable containing this global variable
      Specified by:
      getExecutable in interface Container
      Overrides:
      getExecutable in class Expression
      Returns:
      the containing executable
    • setExecutable

      public void setExecutable(Executable executable)
      Set the containing executable
      Parameters:
      executable - the executable that contains this global variable
    • setHostLanguage

      public void setHostLanguage(int language)
      Set the host language for this declaration
      Parameters:
      language - the host language (for example XSLT, XQuery)
    • getHostLanguage

      public int getHostLanguage()
      Get the host language for this declaration
      Specified by:
      getHostLanguage in interface Container
      Overrides:
      getHostLanguage in class Expression
      Returns:
      the host language (for example XSLT, XQuery)
    • setContainsLocals

      public void setContainsLocals(SlotManager map)
      The expression that initializes a global variable may itself use local variables. In this case a stack frame needs to be allocated while evaluating the global variable
      Parameters:
      map - The stack frame map for local variables used while evaluating this global variable.
    • isGlobal

      public boolean isGlobal()
      Is this a global variable?
      Specified by:
      isGlobal in interface Binding
      Overrides:
      isGlobal in class GeneralVariable
      Returns:
      true (yes, it is a global variable)
    • lookForCycles

      public void lookForCycles(Stack referees, XQueryFunctionLibrary globalFunctionLibrary) throws XPathException
      Check for cycles in this variable definition
      Parameters:
      referees - the calls leading up to this one; it's an error if this variable is on the stack, because that means it calls itself directly or indirectly. The stack may contain variable definitions (GlobalVariable objects) and user-defined functions (UserFunction objects). It will never contain the same object more than once.
      globalFunctionLibrary - the library containing all global functions
      Throws:
      XPathException
    • processLeavingTail

      public TailCall processLeavingTail(XPathContext context) throws XPathException
      Process the variable declaration
      Specified by:
      processLeavingTail in interface TailCallReturner
      Specified by:
      processLeavingTail in class Instruction
      Parameters:
      context - The dynamic context of the transformation, giving access to the current node, the current variables, etc.
      Returns:
      null if the instruction has completed execution; or a TailCall indicating a function call or template call that is delegated to the caller, to be made after the stack has been unwound so as to save stack space.
      Throws:
      XPathException
    • getSelectValue

      public ValueRepresentation getSelectValue(XPathContext context) throws XPathException
      Evaluate the variable. That is, get the value of the select expression if present or the content of the element otherwise, either as a tree or as a sequence
      Overrides:
      getSelectValue in class GeneralVariable
      Parameters:
      context - the XPath dynamic context
      Returns:
      the result of evaluating the variable
      Throws:
      XPathException
    • evaluateVariable

      public ValueRepresentation evaluateVariable(XPathContext context) throws XPathException
      Evaluate the variable
      Specified by:
      evaluateVariable in interface Binding
      Parameters:
      context - the XPath dynamic evaluation context
      Returns:
      the result of evaluating the variable
      Throws:
      XPathException