Package net.sf.saxon.instruct
Class GlobalVariable
java.lang.Object
net.sf.saxon.expr.Expression
net.sf.saxon.instruct.Instruction
net.sf.saxon.instruct.GeneralVariable
net.sf.saxon.instruct.GlobalVariable
- All Implemented Interfaces:
Serializable,SourceLocator,LocationProvider,SaxonLocator,Binding,Container,EvaluableItem,SequenceIterable,TailCallReturner,InstructionInfo,Locator
- Direct Known Subclasses:
GlobalParam
A compiled global variable in a stylesheet or query.
- See Also:
-
Field Summary
Fields inherited from class net.sf.saxon.instruct.GeneralVariable
evaluationMode, referenceCount, slotNumber, variableQNameFields inherited from class net.sf.saxon.expr.Expression
EVALUATE_METHOD, ITERATE_METHOD, locationId, PROCESS_METHOD, staticProperties -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionevaluateVariable(XPathContext context) Evaluate the variableGet the executable containing this global variableintGet the host language for this declarationgetSelectValue(XPathContext context) Evaluate the variable.booleanisGlobal()Is this a global variable?voidlookForCycles(Stack referees, XQueryFunctionLibrary globalFunctionLibrary) Check for cycles in this variable definitionprocessLeavingTail(XPathContext context) Process the variable declarationvoidThe expression that initializes a global variable may itself use local variables.voidsetExecutable(Executable executable) Set the containing executablevoidsetHostLanguage(int language) Set the host language for this declarationMethods inherited from class net.sf.saxon.instruct.GeneralVariable
copy, evaluateItem, explain, getCardinality, getEvaluationMode, getInstructionNameCode, getItemType, getLocalSlotNumber, getRequiredType, getSelectExpression, getSlotNumber, getVariableQName, init, isAssignable, isImplicitlyRequiredParam, isRequiredParam, isTunnelParam, iterate, iterateSubExpressions, optimize, promoteInst, replaceSubExpression, setAssignable, setImplicitlyRequiredParam, setReferenceCount, setRequiredParam, setRequiredType, setSelectExpression, setSlotNumber, setTunnel, setVariableQName, simplify, typeCheckMethods inherited from class net.sf.saxon.instruct.Instruction
assembleParams, assembleTunnelParams, computeCardinality, computeSpecialProperties, createsNewNodes, dynamicError, evaluateAsString, getConstructType, getImplementationMethod, getSourceLocator, isXSLT, process, promoteMethods inherited from class net.sf.saxon.expr.Expression
addToPathMap, adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeDependencies, computeStaticProperties, display, doPromotion, dynamicError, effectiveBooleanValue, evaluatePendingUpdates, explain, findParentOf, getColumnNumber, getColumnNumber, getContainer, getDependencies, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, hasLoopingSubexpression, implementsStaticTypeCheck, isUpdatingExpression, iterateEvents, markTailFunctionCalls, resetLocalStaticProperties, setContainer, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, toString, typeErrorMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface net.sf.saxon.expr.Container
getLocationProvider, replaceSubExpressionMethods inherited from interface javax.xml.transform.SourceLocator
getColumnNumber, getLineNumber, getPublicId, getSystemId
-
Constructor Details
-
GlobalVariable
public GlobalVariable()Create a global variable
-
-
Method Details
-
getExecutable
Get the executable containing this global variable- Specified by:
getExecutablein interfaceContainer- Overrides:
getExecutablein classExpression- Returns:
- the containing executable
-
setExecutable
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:
getHostLanguagein interfaceContainer- Overrides:
getHostLanguagein classExpression- Returns:
- the host language (for example XSLT, XQuery)
-
setContainsLocals
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:
isGlobalin interfaceBinding- Overrides:
isGlobalin classGeneralVariable- 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
Process the variable declaration- Specified by:
processLeavingTailin interfaceTailCallReturner- Specified by:
processLeavingTailin classInstruction- 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
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:
getSelectValuein classGeneralVariable- Parameters:
context- the XPath dynamic context- Returns:
- the result of evaluating the variable
- Throws:
XPathException
-
evaluateVariable
Evaluate the variable- Specified by:
evaluateVariablein interfaceBinding- Parameters:
context- the XPath dynamic evaluation context- Returns:
- the result of evaluating the variable
- Throws:
XPathException
-