Sophie

Sophie

distrib > Mageia > 7 > i586 > by-pkgid > b3bdfe6d859a3d6920ff2c44b38e9a6f > files > 928

saxon-manual-9.4.0.9-2.mga7.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_18) on Fri Dec 09 20:47:42 GMT 2011 -->
<TITLE>
OptimizerEE
</TITLE>

<META NAME="date" CONTENT="2011-12-09">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="OptimizerEE";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../com/saxonica/expr/ee/MultithreadedForEach.html" title="class in com.saxonica.expr.ee"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../com/saxonica/expr/ee/StaticQueryContextEE.html" title="class in com.saxonica.expr.ee"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?com/saxonica/expr/ee/OptimizerEE.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="OptimizerEE.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_net.sf.saxon.expr.parser.Optimizer">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
com.saxonica.expr.ee</FONT>
<BR>
Class OptimizerEE</H2>
<PRE>
<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">net.sf.saxon.expr.parser.Optimizer</A>
      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.saxonica.expr.ee.OptimizerEE</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://download.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>OptimizerEE</B><DT>extends <A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></DL>
</PRE>

<P>
This class performs a number of optimizations that are specific to the Saxon-EE product.
 The relevant methods override dummy methods (that generally perform no optimization) in the
 superclass, which is used by Saxon-HE.
<P>

<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.saxonica.expr.ee.OptimizerEE">Serialized Form</A></DL>
<HR>

