| java.lang.Object net.sf.saxon.value.Value net.sf.saxon.value.Closure
All known Subclasses: net.sf.saxon.value.MemoClosure,
Closure | public class Closure extends Value (Code) | | A Closure represents a value that has not yet been evaluated: the value is represented
by an expression, together with saved values of all the context variables that the
expression depends on.
This Closure is designed for use when the value is only read once. If the value
is read more than once, a new iterator over the underlying expression is obtained
each time: this may (for example in the case of a filter expression) involve
significant re-calculation.
The expression may depend on local variables and on the context item; these values
are held in the saved XPathContext object that is kept as part of the Closure, and they
will always be read from that object. The expression may also depend on global variables;
these are unchanging, so they can be read from the Bindery in the normal way. Expressions
that depend on other contextual information, for example the values of position(), last(),
current(), current-group(), should not be evaluated using this mechanism: they should
always be evaluated eagerly. This means that the Closure does not need to keep a copy
of these context variables.
|
Constructor Summary | |
public | Closure() Constructor should not be called directly, instances should be made using the make() method. |
depth | protected int depth(Code) | | |
Closure | public Closure()(Code) | | Constructor should not be called directly, instances should be made using the make() method.
|
getCardinality | public int getCardinality()(Code) | | Get the cardinality
|
getImplementationMethod | public int getImplementationMethod()(Code) | | An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process().
This method indicates which of these methods is provided. This implementation provides both iterate() and
process() methods natively.
|
getSpecialProperties | public int getSpecialProperties()(Code) | | Get the static properties of this expression (other than its type). The result is
bit-signficant. These properties are used for optimizations. In general, if
property bit is set, it is true, but if it is unset, the value is unknown.
|
isIndexable | public boolean isIndexable()(Code) | | Determine whether this Closure is indexable
|
iterate | public SequenceIterator iterate(XPathContext context) throws XPathException(Code) | | Evaluate the expression in a given context to return an iterator over a sequence
Parameters: context - the evaluation context. This is ignored; we use the context savedas part of the Closure instead. |
makeIteratorClosure | public static Closure makeIteratorClosure(SequenceIterator iterator)(Code) | | Construct a Closure over an existing SequenceIterator. This is used when an extension function
returns a SequenceIterator as its result (it replaces the old SequenceIntent class for this
purpose). There is no known expression in this case. Note that the caller must
ensure this is a "clean" iterator: it must be positioned at the start, and must
not be shared by anyone else.
|
process | public void process(XPathContext context) throws XPathException(Code) | | Process the instruction, without returning any tail calls
Parameters: context - The dynamic context, giving access to the current node,the current variables, etc. |
reduce | public Value reduce() throws XPathException(Code) | | Reduce a value to its simplest form. If the value is a closure or some other form of deferred value
such as a FunctionCallPackage, then it is reduced to a SequenceExtent. If it is a SequenceExtent containing
a single item, then it is reduced to that item. One consequence that is exploited by class FilterExpression
is that if the value is a singleton numeric value, then the result will be an instance of NumericValue
|
Fields inherited from net.sf.saxon.value.Value | final public static Class[] EMPTY_CLASS_ARRAY(Code)(Java Doc)
|
Methods inherited from net.sf.saxon.value.Value | public static Item asItem(ValueRepresentation value, XPathContext context) throws XPathException(Code)(Java Doc) public static SequenceIterator asIterator(ValueRepresentation val, XPathContext context) throws XPathException(Code)(Java Doc) public static Value asValue(ValueRepresentation val)(Code)(Java Doc) public void checkPermittedContents(SchemaType parentType, StaticContext env, boolean whole) throws XPathException(Code)(Java Doc) public static CharSequence collapseWhitespace(CharSequence in)(Code)(Java Doc) public static Object convert(Item item) throws XPathException(Code)(Java Doc) public static Value convertJavaObjectToXPath(Object object, SequenceType requiredType, Configuration config) throws XPathException(Code)(Java Doc) public Object convertToJava(Class target, XPathContext context) throws XPathException(Code)(Java Doc) public void display(int level, NamePool pool, PrintStream out)(Code)(Java Doc) public boolean effectiveBooleanValue(XPathContext context) throws XPathException(Code)(Java Doc) public boolean equals(Object obj)(Code)(Java Doc) public String evaluateAsString(XPathContext context) throws XPathException(Code)(Java Doc) public Item evaluateItem(XPathContext context) throws XPathException(Code)(Java Doc) public int getCardinality()(Code)(Java Doc) final public int getDependencies()(Code)(Java Doc) public ItemType getItemType(TypeHierarchy th)(Code)(Java Doc) public static SequenceIterator getIterator(ValueRepresentation val) throws XPathException(Code)(Java Doc) public int getLength() throws XPathException(Code)(Java Doc) final public Container getParentExpression()(Code)(Java Doc) public int getSpecialProperties()(Code)(Java Doc) public String getStringValue() throws XPathException(Code)(Java Doc) public int hashCode()(Code)(Java Doc) public Item itemAt(int n) throws XPathException(Code)(Java Doc) final public Iterator iterateSubExpressions()(Code)(Java Doc) public static QNameValue makeQNameValue(Object object, Configuration config)(Code)(Java Doc) public static CharSequence normalizeWhitespace(CharSequence in)(Code)(Java Doc) final public Expression optimize(Optimizer opt, StaticContext env, ItemType contextItemType)(Code)(Java Doc) public void process(XPathContext context) throws XPathException(Code)(Java Doc) final public Expression promote(PromotionOffer offer)(Code)(Java Doc) public Value reduce() throws XPathException(Code)(Java Doc) public boolean schemaEquals(Value obj)(Code)(Java Doc) final public Expression simplify(StaticContext env)(Code)(Java Doc) public static double stringToNumber(CharSequence s) throws NumberFormatException(Code)(Java Doc) public String toString()(Code)(Java Doc) public static CharSequence trimWhitespace(CharSequence in)(Code)(Java Doc) final public Expression typeCheck(StaticContext env, ItemType contextItemType)(Code)(Java Doc)
|
|
|