com.saxonica.extra
Class OptimizerSA

java.lang.Object
  extended bynet.sf.saxon.expr.Optimizer
      extended bycom.saxonica.extra.OptimizerSA
All Implemented Interfaces:
java.io.Serializable

public class OptimizerSA
extends Optimizer

This class doesn't actually do any optimization itself, despite the name. Rather, it is intended to act as a factory for implementation classes that perform optimization, so that the appropriate level of optimization can be selected.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class net.sf.saxon.expr.Optimizer
config
 
Constructor Summary
OptimizerSA(Configuration config)
           
 
Method Summary
 ComputedExpression convertFilterExpressionToKey(FilterExpression f, StaticContext env, Expression doc)
          Convert a filter expression to a call on the key function.
 Expression convertPathExpressionToKey(PathExpression pathExp, StaticContext env)
          Examine a path expression to see whether it can be replaced by a call on the key() function; if so, generate an appropriate key definition and return the call on key().
 FilterExpression convertToFilterExpression(PathExpression pathExp, TypeHierarchy th)
          Convert a path expression such as a/b/c[predicate] into a filter expression of the form (a/b/c)[predicate].
 int isIndexableFilter(Expression filter)
          Test whether a filter predicate is indexable.
 Closure makeClosure(Expression expression, int ref)
          Make a Closure, given the expected reference count
 BinaryExpression makeGeneralComparison(Expression p0, int op, Expression p1, boolean backwardsCompatible)
          Create a GeneralComparison expression
 Expression optimizeCopy(Expression select)
          Attempt to optimize a copy operation.
 SequenceIterator tryIndexedFilter(ValueRepresentation startValue, Expression filter, int isIndexable, XPathContext context)
           
 
Methods inherited from class net.sf.saxon.expr.Optimizer
getConfiguration
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OptimizerSA

public OptimizerSA(Configuration config)
Method Detail

makeGeneralComparison

public BinaryExpression makeGeneralComparison(Expression p0,
                                              int op,
                                              Expression p1,
                                              boolean backwardsCompatible)
Create a GeneralComparison expression

Overrides:
makeGeneralComparison in class Optimizer

optimizeCopy

public Expression optimizeCopy(Expression select)
                        throws XPathException
Attempt to optimize a copy operation. Return null if no optimization is possible.

Overrides:
optimizeCopy in class Optimizer
Parameters:
select - the expression that selects the items to be copied
Returns:
null if no optimization is possible, or an expression that does an optimized copy of these items otherwise
Throws:
XPathException

makeClosure

public Closure makeClosure(Expression expression,
                           int ref)
Make a Closure, given the expected reference count

Overrides:
makeClosure in class Optimizer

convertPathExpressionToKey

public Expression convertPathExpressionToKey(PathExpression pathExp,
                                             StaticContext env)
                                      throws XPathException
Examine a path expression to see whether it can be replaced by a call on the key() function; if so, generate an appropriate key definition and return the call on key(). If not, return null.

Overrides:
convertPathExpressionToKey in class Optimizer
Parameters:
pathExp - The path expression to be converted.
Throws:
XPathException

convertFilterExpressionToKey

public ComputedExpression convertFilterExpressionToKey(FilterExpression f,
                                                       StaticContext env,
                                                       Expression doc)
                                                throws XPathException
Convert a filter expression to a call on the key function. Return null if not possible

Throws:
XPathException

convertToFilterExpression

public FilterExpression convertToFilterExpression(PathExpression pathExp,
                                                  TypeHierarchy th)
                                           throws StaticError
Convert a path expression such as a/b/c[predicate] into a filter expression of the form (a/b/c)[predicate]. This is possible whenever the predicate is non-positional. The conversion is useful in the case where the path expression appears inside a loop, where the predicate depends on the loop variable but a/b/c does not.

Overrides:
convertToFilterExpression in class Optimizer
Parameters:
pathExp - the path expression to be converted
Returns:
the resulting filterexpression if conversion is possible, or null if not
Throws:
StaticError

isIndexableFilter

public int isIndexableFilter(Expression filter)
Test whether a filter predicate is indexable.

Overrides:
isIndexableFilter in class Optimizer
Parameters:
filter - the predicate expression
Returns:
0 if not indexable; +1 if the predicate is in the form expression=value; -1 if it is in the form value=expression

tryIndexedFilter

public SequenceIterator tryIndexedFilter(ValueRepresentation startValue,
                                         Expression filter,
                                         int isIndexable,
                                         XPathContext context)
                                  throws XPathException
Overrides:
tryIndexedFilter in class Optimizer
Throws:
XPathException