<P>
<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_net.sf.saxon.expr.parser.Optimizer"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class net.sf.saxon.expr.parser.<A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#config">config</A>, <A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#FULL_OPTIMIZATION">FULL_OPTIMIZATION</A>, <A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#NO_OPTIMIZATION">NO_OPTIMIZATION</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#OptimizerEE(net.sf.saxon.Configuration)">OptimizerEE</A></B>(<A HREF="../../../../net/sf/saxon/Configuration.html" title="class in net.sf.saxon">Configuration</A>&nbsp;config)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create the Saxon-EE optimizer</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#compileToByteCode(net.sf.saxon.expr.Expression, java.lang.String, int)">compileToByteCode</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;expr,
                  <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;objectName,
                  int&nbsp;evaluationMethods)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generate Java byte code for an expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#convertPathExpressionToKey(net.sf.saxon.expr.SlashExpression, net.sf.saxon.expr.parser.ExpressionVisitor)">convertPathExpressionToKey</A></B>(<A HREF="../../../../net/sf/saxon/expr/SlashExpression.html" title="class in net.sf.saxon.expr">SlashExpression</A>&nbsp;pathExp,
                           <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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().</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/FilterExpression.html" title="class in net.sf.saxon.expr">FilterExpression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#convertToFilterExpression(net.sf.saxon.expr.SlashExpression, net.sf.saxon.type.TypeHierarchy)">convertToFilterExpression</A></B>(<A HREF="../../../../net/sf/saxon/expr/SlashExpression.html" title="class in net.sf.saxon.expr">SlashExpression</A>&nbsp;pathExp,
                          <A HREF="../../../../net/sf/saxon/type/TypeHierarchy.html" title="class in net.sf.saxon.type">TypeHierarchy</A>&nbsp;th)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convert a path expression such as a/b/c[predicate] into a filter expression
 of the form (a/b/c)[predicate].</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#extractGlobalVariables(net.sf.saxon.expr.Expression, net.sf.saxon.expr.parser.ExpressionVisitor, net.sf.saxon.expr.parser.PromotionOffer)">extractGlobalVariables</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;body,
                       <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor,
                       <A HREF="../../../../net/sf/saxon/expr/parser/PromotionOffer.html" title="class in net.sf.saxon.expr.parser">PromotionOffer</A>&nbsp;offer)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extract subexpressions from the body of a function that can be evaluated
 as global variables</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#generateMultithreadedInstruction(net.sf.saxon.expr.Expression)">generateMultithreadedInstruction</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;instruction)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generate a multi-threaded version of an instruction.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#isIndexableFilter(net.sf.saxon.expr.Expression)">isIndexableFilter</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;filter)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test whether a filter predicate is indexable.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#makeCastableToList(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)">makeCastableToList</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;operand,
                   <A HREF="../../../../net/sf/saxon/type/SchemaType.html" title="interface in net.sf.saxon.type">SchemaType</A>&nbsp;targetType,
                   boolean&nbsp;allowsEmpty)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make an expression castable check to a union type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#makeCastableToUnion(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)">makeCastableToUnion</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;operand,
                    <A HREF="../../../../net/sf/saxon/type/SchemaType.html" title="interface in net.sf.saxon.type">SchemaType</A>&nbsp;targetType,
                    boolean&nbsp;allowsEmpty)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make an expression castable check to a union type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#makeCastToList(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)">makeCastToList</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;operand,
               <A HREF="../../../../net/sf/saxon/type/SchemaType.html" title="interface in net.sf.saxon.type">SchemaType</A>&nbsp;targetType,
               boolean&nbsp;allowsEmpty)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make an expression that casts to a list type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#makeCastToUnion(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)">makeCastToUnion</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;operand,
                <A HREF="../../../../net/sf/saxon/type/SchemaType.html" title="interface in net.sf.saxon.type">SchemaType</A>&nbsp;targetType,
                boolean&nbsp;allowsEmpty)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make an expression that casts to a union type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#makeConditionalDocumentSorter(net.sf.saxon.expr.sort.DocumentSorter, net.sf.saxon.expr.SlashExpression)">makeConditionalDocumentSorter</A></B>(<A HREF="../../../../net/sf/saxon/expr/sort/DocumentSorter.html" title="class in net.sf.saxon.expr.sort">DocumentSorter</A>&nbsp;sorter,
                              <A HREF="../../../../net/sf/saxon/expr/SlashExpression.html" title="class in net.sf.saxon.expr">SlashExpression</A>&nbsp;path)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make a conditional document sorter.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#makeCopyOperationsExplicit(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression)">makeCopyOperationsExplicit</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;parent,
                           <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;child)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In streaming mode, make the copy operation applied to subexpressions of a complex-content
 sequence constructor into explicit copy-of operations.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/om/ValueRepresentation.html" title="interface in net.sf.saxon.om">ValueRepresentation</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#makeIndexedValue(net.sf.saxon.om.SequenceIterator)">makeIndexedValue</A></B>(<A HREF="../../../../net/sf/saxon/om/SequenceIterator.html" title="interface in net.sf.saxon.om">SequenceIterator</A>&nbsp;iter)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create an indexed value</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/trans/RuleTarget.html" title="interface in net.sf.saxon.trans">RuleTarget</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#makeInversion(net.sf.saxon.pattern.Pattern, net.sf.saxon.expr.instruct.Template, net.sf.saxon.pattern.NodeTest)">makeInversion</A></B>(<A HREF="../../../../net/sf/saxon/pattern/Pattern.html" title="class in net.sf.saxon.pattern">Pattern</A>&nbsp;pattern,
              <A HREF="../../../../net/sf/saxon/expr/instruct/Template.html" title="class in net.sf.saxon.expr.instruct">Template</A>&nbsp;template,
              <A HREF="../../../../net/sf/saxon/pattern/NodeTest.html" title="class in net.sf.saxon.pattern">NodeTest</A>&nbsp;nodeTest)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generate the inversion of the expression comprising the body of a template rules.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#makeOuterForExpression()">makeOuterForExpression</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make an OuterForExpression (Saxon-EE only)</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#makeStreamingApplyTemplates(net.sf.saxon.expr.instruct.ApplyTemplates)">makeStreamingApplyTemplates</A></B>(<A HREF="../../../../net/sf/saxon/expr/instruct/ApplyTemplates.html" title="class in net.sf.saxon.expr.instruct">ApplyTemplates</A>&nbsp;inst)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make a streaming applyTemplates instruction.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#optimizeCopy(net.sf.saxon.expr.Expression)">optimizeCopy</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;select)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Attempt to optimize a copy operation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#optimizeForExpressionForStreaming(net.sf.saxon.expr.ForExpression)">optimizeForExpressionForStreaming</A></B>(<A HREF="../../../../net/sf/saxon/expr/ForExpression.html" title="class in net.sf.saxon.expr">ForExpression</A>&nbsp;expr)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In streaming mode, optimizer a ForExpression for streaming.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/BinaryExpression.html" title="class in net.sf.saxon.expr">BinaryExpression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#optimizeGeneralComparison(net.sf.saxon.expr.GeneralComparison, boolean)">optimizeGeneralComparison</A></B>(<A HREF="../../../../net/sf/saxon/expr/GeneralComparison.html" title="class in net.sf.saxon.expr">GeneralComparison</A>&nbsp;gc,
                          boolean&nbsp;backwardsCompatible)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Simplify a GeneralComparison expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#optimizeQuantifiedExpressionForStreaming(net.sf.saxon.expr.QuantifiedExpression)">optimizeQuantifiedExpressionForStreaming</A></B>(<A HREF="../../../../net/sf/saxon/expr/QuantifiedExpression.html" title="class in net.sf.saxon.expr">QuantifiedExpression</A>&nbsp;expr)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In streaming mode, optimize a QuantifiedExpression for streaming.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#optimizeStreamingCopy(net.sf.saxon.expr.Expression)">optimizeStreamingCopy</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;select)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Given a select expression, determine whether it is a candidate for sequential processing,
 and if so, return a SequentialCopy expression that does the work.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#processSwitchCondition(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression, com.saxonica.expr.ee.OptimizerEE.SwitchCaseInfo)">processSwitchCondition</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;condition,
                       <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;action,
                       com.saxonica.expr.ee.OptimizerEE.SwitchCaseInfo&nbsp;switchCaseInfo)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#promoteExpressionsToGlobal(net.sf.saxon.expr.Expression, net.sf.saxon.expr.parser.ExpressionVisitor)">promoteExpressionsToGlobal</A></B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;body,
                           <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Identify expressions within a function or template body that can be promoted to be
 evaluated as global variables.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#tryIndexedFilter(net.sf.saxon.expr.FilterExpression, net.sf.saxon.expr.parser.ExpressionVisitor, boolean)">tryIndexedFilter</A></B>(<A HREF="../../../../net/sf/saxon/expr/FilterExpression.html" title="class in net.sf.saxon.expr">FilterExpression</A>&nbsp;f,
                 <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor,
                 boolean&nbsp;indexFirstOperand)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Try converting a filter expression to a call on the key function.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#tryInlineFunctionCall(net.sf.saxon.expr.UserFunctionCall, net.sf.saxon.expr.parser.ExpressionVisitor, net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType)">tryInlineFunctionCall</A></B>(<A HREF="../../../../net/sf/saxon/expr/UserFunctionCall.html" title="class in net.sf.saxon.expr">UserFunctionCall</A>&nbsp;functionCall,
                      <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor,
                      <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.ContextItemType.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor.ContextItemType</A>&nbsp;contextItemType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replace a function call by the body of the function, assuming all conditions for inlining
 the function are satisfied</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/saxonica/expr/ee/OptimizerEE.html#trySwitch(net.sf.saxon.expr.instruct.Choose, net.sf.saxon.expr.StaticContext)">trySwitch</A></B>(<A HREF="../../../../net/sf/saxon/expr/instruct/Choose.html" title="class in net.sf.saxon.expr.instruct">Choose</A>&nbsp;choose,
          <A HREF="../../../../net/sf/saxon/expr/StaticContext.html" title="interface in net.sf.saxon.expr">StaticContext</A>&nbsp;env)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Try to convert a Choose expression (or an XQuery 1.1 switch) into an optimized switch</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_net.sf.saxon.expr.parser.Optimizer"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class net.sf.saxon.expr.parser.<A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#getConfiguration()">getConfiguration</A>, <A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#getOptimizationLevel()">getOptimizationLevel</A>, <A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#isVariableReplaceableByDot(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Binding[])">isVariableReplaceableByDot</A>, <A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#setOptimizationLevel(int)">setOptimizationLevel</A>, <A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#trace(java.lang.String)">trace</A>, <A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#trace(java.lang.String, net.sf.saxon.expr.Expression)">trace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="OptimizerEE(net.sf.saxon.Configuration)"><!-- --></A><H3>
