|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sf.saxon.value.Value com.saxonica.deploy.CompiledClosure
public class CompiledClosure
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 CompiledClosure class is similar to Closure
, but is used
only at run-time by queries that have been compiled into Java. It relies on the fact that
Java provides a limited facility supporting closures: an anonymous inner class is allowed
to reference local variables declared as "final", and these are automatically saved with the
class instance so they are still available when the original stackframe disappears or changes.
The code generator takes care to ensure that all variables that can be referenced from the
inner class (specifically, those representing XPath variables as well as the context item)
are held in variables that are declared final.
Field Summary | |
---|---|
protected int |
cardinality
|
protected SequenceIterator |
inputIterator
|
protected int |
primitiveType
|
Fields inherited from class net.sf.saxon.value.Value |
---|
INDETERMINATE_ORDERING |
Fields inherited from interface net.sf.saxon.om.ValueRepresentation |
---|
EMPTY_VALUE_ARRAY |
Constructor Summary | |
---|---|
protected |
CompiledClosure()
|
|
CompiledClosure(SequenceIterator inputIterator,
int primitiveType,
int cardinality)
Create a compiled closure |
Method Summary | |
---|---|
int |
getCardinality()
Get the cardinality. |
ItemType |
getItemType(TypeHierarchy th)
Get the static item type |
int |
getLength()
Get the length of the value. |
Comparable |
getSchemaComparable()
Get a Comparable value that implements the XML Schema ordering comparison semantics for this value. |
SequenceIterator |
iterate()
Evaluate the expression in a given context to return an iterator over a sequence |
Value |
reduce()
Reduce a value to its simplest form. |
Methods inherited from class net.sf.saxon.value.Value |
---|
asItem, asItem, asIterator, asValue, checkPermittedContents, convertToJava, effectiveBooleanValue, equals, fromItem, getCanonicalLexicalRepresentation, getIterator, getStringValue, getStringValueCS, hashCode, isIdentical, itemAt, iterate, process |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected SequenceIterator inputIterator
protected int primitiveType
protected int cardinality
Constructor Detail |
---|
protected CompiledClosure()
public CompiledClosure(SequenceIterator inputIterator, int primitiveType, int cardinality)
inputIterator
- iterator over the values delivered by the expressionprimitiveType
- lowest-common primitive type of the items delivered by the iteratorcardinality
- cardinality of the expressionMethod Detail |
---|
public ItemType getItemType(TypeHierarchy th)
getItemType
in class Value
th
- the type hierarchy cache
public int getCardinality()
StaticProperty.ALLOWS_ZERO_OR_MORE
getCardinality
in class Value
public SequenceIterator iterate() throws XPathException
iterate
in class Value
XPathException
- if a dynamic error occurs. This is possible only in the case of values
that are materialized lazily, that is, where the iterate() method leads to computation of an
expression that delivers the values.public Value reduce() throws XPathException
reduce
in class Value
XPathException
public int getLength() throws XPathException
getLength
in class Value
XPathException
public Comparable getSchemaComparable()
In the case of data types that are partially ordered, the returned Comparable extends the standard
semantics of the compareTo() method by returning the value Value.INDETERMINATE_ORDERING
when there
is no defined order relationship between two given values.
getSchemaComparable
in class Value
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |