net.sf.saxon.query

Class GlobalVariableDefinition

Implemented Interfaces:
Declaration, SourceLocator, VariableDeclaration
Known Direct Subclasses:
UndeclaredVariable

public class GlobalVariableDefinition
extends java.lang.Object
implements VariableDeclaration, Declaration

Class to hold compile-time information about an XQuery global variable or parameter

Field Summary

protected List
references

Method Summary

GlobalVariable
compile(Executable exec, int slot)
Create a compiled representation of this global variable
void
explain(ExpressionPresenter out)
Produce diagnostic output showing the compiled and optimized expression tree for a function
void
fixupReference(BindingReference ref, TypeHierarchy th)
Notify a references to this variable of the data type
int
getColumnNumber()
Get column number
GlobalVariable
getCompiledVariable()
Get the compiled variable if the definition has been compiled
int
getLineNumber()
Get the line number where the declaration appears
String
getPublicId()
Get public identifier
SequenceType
getRequiredType()
Get the required type of the variable
String
getSystemId()
Get the system ID of the module containing the variable declaration
StructuredQName
getVariableQName()
Get the variable name
Iterator
iterateReferences()
Iterate over the references to this variable
void
registerReference(BindingReference ref)
Register a variable reference that refers to this global variable
void
setIsParameter(boolean b)
Indicate whether this global variable is a "parameter" (an external variable, in XQuery terminology)
void
setLineNumber(int lineNumber)
Set the line number where the variable declaration appears in the source
void
setRequiredType(SequenceType type)
Set the required type of the variable
void
setSystemId(String systemId)
Set the system ID of the module where the variable declaration appears
void
setValueExpression(Expression val)
Set the expression used to define the value of the variable
void
setVariableQName(StructuredQName qName)
Set the variable name
void
typeCheck(ExpressionVisitor visitor)
Type check the compiled representation of this global variable

Field Details

references

protected List references

Method Details

compile

public GlobalVariable compile(Executable exec,
                              int slot)
            throws XPathException
Create a compiled representation of this global variable
Parameters:
exec - the executable
slot - the slot number allocated to this variable
Returns:
the compiled representation
Throws:
XPathException - if compile-time errors are found.

explain

public void explain(ExpressionPresenter out)
Produce diagnostic output showing the compiled and optimized expression tree for a function
Parameters:
out - the destination to be used

fixupReference

public void fixupReference(BindingReference ref,
                           TypeHierarchy th)
            throws XPathException
Notify a references to this variable of the data type
Parameters:
ref - the variable reference
th - the type hierarchy cache

getColumnNumber

public int getColumnNumber()
Get column number
Returns:
-1 always

getCompiledVariable

public GlobalVariable getCompiledVariable()
Get the compiled variable if the definition has been compiled
Returns:
the compiled global variable

getLineNumber

public int getLineNumber()
Get the line number where the declaration appears

getPublicId

public String getPublicId()
Get public identifier
Returns:
null always

getRequiredType

public SequenceType getRequiredType()
Get the required type of the variable
Returns:
the declared type, from the "as" clause if present

getSystemId

public String getSystemId()
Get the system ID of the module containing the variable declaration
Returns:
the System ID (base URI)

getVariableQName

public StructuredQName getVariableQName()
Get the variable name
Specified by:
getVariableQName in interface VariableDeclaration
Returns:
the variable name

iterateReferences

public Iterator iterateReferences()
Iterate over the references to this variable

registerReference

public void registerReference(BindingReference ref)
Register a variable reference that refers to this global variable
Specified by:
registerReference in interface VariableDeclaration
Parameters:
ref - the variable reference

setIsParameter

public void setIsParameter(boolean b)
Indicate whether this global variable is a "parameter" (an external variable, in XQuery terminology)
Parameters:
b - true if this variable is external

setLineNumber

public void setLineNumber(int lineNumber)
Set the line number where the variable declaration appears in the source
Parameters:
lineNumber - the line number

setRequiredType

public void setRequiredType(SequenceType type)
Set the required type of the variable
Parameters:
type - the declared type, from the "as" clause if present

setSystemId

public void setSystemId(String systemId)
Set the system ID of the module where the variable declaration appears
Parameters:
systemId - the System ID (base URI)

setValueExpression

public void setValueExpression(Expression val)
Set the expression used to define the value of the variable
Parameters:
val - the initializing expression

setVariableQName

public void setVariableQName(StructuredQName qName)
Set the variable name
Parameters:
qName - the variable name

typeCheck

public void typeCheck(ExpressionVisitor visitor)
            throws XPathException
Type check the compiled representation of this global variable
Parameters:
visitor - an expression visitor
Throws:
XPathException - if compile-time errors are found.