OptimizerEE</H3>
<PRE>
public <B>OptimizerEE</B>(<A HREF="../../../../net/sf/saxon/Configuration.html" title="class in net.sf.saxon">Configuration</A>&nbsp;config)</PRE>
<DL>
<DD>Create the Saxon-EE optimizer
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>config</CODE> - the Saxon-EE configuration</DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="optimizeGeneralComparison(net.sf.saxon.expr.GeneralComparison, boolean)"><!-- --></A><H3>
optimizeGeneralComparison</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/BinaryExpression.html" title="class in net.sf.saxon.expr">BinaryExpression</A> <B>optimizeGeneralComparison</B>(<A HREF="../../../../net/sf/saxon/expr/GeneralComparison.html" title="class in net.sf.saxon.expr">GeneralComparison</A>&nbsp;gc,
                                                  boolean&nbsp;backwardsCompatible)</PRE>
<DL>
<DD>Simplify a GeneralComparison expression
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#optimizeGeneralComparison(net.sf.saxon.expr.GeneralComparison, boolean)">optimizeGeneralComparison</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>gc</CODE> - the GeneralComparison to be simplified<DD><CODE>backwardsCompatible</CODE> - true if in 1.0 compatibility mode
<DT><B>Returns:</B><DD>the simplified expression</DL>
</DD>
</DL>
<HR>

