org.apache.xalan.templates
Class XUnresolvedVariable

java.lang.Object
  extended by org.apache.xpath.Expression
      extended by org.apache.xpath.objects.XObject
          extended by org.apache.xalan.templates.XUnresolvedVariable
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, javax.xml.transform.SourceLocator, ExpressionNode, XPathVisitable

public class XUnresolvedVariable
extends XObject

An instance of this class holds unto a variable until it is executed. It is used at this time for global variables which must (we think) forward reference.

See Also:
Serialized Form

Field Summary
private  int m_context
          The node context for execution.
private  boolean m_doneEval
          true if this variable or parameter is not currently being evaluated.
private  boolean m_isGlobal
          true if this variable or parameter is a global.
private  TransformerImpl m_transformer
          The transformer context for execution.
private  int m_varStackContext
          An index into the variable stack where the variable context ends, i.e.
private  int m_varStackPos
          An index to the point in the variable stack where we should begin variable searches for evaluation of expressions.
(package private) static long serialVersionUID
           
 
Fields inherited from class org.apache.xpath.objects.XObject
CLASS_BOOLEAN, CLASS_NODESET, CLASS_NULL, CLASS_NUMBER, CLASS_RTREEFRAG, CLASS_STRING, CLASS_UNKNOWN, CLASS_UNRESOLVEDVARIABLE, m_obj
 
Constructor Summary
XUnresolvedVariable(ElemVariable obj, int sourceNode, TransformerImpl transformer, int varStackPos, int varStackContext, boolean isGlobal)
          Create an XUnresolvedVariable, that may be executed at a later time.
 
Method Summary
 XObject execute(XPathContext xctxt)
          For support of literal objects in xpaths.
 int getType()
          Tell what kind of class this is.
 java.lang.String getTypeString()
          Given a request type, return the equivalent string.
 void setVarStackContext(int bottom)
          Set an index into the variable stack where the variable context ends, i.e.
 void setVarStackPos(int top)
          Set an index to the point in the variable stack where we should begin variable searches for evaluation of expressions.
 
Methods inherited from class org.apache.xpath.objects.XObject
allowDetachToRelease, appendToFsb, bool, boolWithSideEffects, callVisitors, castToType, create, create, deepEquals, destruct, detach, dispatchCharactersEvents, equals, error, error, fixupVariables, getFresh, greaterThan, greaterThanOrEqual, iter, lessThan, lessThanOrEqual, mutableNodeset, nodelist, nodeset, notEquals, num, numWithSideEffects, object, reset, rtf, rtf, rtree, rtree, setObject, str, toString, xstr
 
Methods inherited from class org.apache.xpath.Expression
asIterator, asIteratorRaw, asNode, assertion, bool, canTraverseOutsideSubtree, error, execute, execute, execute, executeCharsToContentHandler, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, getColumnNumber, getExpressionOwner, getLineNumber, getPublicId, getSystemId, isNodesetExpr, isSameClass, isStableNumber, num, warn, xstr
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

static final long serialVersionUID
See Also:
Constant Field Values

m_context

private transient int m_context
The node context for execution.


m_transformer

private transient TransformerImpl m_transformer
The transformer context for execution.


m_varStackPos

private transient int m_varStackPos
An index to the point in the variable stack where we should begin variable searches for evaluation of expressions. This is -1 if m_isTopLevel is false.


m_varStackContext

private transient int m_varStackContext
An index into the variable stack where the variable context ends, i.e. at the point we should terminate the search.


m_isGlobal

private boolean m_isGlobal
true if this variable or parameter is a global.


m_doneEval

private transient boolean m_doneEval
true if this variable or parameter is not currently being evaluated.

Constructor Detail

XUnresolvedVariable

public XUnresolvedVariable(ElemVariable obj,
                           int sourceNode,
                           TransformerImpl transformer,
                           int varStackPos,
                           int varStackContext,
                           boolean isGlobal)
Create an XUnresolvedVariable, that may be executed at a later time. This is primarily used so that forward referencing works with global variables. An XUnresolvedVariable is initially pushed into the global variable stack, and then replaced with the real thing when it is accessed.

Parameters:
obj - Must be a non-null reference to an ElemVariable.
sourceNode - The node context for execution.
transformer - The transformer execution context.
varStackPos - An index to the point in the variable stack where we should begin variable searches for evaluation of expressions.
varStackContext - An index into the variable stack where the variable context ends, i.e. at the point we should terminate the search.
isGlobal - true if this is a global variable.
Method Detail

execute

public XObject execute(XPathContext xctxt)
                throws javax.xml.transform.TransformerException
For support of literal objects in xpaths.

Overrides:
execute in class XObject
Parameters:
xctxt - The XPath execution context.
Returns:
This object.
Throws:
javax.xml.transform.TransformerException

setVarStackPos

public void setVarStackPos(int top)
Set an index to the point in the variable stack where we should begin variable searches for evaluation of expressions. This is -1 if m_isTopLevel is false.

Parameters:
top - A valid value that specifies where in the variable stack the search should begin.

setVarStackContext

public void setVarStackContext(int bottom)
Set an index into the variable stack where the variable context ends, i.e. at the point we should terminate the search.

Parameters:
bottom - The point at which the search should terminate, normally zero for global variables.

getType

public int getType()
Tell what kind of class this is.

Overrides:
getType in class XObject
Returns:
CLASS_UNRESOLVEDVARIABLE

getTypeString

public java.lang.String getTypeString()
Given a request type, return the equivalent string. For diagnostic purposes.

Overrides:
getTypeString in class XObject
Returns:
An informational string.