net.sf.saxon.expr
Class SuppliedParameterReference

java.lang.Object
  |
  +--net.sf.saxon.expr.ComputedExpression
        |
        +--net.sf.saxon.expr.SuppliedParameterReference
All Implemented Interfaces:
Expression, java.io.Serializable

public class SuppliedParameterReference
extends ComputedExpression

Supplied parameter reference: this is an internal expression used to refer to the value of the n'th parameter supplied on a template call (apply-templates). It is used within a type-checking expression designed to check the consistency of the supplied value with the required type. This type checking is all done at run-time, because the binding of apply-templates to actual template rules is entirely dynamic.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class net.sf.saxon.expr.ComputedExpression
lineNumber, NO_ARGUMENTS, staticProperties
 
Constructor Summary
SuppliedParameterReference(int slot)
          Constructor
 
Method Summary
 Expression analyze(StaticContext env)
          Type-check the expression.
 int computeCardinality()
          Get the static cardinality
 void display(int level, NamePool pool)
          Diagnostic print of expression structure
 boolean equals(java.lang.Object other)
          Test if this expression is the same as another expression.
 Item evaluateItem(XPathContext c)
          Evaluate an expression as a single item.
 int getIntrinsicDependencies()
          Determine the intrinsic dependencies of an expression, that is, those which are not derived from the dependencies of its subexpressions.
 ItemType getItemType()
          Determine the data type of the expression, if possible.
 SequenceIterator iterate(XPathContext c)
          Get the value of this variable in a given context.
 Expression simplify()
          Simplify the expression.
 
Methods inherited from class net.sf.saxon.expr.ComputedExpression
computeDependencies, computeSpecialProperties, computeStaticProperties, dynamicError, effectiveBooleanValue, evaluateAsString, getCardinality, getDependencies, getLineNumber, getSpecialProperties, getSubExpressions, markTailFunctionCalls, promote, setLineNumber, typeError
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SuppliedParameterReference

public SuppliedParameterReference(int slot)
Constructor

Parameters:
slot - identifies this parameter
Method Detail

simplify

public Expression simplify()
Simplify the expression. Does nothing.

Specified by:
simplify in interface Expression
Overrides:
simplify in class ComputedExpression
Returns:
the simplified expression

analyze

public Expression analyze(StaticContext env)
                   throws XPathException
Type-check the expression. Not applicable.

Parameters:
env - the static context of the expression
Returns:
the original expression, rewritten to perform necessary run-time type checks, and to perform other type-related optimizations
Throws:
XPathException - if an error is discovered during this phase (typically a type error)

getItemType

public ItemType getItemType()
Determine the data type of the expression, if possible.

Returns:
Type.ITEM, because we don't know the type of the supplied value in advance.

computeCardinality

public int computeCardinality()
Get the static cardinality

Specified by:
computeCardinality in class ComputedExpression
Returns:
ZERO_OR_MORE, because we don't know the type of the supplied value in advance.

equals

public boolean equals(java.lang.Object other)
Test if this expression is the same as another expression. (Note, we only compare expressions that have the same static and dynamic context).

Overrides:
equals in class java.lang.Object

getIntrinsicDependencies

public int getIntrinsicDependencies()
Description copied from class: ComputedExpression
Determine the intrinsic dependencies of an expression, that is, those which are not derived from the dependencies of its subexpressions. For example, position() has an intrinsic dependency on the context position, while (position()+1) does not. The default implementation of the method returns 0, indicating "no dependencies".

Overrides:
getIntrinsicDependencies in class ComputedExpression
Returns:
a set of bit-significant flags identifying the "intrinsic" dependencies. The flags are documented in class net.sf.saxon.value.StaticProperty

iterate

public SequenceIterator iterate(XPathContext c)
                         throws XPathException
Get the value of this variable in a given context.

Specified by:
iterate in interface Expression
Overrides:
iterate in class ComputedExpression
Parameters:
c - the XPathContext which contains the relevant variable bindings
Returns:
the value of the variable, if it is defined
Throws:
XPathException - if the variable is undefined

evaluateItem

public Item evaluateItem(XPathContext c)
                  throws XPathException
Description copied from class: ComputedExpression
Evaluate an expression as a single item. This always returns either a single Item or null (denoting the empty sequence). No conversion is done. This method should not be used unless the static type of the expression is a subtype of "item" or "item?": that is, it should not be called if the expression may return a sequence. There is no guarantee that this condition will be detected.

Specified by:
evaluateItem in interface Expression
Overrides:
evaluateItem in class ComputedExpression
Parameters:
c - The context in which the expression is to be evaluated
Returns:
the node or atomic value that results from evaluating the expression; or null to indicate that the result is an empty sequence
Throws:
XPathException - if any dynamic error occurs evaluating the expression

display

public void display(int level,
                    NamePool pool)
Diagnostic print of expression structure

Parameters:
level - indentation level for this expression