<A NAME="optimizeCopy(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
optimizeCopy</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>optimizeCopy</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;select)
                        throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Attempt to optimize a copy operation. Return null if no optimization is possible.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#optimizeCopy(net.sf.saxon.expr.Expression)">optimizeCopy</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>select</CODE> - the expression that selects the items to be copied
<DT><B>Returns:</B><DD>null if no optimization is possible, or an expression that does an optimized
         copy of these items otherwise
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="optimizeStreamingCopy(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
optimizeStreamingCopy</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>optimizeStreamingCopy</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;select)
                                 throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Given a select expression, determine whether it is a candidate for sequential processing,
 and if so, return a SequentialCopy expression that does the work.
 <p/>
 To qualify, the select expression must be a path expression that starts with a call on doc() or
 document(), and whose subsequent steps are all axis steps using the child, descendant, and attribute
 axes only; there must be no predicates; it must match either elements only, or attributes only
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>select</CODE> - the select expression to be examined
<DT><B>Returns:</B><DD>either null if no optimization is possible, or a StreamingCopy expression
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if called for an expression that does not qualify for this optimization</DL>
</DD>
</DL>
<HR>

<A NAME="makeCopyOperationsExplicit(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression)"><!-- --></A><H3>
makeCopyOperationsExplicit</H3>
<PRE>
public void <B>makeCopyOperationsExplicit</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;parent,
                                       <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;child)
                                throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>In streaming mode, make the copy operation applied to subexpressions of a complex-content
 sequence constructor into explicit copy-of operations. This makes constructs such as
 <![CDATA[<e><xsl:sequence select="y"/></e>]]> streamable, by using the same run-time
 logic as if xsl:copy-of had been used.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#makeCopyOperationsExplicit(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression)">makeCopyOperationsExplicit</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>parent</CODE> - The parent expression of the expression that is to be wrapped in an implicit copy-of.<DD><CODE>child</CODE> - The expression that is to be wrapped in an implicit copy-of, if it is suitable.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="makeCastToUnion(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)"><!-- --></A><H3>
makeCastToUnion</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>makeCastToUnion</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;operand,
                                  <A HREF="../../../../net/sf/saxon/type/SchemaType.html" title="interface in net.sf.saxon.type">SchemaType</A>&nbsp;targetType,
                                  boolean&nbsp;allowsEmpty)</PRE>
<DL>
<DD>Make an expression that casts to a union type. Not available in Saxon-HE
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#makeCastToUnion(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)">makeCastToUnion</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="makeCastToList(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)"><!-- --></A><H3>
makeCastToList</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>makeCastToList</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;operand,
                                 <A HREF="../../../../net/sf/saxon/type/SchemaType.html" title="interface in net.sf.saxon.type">SchemaType</A>&nbsp;targetType,
                                 boolean&nbsp;allowsEmpty)</PRE>
<DL>
<DD>Make an expression that casts to a list type. Not available in Saxon-HE
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#makeCastToList(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)">makeCastToList</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="makeCastableToUnion(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)"><!-- --></A><H3>
makeCastableToUnion</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>makeCastableToUnion</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;operand,
                                      <A HREF="../../../../net/sf/saxon/type/SchemaType.html" title="interface in net.sf.saxon.type">SchemaType</A>&nbsp;targetType,
                                      boolean&nbsp;allowsEmpty)</PRE>
<DL>
<DD>Make an expression castable check to a union type. Not available in Saxon-HE
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#makeCastableToUnion(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)">makeCastableToUnion</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="makeCastableToList(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)"><!-- --></A><H3>
makeCastableToList</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>makeCastableToList</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;operand,
                                     <A HREF="../../../../net/sf/saxon/type/SchemaType.html" title="interface in net.sf.saxon.type">SchemaType</A>&nbsp;targetType,
                                     boolean&nbsp;allowsEmpty)</PRE>
<DL>
<DD>Make an expression castable check to a union type. Not available in Saxon-HE
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#makeCastableToList(net.sf.saxon.expr.Expression, net.sf.saxon.type.SchemaType, boolean)">makeCastableToList</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="optimizeForExpressionForStreaming(net.sf.saxon.expr.ForExpression)"><!-- --></A><H3>
optimizeForExpressionForStreaming</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>optimizeForExpressionForStreaming</B>(<A HREF="../../../../net/sf/saxon/expr/ForExpression.html" title="class in net.sf.saxon.expr">ForExpression</A>&nbsp;expr)
                                             throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>In streaming mode, optimizer a ForExpression for streaming. This is possible if the "in" part
 of the for expression does a downward selection of the streamed input, while the "return" part
 does not access the streamed input at all (specifically, if it has no dependencies on the context node).
 The expression is converted to streamable form by rewriting "for $t in S return f($t)" as
 "for-each S return f(.)". This depends on the generated for-each expression being streamable,
 which will not always be the case, for example if the return expression makes two downward selections
 from the range variable, or a non-downward selection.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#optimizeForExpressionForStreaming(net.sf.saxon.expr.ForExpression)">optimizeForExpressionForStreaming</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>expr</CODE> - the expression to be optimized
<DT><B>Returns:</B><DD>the optimized expression, or the original expression if no optimization was possible.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="makeOuterForExpression()"><!-- --></A><H3>
makeOuterForExpression</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>makeOuterForExpression</B>()</PRE>
<DL>
<DD>Make an OuterForExpression (Saxon-EE only)
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#makeOuterForExpression()">makeOuterForExpression</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the new expression</DL>
</DD>
</DL>
<HR>

<A NAME="optimizeQuantifiedExpressionForStreaming(net.sf.saxon.expr.QuantifiedExpression)"><!-- --></A><H3>
optimizeQuantifiedExpressionForStreaming</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>optimizeQuantifiedExpressionForStreaming</B>(<A HREF="../../../../net/sf/saxon/expr/QuantifiedExpression.html" title="class in net.sf.saxon.expr">QuantifiedExpression</A>&nbsp;expr)
                                                    throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>In streaming mode, optimize a QuantifiedExpression for streaming. This is possible if the "select" part
 of the quantified expression does a downward selection of the streamed input, while the "satisfies" part
 does not access the streamed input at all (specifically, if it has no dependencies on the context node).
 The expression is converted to streamable form by rewriting "some $t in S satisfies f($t)" as
 "exists(for-each S return boolean(f(.)[.])", and likewise mutatis mutandis for "every $t....". This
 depends on the generated for-each expression being streamable, which will not always be the case, for example
 if the satisfies expression makes two downward selections from the range variable, or a non-downward selection.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#optimizeQuantifiedExpressionForStreaming(net.sf.saxon.expr.QuantifiedExpression)">optimizeQuantifiedExpressionForStreaming</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>expr</CODE> - the expression to be optimized
<DT><B>Returns:</B><DD>the optimized expression, or the original expression if no optimization was possible.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="convertPathExpressionToKey(net.sf.saxon.expr.SlashExpression, net.sf.saxon.expr.parser.ExpressionVisitor)"><!-- --></A><H3>
convertPathExpressionToKey</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>convertPathExpressionToKey</B>(<A HREF="../../../../net/sf/saxon/expr/SlashExpression.html" title="class in net.sf.saxon.expr">SlashExpression</A>&nbsp;pathExp,
                                             <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor)
                                      throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#convertPathExpressionToKey(net.sf.saxon.expr.SlashExpression, net.sf.saxon.expr.parser.ExpressionVisitor)">convertPathExpressionToKey</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pathExp</CODE> - The path expression to be converted.<DD><CODE>visitor</CODE> - The expression visitor
<DT><B>Returns:</B><DD>the optimized expression, or null if no optimization is possible
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="tryIndexedFilter(net.sf.saxon.expr.FilterExpression, net.sf.saxon.expr.parser.ExpressionVisitor, boolean)"><!-- --></A><H3>
tryIndexedFilter</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>tryIndexedFilter</B>(<A HREF="../../../../net/sf/saxon/expr/FilterExpression.html" title="class in net.sf.saxon.expr">FilterExpression</A>&nbsp;f,
                                   <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor,
                                   boolean&nbsp;indexFirstOperand)</PRE>
<DL>
<DD>Try converting a filter expression to a call on the key function. Return the supplied
 expression unchanged if not possible
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#tryIndexedFilter(net.sf.saxon.expr.FilterExpression, net.sf.saxon.expr.parser.ExpressionVisitor, boolean)">tryIndexedFilter</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>f</CODE> - the filter expression to be converted<DD><CODE>visitor</CODE> - the expression visitor, which must be currently visiting the filter expression f<DD><CODE>indexFirstOperand</CODE> - true if the first operand of the filter comparison is to be indexed;
                          false if it is the second operand
<DT><B>Returns:</B><DD>the optimized expression, or the unchanged expression f if no optimization is possible</DL>
</DD>
</DL>
<HR>

<A NAME="convertToFilterExpression(net.sf.saxon.expr.SlashExpression, net.sf.saxon.type.TypeHierarchy)"><!-- --></A><H3>
convertToFilterExpression</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/FilterExpression.html" title="class in net.sf.saxon.expr">FilterExpression</A> <B>convertToFilterExpression</B>(<A HREF="../../../../net/sf/saxon/expr/SlashExpression.html" title="class in net.sf.saxon.expr">SlashExpression</A>&nbsp;pathExp,
                                                  <A HREF="../../../../net/sf/saxon/type/TypeHierarchy.html" title="class in net.sf.saxon.type">TypeHierarchy</A>&nbsp;th)
                                           throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#convertToFilterExpression(net.sf.saxon.expr.SlashExpression, net.sf.saxon.type.TypeHierarchy)">convertToFilterExpression</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pathExp</CODE> - the path expression to be converted<DD><CODE>th</CODE> - the type hierarchy cache
<DT><B>Returns:</B><DD>the resulting filterexpression if conversion is possible, or null if not
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="isIndexableFilter(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
isIndexableFilter</H3>
<PRE>
public int <B>isIndexableFilter</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;filter)</PRE>
<DL>
<DD>Test whether a filter predicate is indexable.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#isIndexableFilter(net.sf.saxon.expr.Expression)">isIndexableFilter</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the predicate expression
<DT><B>Returns:</B><DD>0 if not indexable; +1 if the predicate is in the form expression=value; -1 if it is in
         the form value=expression</DL>
</DD>
</DL>
<HR>

<A NAME="makeIndexedValue(net.sf.saxon.om.SequenceIterator)"><!-- --></A><H3>
makeIndexedValue</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/om/ValueRepresentation.html" title="interface in net.sf.saxon.om">ValueRepresentation</A> <B>makeIndexedValue</B>(<A HREF="../../../../net/sf/saxon/om/SequenceIterator.html" title="interface in net.sf.saxon.om">SequenceIterator</A>&nbsp;iter)
                                     throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Create an indexed value
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#makeIndexedValue(net.sf.saxon.om.SequenceIterator)">makeIndexedValue</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>iter</CODE> - the iterator that delivers the sequence of values to be indexed
<DT><B>Returns:</B><DD>the indexed value
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="makeConditionalDocumentSorter(net.sf.saxon.expr.sort.DocumentSorter, net.sf.saxon.expr.SlashExpression)"><!-- --></A><H3>
makeConditionalDocumentSorter</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>makeConditionalDocumentSorter</B>(<A HREF="../../../../net/sf/saxon/expr/sort/DocumentSorter.html" title="class in net.sf.saxon.expr.sort">DocumentSorter</A>&nbsp;sorter,
                                                <A HREF="../../../../net/sf/saxon/expr/SlashExpression.html" title="class in net.sf.saxon.expr">SlashExpression</A>&nbsp;path)</PRE>
<DL>
<DD>Make a conditional document sorter. This optimization is attempted
 when a DocumentSorter is wrapped around a path expression
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#makeConditionalDocumentSorter(net.sf.saxon.expr.sort.DocumentSorter, net.sf.saxon.expr.SlashExpression)">makeConditionalDocumentSorter</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sorter</CODE> - an expression that sorts and deduplicates its operand<DD><CODE>path</CODE> - the slash expression that is the operand of the sorter
<DT><B>Returns:</B><DD>either the original sorter, if no optimization is possible; or a ConditionalSorter
         which first tests a condition, and performs the sort if the condition is true, or returns
         the unsorted operand if not. In practice the condition is always a test whether the first
         item in the path expression contains more than one item</DL>
</DD>
</DL>
<HR>

<A NAME="tryInlineFunctionCall(net.sf.saxon.expr.UserFunctionCall, net.sf.saxon.expr.parser.ExpressionVisitor, net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType)"><!-- --></A><H3>
tryInlineFunctionCall</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>tryInlineFunctionCall</B>(<A HREF="../../../../net/sf/saxon/expr/UserFunctionCall.html" title="class in net.sf.saxon.expr">UserFunctionCall</A>&nbsp;functionCall,
                                        <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor,
                                        <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.ContextItemType.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor.ContextItemType</A>&nbsp;contextItemType)</PRE>
<DL>
<DD>Replace a function call by the body of the function, assuming all conditions for inlining
 the function are satisfied
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#tryInlineFunctionCall(net.sf.saxon.expr.UserFunctionCall, net.sf.saxon.expr.parser.ExpressionVisitor, net.sf.saxon.expr.parser.ExpressionVisitor.ContextItemType)">tryInlineFunctionCall</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>functionCall</CODE> - the functionCall expression<DD><CODE>visitor</CODE> - the expression visitor<DD><CODE>contextItemType</CODE> - the static type of the context item
<DT><B>Returns:</B><DD>either the original expression unchanged, or an expression that consists of the inlined
         function body, with all function parameters bound as required.</DL>
</DD>
</DL>
<HR>

<A NAME="promoteExpressionsToGlobal(net.sf.saxon.expr.Expression, net.sf.saxon.expr.parser.ExpressionVisitor)"><!-- --></A><H3>
promoteExpressionsToGlobal</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>promoteExpressionsToGlobal</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;body,
                                             <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor)
                                      throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Identify expressions within a function or template body that can be promoted to be
 evaluated as global variables.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#promoteExpressionsToGlobal(net.sf.saxon.expr.Expression, net.sf.saxon.expr.parser.ExpressionVisitor)">promoteExpressionsToGlobal</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>body</CODE> - the body of the template or function<DD><CODE>visitor</CODE> - the expression visitor
<DT><B>Returns:</B><DD>the expression after subexpressions have been promoted to global variables
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="trySwitch(net.sf.saxon.expr.instruct.Choose, net.sf.saxon.expr.StaticContext)"><!-- --></A><H3>
trySwitch</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>trySwitch</B>(<A HREF="../../../../net/sf/saxon/expr/instruct/Choose.html" title="class in net.sf.saxon.expr.instruct">Choose</A>&nbsp;choose,
                            <A HREF="../../../../net/sf/saxon/expr/StaticContext.html" title="interface in net.sf.saxon.expr">StaticContext</A>&nbsp;env)</PRE>
<DL>
<DD>Try to convert a Choose expression (or an XQuery 1.1 switch) into an optimized switch
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#trySwitch(net.sf.saxon.expr.instruct.Choose, net.sf.saxon.expr.StaticContext)">trySwitch</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>choose</CODE> - the Choose expression<DD><CODE>env</CODE> - the static context
<DT><B>Returns:</B><DD>the result of optimizing this (the original expression if no optimization was possible)</DL>
</DD>
</DL>
<HR>

<A NAME="processSwitchCondition(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression, com.saxonica.expr.ee.OptimizerEE.SwitchCaseInfo)"><!-- --></A><H3>
processSwitchCondition</H3>
<PRE>
public boolean <B>processSwitchCondition</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;condition,
                                      <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;action,
                                      com.saxonica.expr.ee.OptimizerEE.SwitchCaseInfo&nbsp;switchCaseInfo)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="extractGlobalVariables(net.sf.saxon.expr.Expression, net.sf.saxon.expr.parser.ExpressionVisitor, net.sf.saxon.expr.parser.PromotionOffer)"><!-- --></A><H3>
extractGlobalVariables</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>extractGlobalVariables</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;body,
                                         <A HREF="../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser">ExpressionVisitor</A>&nbsp;visitor,
                                         <A HREF="../../../../net/sf/saxon/expr/parser/PromotionOffer.html" title="class in net.sf.saxon.expr.parser">PromotionOffer</A>&nbsp;offer)
                                  throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Extract subexpressions from the body of a function that can be evaluated
 as global variables
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#extractGlobalVariables(net.sf.saxon.expr.Expression, net.sf.saxon.expr.parser.ExpressionVisitor, net.sf.saxon.expr.parser.PromotionOffer)">extractGlobalVariables</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>body</CODE> - an expression with no dependencies other than on global variables
              (already checked by the caller)<DD><CODE>offer</CODE> - The PromotionOffer. Will be marked to indicate whether any action was taken
<DT><B>Returns:</B><DD>a reference to the new global variable if a variable has been created, or null if not
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="makeStreamingApplyTemplates(net.sf.saxon.expr.instruct.ApplyTemplates)"><!-- --></A><H3>
makeStreamingApplyTemplates</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>makeStreamingApplyTemplates</B>(<A HREF="../../../../net/sf/saxon/expr/instruct/ApplyTemplates.html" title="class in net.sf.saxon.expr.instruct">ApplyTemplates</A>&nbsp;inst)
                                       throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Make a streaming applyTemplates instruction. Supported in Saxon-EE only
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#makeStreamingApplyTemplates(net.sf.saxon.expr.instruct.ApplyTemplates)">makeStreamingApplyTemplates</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>inst</CODE> - the unoptimized applyTemplates instruction
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="makeInversion(net.sf.saxon.pattern.Pattern, net.sf.saxon.expr.instruct.Template, net.sf.saxon.pattern.NodeTest)"><!-- --></A><H3>
makeInversion</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/trans/RuleTarget.html" title="interface in net.sf.saxon.trans">RuleTarget</A> <B>makeInversion</B>(<A HREF="../../../../net/sf/saxon/pattern/Pattern.html" title="class in net.sf.saxon.pattern">Pattern</A>&nbsp;pattern,
                                <A HREF="../../../../net/sf/saxon/expr/instruct/Template.html" title="class in net.sf.saxon.expr.instruct">Template</A>&nbsp;template,
                                <A HREF="../../../../net/sf/saxon/pattern/NodeTest.html" title="class in net.sf.saxon.pattern">NodeTest</A>&nbsp;nodeTest)
                         throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Generate the inversion of the expression comprising the body of a template rules.
 Supported in Saxon-EE only
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#makeInversion(net.sf.saxon.pattern.Pattern, net.sf.saxon.expr.instruct.Template, net.sf.saxon.pattern.NodeTest)">makeInversion</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pattern</CODE> - the match pattern of this template rule<DD><CODE>template</CODE> - the template to be inverted<DD><CODE>nodeTest</CODE> - the static item type of the context node of the template
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="generateMultithreadedInstruction(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
generateMultithreadedInstruction</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>generateMultithreadedInstruction</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;instruction)</PRE>
<DL>
<DD>Generate a multi-threaded version of an instruction.
 Supported in Saxon-EE only; ignored with no action in Saxon-HE and Saxon-PE
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#generateMultithreadedInstruction(net.sf.saxon.expr.Expression)">generateMultithreadedInstruction</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>instruction</CODE> - the instruction to be multi-threaded
<DT><B>Returns:</B><DD>the multi-threaded version of the instruction</DL>
</DD>
</DL>
<HR>

<A NAME="compileToByteCode(net.sf.saxon.expr.Expression, java.lang.String, int)"><!-- --></A><H3>
compileToByteCode</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>compileToByteCode</B>(<A HREF="../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;expr,
                                    <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;objectName,
                                    int&nbsp;evaluationMethods)</PRE>
<DL>
<DD>Generate Java byte code for an expression
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html#compileToByteCode(net.sf.saxon.expr.Expression, java.lang.String, int)">compileToByteCode</A></CODE> in class <CODE><A HREF="../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>expr</CODE> - the expression to be compiled<DD><CODE>objectName</CODE> - the name of the object to be compiled, used as a hint for the Java class/method name<DD><CODE>evaluationMethods</CODE> - The evaluation modes for which code is generated. Currently a subset of
                          <A HREF="../../../../net/sf/saxon/expr/Expression.html#PROCESS_METHOD"><CODE>Expression.PROCESS_METHOD</CODE></A>, <A HREF="../../../../net/sf/saxon/expr/Expression.html#ITERATE_METHOD"><CODE>Expression.ITERATE_METHOD</CODE></A>. If no code is generated for
                          a given evaluation method, the fallback implementation from the superclass is used.
<DT><B>Returns:</B><DD>the compiled expression if possible, or null if compilation is not possible</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../com/saxonica/expr/ee/MultithreadedForEach.html" title="class in com.saxonica.expr.ee"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../com/saxonica/expr/ee/StaticQueryContextEE.html" title="class in com.saxonica.expr.ee"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?com/saxonica/expr/ee/OptimizerEE.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="OptimizerEE.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_net.sf.saxon.expr.parser.Optimizer">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.
</BODY>
</HTML>