Sophie

Sophie

distrib > Mageia > 7 > armv7hl > by-pkgid > b3bdfe6d859a3d6920ff2c44b38e9a6f > files > 1964

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:48:13 GMT 2011 -->
<TITLE>
ExpressionTool
</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="ExpressionTool";
    }
}
</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="../../../../../net/sf/saxon/expr/parser/ExpressionParser.TemporaryContainer.html" title="class in net.sf.saxon.expr.parser"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?net/sf/saxon/expr/parser/ExpressionTool.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ExpressionTool.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="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&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">
net.sf.saxon.expr.parser</FONT>
<BR>
Class ExpressionTool</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 "><B>net.sf.saxon.expr.parser.ExpressionTool</B>
</PRE>
<HR>
<DL>
<DT><PRE>public class <B>ExpressionTool</B><DT>extends <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></DL>
</PRE>

<P>
This class, ExpressionTool, contains a number of useful static methods
 for manipulating expressions. Most importantly, it provides the factory
 method make() for constructing a new expression
<P>

<P>
<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>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#CALL_EVALUATE_ITEM">CALL_EVALUATE_ITEM</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#EVALUATE_AND_MATERIALIZE_VARIABLE">EVALUATE_AND_MATERIALIZE_VARIABLE</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#EVALUATE_SUPPLIED_PARAMETER">EVALUATE_SUPPLIED_PARAMETER</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#EVALUATE_VARIABLE">EVALUATE_VARIABLE</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#ITERATE_AND_MATERIALIZE">ITERATE_AND_MATERIALIZE</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#LAZY_TAIL_EXPRESSION">LAZY_TAIL_EXPRESSION</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#MAKE_CLOSURE">MAKE_CLOSURE</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#MAKE_INDEXED_VARIABLE">MAKE_INDEXED_VARIABLE</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#MAKE_MEMO_CLOSURE">MAKE_MEMO_CLOSURE</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#MAKE_SINGLETON_CLOSURE">MAKE_SINGLETON_CLOSURE</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#NO_EVALUATION_NEEDED">NO_EVALUATION_NEEDED</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#PROCESS">PROCESS</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#RETURN_EMPTY_SEQUENCE">RETURN_EMPTY_SEQUENCE</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#SHARED_APPEND_EXPRESSION">SHARED_APPEND_EXPRESSION</A></B></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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#UNDECIDED">UNDECIDED</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#allocateSlots(net.sf.saxon.expr.Expression, int, net.sf.saxon.expr.instruct.SlotManager)">allocateSlots</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
              int&nbsp;nextFree,
              <A HREF="../../../../../net/sf/saxon/expr/instruct/SlotManager.html" title="class in net.sf.saxon.expr.instruct">SlotManager</A>&nbsp;frame)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allocate slot numbers to range variables</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#callsFunction(net.sf.saxon.expr.Expression, net.sf.saxon.om.StructuredQName)">callsFunction</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
              <A HREF="../../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;qName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine whether an expression contains a call on the function with a given fingerprint</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#containsLocalParam(net.sf.saxon.expr.Expression)">containsLocalParam</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine whether an expression contains a LocalParamSetter subexpression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#copyLocationInfo(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression)">copyLocationInfo</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;from,
                 <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;to)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copy location information (the line number and reference to the container) from one expression
 to another</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#dependsOnFocus(net.sf.saxon.expr.Expression)">dependsOnFocus</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ask whether an expression has a dependency on the focus</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#dependsOnVariable(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Binding[])">dependsOnVariable</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e,
                  <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>[]&nbsp;bindingList)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine whether an expression depends on any one of a set of variables</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#eagerEvaluate(net.sf.saxon.expr.Expression, net.sf.saxon.expr.XPathContext)">eagerEvaluate</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
              <A HREF="../../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Evaluate an expression now; lazy evaluation is not permitted in this case</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#eagerEvaluationMode(net.sf.saxon.expr.Expression)">eagerEvaluationMode</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine the method of evaluation to be used when lazy evaluation of an expression is
 preferred.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#ebvError(java.lang.String)">ebvError</A></B>(<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;reason)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Report an error in computing the effective boolean value of an expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#effectiveBooleanValue(net.sf.saxon.om.Item)">effectiveBooleanValue</A></B>(<A HREF="../../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A>&nbsp;item)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine the effective boolean value of a single item</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#effectiveBooleanValue(net.sf.saxon.om.SequenceIterator)">effectiveBooleanValue</A></B>(<A HREF="../../../../../net/sf/saxon/om/SequenceIterator.html" title="interface in net.sf.saxon.om">SequenceIterator</A>&lt;? extends <A HREF="../../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A>&gt;&nbsp;iterator)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine the effective boolean value of a sequence, given an iterator over the sequence</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../../net/sf/saxon/om/ValueRepresentation.html" title="interface in net.sf.saxon.om">ValueRepresentation</A>&lt;? extends <A HREF="../../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#evaluate(net.sf.saxon.expr.Expression, int, net.sf.saxon.expr.XPathContext, int)">evaluate</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
         int&nbsp;evaluationMode,
         <A HREF="../../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context,
         int&nbsp;ref)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do lazy evaluation of an expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#expressionSize(net.sf.saxon.expr.Expression)">expressionSize</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the size of an expression tree (the number of subexpressions it contains)</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#gatherAllSubExpressions(net.sf.saxon.expr.Expression, java.util.HashSet)">gatherAllSubExpressions</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                        <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/HashSet.html?is-external=true" title="class or interface in java.util">HashSet</A>&nbsp;set)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gather the set of all the subexpressions of an expression (the transitive closure)</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#gatherCalledFunctionNames(net.sf.saxon.expr.Expression, java.util.List)">gatherCalledFunctionNames</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e,
                          <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&nbsp;list)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gather a list of the names of the user-defined functions which a given expression calls directly</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#gatherCalledFunctions(net.sf.saxon.expr.Expression, java.util.List)">gatherCalledFunctions</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e,
                      <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../../net/sf/saxon/expr/instruct/UserFunction.html" title="class in net.sf.saxon.expr.instruct">UserFunction</A>&gt;&nbsp;list)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gather a list of all the user-defined functions which a given expression calls directly</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#gatherReferencedVariables(net.sf.saxon.expr.Expression, java.util.List)">gatherReferencedVariables</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e,
                          <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&gt;&nbsp;list)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gather a list of all the variable bindings on which a given expression depends</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#gatherVariableReferences(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Binding, java.util.List)">gatherVariableReferences</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                         <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&nbsp;binding,
                         <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../../net/sf/saxon/expr/VariableReference.html" title="class in net.sf.saxon.expr">VariableReference</A>&gt;&nbsp;list)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a list of all references to a particular variable within a subtree</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#getBaseURI(net.sf.saxon.expr.StaticContext, javax.xml.transform.SourceLocator, boolean)">getBaseURI</A></B>(<A HREF="../../../../../net/sf/saxon/expr/StaticContext.html" title="interface in net.sf.saxon.expr">StaticContext</A>&nbsp;env,
           <A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true" title="class or interface in javax.xml.transform">SourceLocator</A>&nbsp;locator,
           boolean&nbsp;fail)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine the base URI of an expression, so that it can be saved on the expression tree for use
 when the expression is evaluated</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<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></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#getCurrentDirectory()">getCurrentDirectory</A></B>()</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>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#getReferenceCount(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Binding, boolean)">getReferenceCount</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                  <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&nbsp;binding,
                  boolean&nbsp;inLoop)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine how often a variable is referenced.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<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></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#indent(int)">indent</A></B>(int&nbsp;level)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct indent string, for diagnostic output</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#isAllowedInUpdatingContext(net.sf.saxon.expr.Expression)">isAllowedInUpdatingContext</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine whether the expression is either an updating expression, or an expression that is permitted
 in a context where updating expressions are allowed</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../../net/sf/saxon/om/ValueRepresentation.html" title="interface in net.sf.saxon.om">ValueRepresentation</A>&lt;? extends <A HREF="../../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#lazyEvaluate(net.sf.saxon.expr.Expression, net.sf.saxon.expr.XPathContext, int)">lazyEvaluate</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
             <A HREF="../../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context,
             int&nbsp;ref)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do lazy evaluation of an expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#lazyEvaluationMode(net.sf.saxon.expr.Expression)">lazyEvaluationMode</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine the method of evaluation to be used when lazy evaluation of an expression is
 preferred.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#make(java.lang.String, net.sf.saxon.expr.StaticContext, net.sf.saxon.expr.Container, int, int, int, net.sf.saxon.expr.parser.CodeInjector)">make</A></B>(<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;expression,
     <A HREF="../../../../../net/sf/saxon/expr/StaticContext.html" title="interface in net.sf.saxon.expr">StaticContext</A>&nbsp;env,
     <A HREF="../../../../../net/sf/saxon/expr/Container.html" title="interface in net.sf.saxon.expr">Container</A>&nbsp;container,
     int&nbsp;start,
     int&nbsp;terminator,
     int&nbsp;lineNumber,
     <A HREF="../../../../../net/sf/saxon/expr/parser/CodeInjector.html" title="interface in net.sf.saxon.expr.parser">CodeInjector</A>&nbsp;codeInjector)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Parse an XPath expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#makePathExpression(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression, boolean)">makePathExpression</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;start,
                   <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;step,
                   boolean&nbsp;sortAndDeduplicate)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make a mapping expression.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#markTailFunctionCalls(net.sf.saxon.expr.Expression, net.sf.saxon.om.StructuredQName, int)">markTailFunctionCalls</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                      <A HREF="../../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;qName,
                      int&nbsp;arity)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scan an expression to find and mark any recursive tail function calls</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://download.oracle.com/javase/6/docs/api/java/util/Stack.html?is-external=true" title="class or interface in java.util">Stack</A>&lt;<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#pathToContainedExpression(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression, java.util.Stack)">pathToContainedExpression</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;ancestor,
                          <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;child,
                          <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/Stack.html?is-external=true" title="class or interface in java.util">Stack</A>&lt;<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&gt;&nbsp;expressionStack)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check if child expression is a sub-expression of a expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#rebindVariableReferences(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Binding, net.sf.saxon.expr.Binding)">rebindVariableReferences</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                         <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&nbsp;oldBinding,
                         <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&nbsp;newBinding)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rebind all variable references to a binding</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#refersToVariableOrFunction(net.sf.saxon.expr.Expression)">refersToVariableOrFunction</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine whether the expression contains any variable references or calls to user-written functions</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#replaceNthSubexpression(net.sf.saxon.expr.Expression, int, net.sf.saxon.expr.Expression)">replaceNthSubexpression</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;target,
                        int&nbsp;n,
                        <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;replacement)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replace the Nth subexpression of an expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#resetPropertiesWithinSubtree(net.sf.saxon.expr.Expression)">resetPropertiesWithinSubtree</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reset cached static properties within a subtree, meaning that they have to be
 recalulated next time they are required</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#resolveCallsToCurrentFunction(net.sf.saxon.expr.Expression, net.sf.saxon.Configuration)">resolveCallsToCurrentFunction</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                              <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;Resolve calls to the XSLT current() function within an expression</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#selectsOutwards(net.sf.saxon.expr.Expression)">selectsOutwards</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether an expression performs navigation downwards or sideways</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#selectsSideways(net.sf.saxon.expr.Expression)">selectsSideways</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether an expression performs navigation downwards or sideways</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#tryToFactorOutDot(net.sf.saxon.expr.Expression, net.sf.saxon.type.ItemType)">tryToFactorOutDot</A></B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                  <A HREF="../../../../../net/sf/saxon/type/ItemType.html" title="interface in net.sf.saxon.type">ItemType</A>&nbsp;contextItemType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Try to factor out dependencies on the context item, by rewriting an expression f(.) as
 let $dot := .</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#unsorted(net.sf.saxon.expr.parser.Optimizer, net.sf.saxon.expr.Expression, boolean)">unsorted</A></B>(<A HREF="../../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A>&nbsp;opt,
         <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
         boolean&nbsp;retainAllNodes)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove unwanted sorting from an expression, at compile time</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&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="../../../../../net/sf/saxon/expr/parser/ExpressionTool.html#unsortedIfHomogeneous(net.sf.saxon.expr.parser.Optimizer, net.sf.saxon.expr.Expression)">unsortedIfHomogeneous</A></B>(<A HREF="../../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A>&nbsp;opt,
                      <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove unwanted sorting from an expression, at compile time, if and only if it is known
 that the result of the expression will be homogeneous (all nodes, or all atomic values).</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>

<!-- ============ FIELD DETAIL =========== -->

<A NAME="field_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>Field Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="UNDECIDED"><!-- --></A><H3>
UNDECIDED</H3>
<PRE>
public static final int <B>UNDECIDED</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.UNDECIDED">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="NO_EVALUATION_NEEDED"><!-- --></A><H3>
NO_EVALUATION_NEEDED</H3>
<PRE>
public static final int <B>NO_EVALUATION_NEEDED</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.NO_EVALUATION_NEEDED">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="EVALUATE_VARIABLE"><!-- --></A><H3>
EVALUATE_VARIABLE</H3>
<PRE>
public static final int <B>EVALUATE_VARIABLE</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.EVALUATE_VARIABLE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="MAKE_CLOSURE"><!-- --></A><H3>
MAKE_CLOSURE</H3>
<PRE>
public static final int <B>MAKE_CLOSURE</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.MAKE_CLOSURE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="MAKE_MEMO_CLOSURE"><!-- --></A><H3>
MAKE_MEMO_CLOSURE</H3>
<PRE>
public static final int <B>MAKE_MEMO_CLOSURE</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.MAKE_MEMO_CLOSURE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="RETURN_EMPTY_SEQUENCE"><!-- --></A><H3>
RETURN_EMPTY_SEQUENCE</H3>
<PRE>
public static final int <B>RETURN_EMPTY_SEQUENCE</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.RETURN_EMPTY_SEQUENCE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="EVALUATE_AND_MATERIALIZE_VARIABLE"><!-- --></A><H3>
EVALUATE_AND_MATERIALIZE_VARIABLE</H3>
<PRE>
public static final int <B>EVALUATE_AND_MATERIALIZE_VARIABLE</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.EVALUATE_AND_MATERIALIZE_VARIABLE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="CALL_EVALUATE_ITEM"><!-- --></A><H3>
CALL_EVALUATE_ITEM</H3>
<PRE>
public static final int <B>CALL_EVALUATE_ITEM</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.CALL_EVALUATE_ITEM">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="ITERATE_AND_MATERIALIZE"><!-- --></A><H3>
ITERATE_AND_MATERIALIZE</H3>
<PRE>
public static final int <B>ITERATE_AND_MATERIALIZE</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.ITERATE_AND_MATERIALIZE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="PROCESS"><!-- --></A><H3>
PROCESS</H3>
<PRE>
public static final int <B>PROCESS</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.PROCESS">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="LAZY_TAIL_EXPRESSION"><!-- --></A><H3>
LAZY_TAIL_EXPRESSION</H3>
<PRE>
public static final int <B>LAZY_TAIL_EXPRESSION</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.LAZY_TAIL_EXPRESSION">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="SHARED_APPEND_EXPRESSION"><!-- --></A><H3>
SHARED_APPEND_EXPRESSION</H3>
<PRE>
public static final int <B>SHARED_APPEND_EXPRESSION</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.SHARED_APPEND_EXPRESSION">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="MAKE_INDEXED_VARIABLE"><!-- --></A><H3>
MAKE_INDEXED_VARIABLE</H3>
<PRE>
public static final int <B>MAKE_INDEXED_VARIABLE</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.MAKE_INDEXED_VARIABLE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="MAKE_SINGLETON_CLOSURE"><!-- --></A><H3>
MAKE_SINGLETON_CLOSURE</H3>
<PRE>
public static final int <B>MAKE_SINGLETON_CLOSURE</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.MAKE_SINGLETON_CLOSURE">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="EVALUATE_SUPPLIED_PARAMETER"><!-- --></A><H3>
EVALUATE_SUPPLIED_PARAMETER</H3>
<PRE>
public static final int <B>EVALUATE_SUPPLIED_PARAMETER</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#net.sf.saxon.expr.parser.ExpressionTool.EVALUATE_SUPPLIED_PARAMETER">Constant Field Values</A></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="make(java.lang.String, net.sf.saxon.expr.StaticContext, net.sf.saxon.expr.Container, int, int, int, net.sf.saxon.expr.parser.CodeInjector)"><!-- --></A><H3>
make</H3>
<PRE>
public static <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>make</B>(<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;expression,
                              <A HREF="../../../../../net/sf/saxon/expr/StaticContext.html" title="interface in net.sf.saxon.expr">StaticContext</A>&nbsp;env,
                              <A HREF="../../../../../net/sf/saxon/expr/Container.html" title="interface in net.sf.saxon.expr">Container</A>&nbsp;container,
                              int&nbsp;start,
                              int&nbsp;terminator,
                              int&nbsp;lineNumber,
                              <A HREF="../../../../../net/sf/saxon/expr/parser/CodeInjector.html" title="interface in net.sf.saxon.expr.parser">CodeInjector</A>&nbsp;codeInjector)
                       throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Parse an XPath expression. This performs the basic analysis of the expression against the
 grammar, it binds variable references and function calls to variable definitions and
 function definitions, and it performs context-independent expression rewriting for
 optimization purposes.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>expression</CODE> - The expression (as a character string)<DD><CODE>env</CODE> - An object giving information about the compile-time
                           context of the expression<DD><CODE>container</CODE> - The expression's container<DD><CODE>start</CODE> - position of the first significant character in the expression<DD><CODE>terminator</CODE> - The token that marks the end of this expression; typically
                           Token.EOF, but may for example be a right curly brace<DD><CODE>lineNumber</CODE> - the line number of the start of the expression<DD><CODE>codeInjector</CODE> - true  allows injection of tracing, debugging, or performance monitoring code; null if
                           not required
<DT><B>Returns:</B><DD>an object of type 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 the expression contains a static error</DL>
</DD>
</DL>
<HR>

<A NAME="copyLocationInfo(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression)"><!-- --></A><H3>
copyLocationInfo</H3>
<PRE>
public static void <B>copyLocationInfo</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;from,
                                    <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;to)</PRE>
<DL>
<DD>Copy location information (the line number and reference to the container) from one expression
 to another
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>from</CODE> - the expression containing the location information<DD><CODE>to</CODE> - the expression to which the information is to be copied</DL>
</DD>
</DL>
<HR>

<A NAME="unsorted(net.sf.saxon.expr.parser.Optimizer, net.sf.saxon.expr.Expression, boolean)"><!-- --></A><H3>
unsorted</H3>
<PRE>
public static <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>unsorted</B>(<A HREF="../../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A>&nbsp;opt,
                                  <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                  boolean&nbsp;retainAllNodes)
                           throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Remove unwanted sorting from an expression, at compile time
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>opt</CODE> - the expression optimizer<DD><CODE>exp</CODE> - the expression to be optimized<DD><CODE>retainAllNodes</CODE> - true if there is a need to retain exactly those nodes returned by exp
                       even if there are duplicates; false if the caller doesn't mind whether duplicate nodes
                       are retained or eliminated
<DT><B>Returns:</B><DD>the expression after rewriting
<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 a static error is found while doing the rewrite</DL>
</DD>
</DL>
<HR>

<A NAME="unsortedIfHomogeneous(net.sf.saxon.expr.parser.Optimizer, net.sf.saxon.expr.Expression)"><!-- --></A><H3>
unsortedIfHomogeneous</H3>
<PRE>
public static <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>unsortedIfHomogeneous</B>(<A HREF="../../../../../net/sf/saxon/expr/parser/Optimizer.html" title="class in net.sf.saxon.expr.parser">Optimizer</A>&nbsp;opt,
                                               <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)
                                        throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Remove unwanted sorting from an expression, at compile time, if and only if it is known
 that the result of the expression will be homogeneous (all nodes, or all atomic values).
 This is done when we need the effective boolean value of a sequence: the EBV of a
 homogenous sequence does not depend on its order, but this is not true when atomic
 values and nodes are mixed: (N, AV) is true, but (AV, N) is an error.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>opt</CODE> - the expression optimizer<DD><CODE>exp</CODE> - the expression to be optimized
<DT><B>Returns:</B><DD>the expression after rewriting
<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 a static error is found while doing the rewrite</DL>
</DD>
</DL>
<HR>

<A NAME="lazyEvaluationMode(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
lazyEvaluationMode</H3>
<PRE>
public static int <B>lazyEvaluationMode</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</PRE>
<DL>
<DD>Determine the method of evaluation to be used when lazy evaluation of an expression is
 preferred. This method is called at compile time, after all optimizations have been done,
 to determine the preferred strategy for lazy evaluation, depending on the type of expression.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression to be evaluated
<DT><B>Returns:</B><DD>an integer constant identifying the evaluation mode</DL>
</DD>
</DL>
<HR>

<A NAME="eagerEvaluationMode(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
eagerEvaluationMode</H3>
<PRE>
public static int <B>eagerEvaluationMode</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</PRE>
<DL>
<DD>Determine the method of evaluation to be used when lazy evaluation of an expression is
 preferred. This method is called at compile time, after all optimizations have been done,
 to determine the preferred strategy for lazy evaluation, depending on the type of expression.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression to be evaluated
<DT><B>Returns:</B><DD>an integer constant identifying the evaluation mode</DL>
</DD>
</DL>
<HR>

<A NAME="evaluate(net.sf.saxon.expr.Expression, int, net.sf.saxon.expr.XPathContext, int)"><!-- --></A><H3>
evaluate</H3>
<PRE>
public static <A HREF="../../../../../net/sf/saxon/om/ValueRepresentation.html" title="interface in net.sf.saxon.om">ValueRepresentation</A>&lt;? extends <A HREF="../../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A>&gt; <B>evaluate</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                                           int&nbsp;evaluationMode,
                                                           <A HREF="../../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context,
                                                           int&nbsp;ref)
                                                    throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Do lazy evaluation of an expression. This will return a value, which may optionally
 be a SequenceIntent, which is a wrapper around an iterator over the value of the expression.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression to be evaluated<DD><CODE>evaluationMode</CODE> - the evaluation mode for this expression<DD><CODE>context</CODE> - the run-time evaluation context for the expression. If
                       the expression is not evaluated immediately, then parts of the
                       context on which the expression depends need to be saved as part of
                       the Closure<DD><CODE>ref</CODE> - an indication of how the value will be used. The value 1 indicates that the value
                       is only expected to be used once, so that there is no need to keep it in memory. A small value >1
                       indicates multiple references, so the value will be saved when first evaluated. The special value
                       FILTERED indicates a reference within a loop of the form $x[predicate], indicating that the value
                       should be saved in a way that permits indexing.
<DT><B>Returns:</B><DD>a value: either the actual value obtained by evaluating the
         expression, or a Closure containing all the information needed to
         evaluate it later
<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 any error occurs in evaluating the
                        expression</DL>
</DD>
</DL>
<HR>

<A NAME="lazyEvaluate(net.sf.saxon.expr.Expression, net.sf.saxon.expr.XPathContext, int)"><!-- --></A><H3>
lazyEvaluate</H3>
<PRE>
public static <A HREF="../../../../../net/sf/saxon/om/ValueRepresentation.html" title="interface in net.sf.saxon.om">ValueRepresentation</A>&lt;? extends <A HREF="../../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A>&gt; <B>lazyEvaluate</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                                               <A HREF="../../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context,
                                                               int&nbsp;ref)
                                                        throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Do lazy evaluation of an expression. This will return a value, which may optionally
 be a SequenceIntent, which is a wrapper around an iterator over the value of the expression.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression to be evaluated<DD><CODE>context</CODE> - the run-time evaluation context for the expression. If
                the expression is not evaluated immediately, then parts of the
                context on which the expression depends need to be saved as part of
                the Closure<DD><CODE>ref</CODE> - an indication of how the value will be used. The value 1 indicates that the value
                is only expected to be used once, so that there is no need to keep it in memory. A small value >1
                indicates multiple references, so the value will be saved when first evaluated. The special value
                FILTERED indicates a reference within a loop of the form $x[predicate], indicating that the value
                should be saved in a way that permits indexing.
<DT><B>Returns:</B><DD>a value: either the actual value obtained by evaluating the
         expression, or a Closure containing all the information needed to
         evaluate it later
<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 any error occurs in evaluating the
                        expression</DL>
</DD>
</DL>
<HR>

<A NAME="eagerEvaluate(net.sf.saxon.expr.Expression, net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
eagerEvaluate</H3>
<PRE>
public static <A HREF="../../../../../net/sf/saxon/om/ValueRepresentation.html" title="interface in net.sf.saxon.om">ValueRepresentation</A> <B>eagerEvaluate</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                                <A HREF="../../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
                                         throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Evaluate an expression now; lazy evaluation is not permitted in this case
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression to be evaluated<DD><CODE>context</CODE> - the run-time evaluation context
<DT><B>Returns:</B><DD>the result of evaluating the 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 any dynamic error occurs evaluating the
          expression</DL>
</DD>
</DL>
<HR>

<A NAME="markTailFunctionCalls(net.sf.saxon.expr.Expression, net.sf.saxon.om.StructuredQName, int)"><!-- --></A><H3>
markTailFunctionCalls</H3>
<PRE>
public static int <B>markTailFunctionCalls</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                        <A HREF="../../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;qName,
                                        int&nbsp;arity)</PRE>
<DL>
<DD>Scan an expression to find and mark any recursive tail function calls
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression to be analyzed<DD><CODE>qName</CODE> - the name of the containing function<DD><CODE>arity</CODE> - the arity of the containing function
<DT><B>Returns:</B><DD>0 if no tail call was found; 1 if a tail call to a different function was found;
         2 if a tail call to the specified function was found. In this case the
         UserFunctionCall object representing the tail function call will also have been marked as
         a tail call.</DL>
</DD>
</DL>
<HR>

<A NAME="indent(int)"><!-- --></A><H3>
indent</H3>
<PRE>
public static <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> <B>indent</B>(int&nbsp;level)</PRE>
<DL>
<DD>Construct indent string, for diagnostic output
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>level</CODE> - the indentation level (the number of spaces to return)
<DT><B>Returns:</B><DD>a string of "level*2" spaces</DL>
</DD>
</DL>
<HR>

<A NAME="containsLocalParam(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
containsLocalParam</H3>
<PRE>
public static boolean <B>containsLocalParam</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</PRE>
<DL>
<DD>Determine whether an expression contains a LocalParamSetter subexpression
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression to be tested</DL>
</DD>
</DL>
<HR>

<A NAME="allocateSlots(net.sf.saxon.expr.Expression, int, net.sf.saxon.expr.instruct.SlotManager)"><!-- --></A><H3>
allocateSlots</H3>
<PRE>
public static int <B>allocateSlots</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                int&nbsp;nextFree,
                                <A HREF="../../../../../net/sf/saxon/expr/instruct/SlotManager.html" title="class in net.sf.saxon.expr.instruct">SlotManager</A>&nbsp;frame)</PRE>
<DL>
<DD>Allocate slot numbers to range variables
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression whose range variables need to have slot numbers assigned<DD><CODE>nextFree</CODE> - the next slot number that is available for allocation<DD><CODE>frame</CODE> - a SlotManager object that is used to track the mapping of slot numbers
                 to variable names for debugging purposes. May be null.
<DT><B>Returns:</B><DD>the next unallocated slot number.</DL>
</DD>
</DL>
<HR>

<A NAME="effectiveBooleanValue(net.sf.saxon.om.SequenceIterator)"><!-- --></A><H3>
effectiveBooleanValue</H3>
<PRE>
public static boolean <B>effectiveBooleanValue</B>(<A HREF="../../../../../net/sf/saxon/om/SequenceIterator.html" title="interface in net.sf.saxon.om">SequenceIterator</A>&lt;? extends <A HREF="../../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A>&gt;&nbsp;iterator)
                                     throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Determine the effective boolean value of a sequence, given an iterator over the sequence
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>iterator</CODE> - An iterator over the sequence whose effective boolean value is required
<DT><B>Returns:</B><DD>the effective boolean 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> - if a dynamic error occurs</DL>
</DD>
</DL>
<HR>

<A NAME="effectiveBooleanValue(net.sf.saxon.om.Item)"><!-- --></A><H3>
effectiveBooleanValue</H3>
<PRE>
public static boolean <B>effectiveBooleanValue</B>(<A HREF="../../../../../net/sf/saxon/om/Item.html" title="interface in net.sf.saxon.om">Item</A>&nbsp;item)
                                     throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Determine the effective boolean value of a single item
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>item</CODE> - the item whose effective boolean value is required
<DT><B>Returns:</B><DD>the effective boolean 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> - if a dynamic error occurs</DL>
</DD>
</DL>
<HR>

<A NAME="ebvError(java.lang.String)"><!-- --></A><H3>
ebvError</H3>
<PRE>
public static void <B>ebvError</B>(<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;reason)
                     throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Report an error in computing the effective boolean value of an expression
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>reason</CODE> - the nature of the error
<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="dependsOnFocus(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
dependsOnFocus</H3>
<PRE>
public static boolean <B>dependsOnFocus</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</PRE>
<DL>
<DD>Ask whether an expression has a dependency on the focus
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression
<DT><B>Returns:</B><DD>true if the value of the expression depends on the context item, position, or size</DL>
</DD>
</DL>
<HR>

<A NAME="dependsOnVariable(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Binding[])"><!-- --></A><H3>
dependsOnVariable</H3>
<PRE>
public static boolean <B>dependsOnVariable</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e,
                                        <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>[]&nbsp;bindingList)</PRE>
<DL>
<DD>Determine whether an expression depends on any one of a set of variables
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>e</CODE> - the expression being tested<DD><CODE>bindingList</CODE> - the set of variables being tested
<DT><B>Returns:</B><DD>true if the expression depends on one of the given variables</DL>
</DD>
</DL>
<HR>

<A NAME="gatherReferencedVariables(net.sf.saxon.expr.Expression, java.util.List)"><!-- --></A><H3>
gatherReferencedVariables</H3>
<PRE>
public static void <B>gatherReferencedVariables</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e,
                                             <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&gt;&nbsp;list)</PRE>
<DL>
<DD>Gather a list of all the variable bindings on which a given expression depends
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>e</CODE> - the expression being tested<DD><CODE>list</CODE> - a list to which the bindings are to be added. The items in this list must
             implement <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr"><CODE>Binding</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="refersToVariableOrFunction(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
refersToVariableOrFunction</H3>
<PRE>
public static boolean <B>refersToVariableOrFunction</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e)</PRE>
<DL>
<DD>Determine whether the expression contains any variable references or calls to user-written functions
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>e</CODE> - the expression being tested
<DT><B>Returns:</B><DD>true if the expression includes a variable reference or function call, or an XSLT construct
         equivalent to a function call (e.g call-template)</DL>
</DD>
</DL>
<HR>

<A NAME="callsFunction(net.sf.saxon.expr.Expression, net.sf.saxon.om.StructuredQName)"><!-- --></A><H3>
callsFunction</H3>
<PRE>
public static boolean <B>callsFunction</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                    <A HREF="../../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;qName)</PRE>
<DL>
<DD>Determine whether an expression contains a call on the function with a given fingerprint
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - The expression being tested<DD><CODE>qName</CODE> - The name of the function
<DT><B>Returns:</B><DD>true if the expression contains a call on the function</DL>
</DD>
</DL>
<HR>

<A NAME="gatherCalledFunctions(net.sf.saxon.expr.Expression, java.util.List)"><!-- --></A><H3>
gatherCalledFunctions</H3>
<PRE>
public static void <B>gatherCalledFunctions</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e,
                                         <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../../net/sf/saxon/expr/instruct/UserFunction.html" title="class in net.sf.saxon.expr.instruct">UserFunction</A>&gt;&nbsp;list)</PRE>
<DL>
<DD>Gather a list of all the user-defined functions which a given expression calls directly
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>e</CODE> - the expression being tested<DD><CODE>list</CODE> - a list of the functions that are called. The items in this list must
             be objects of class <A HREF="../../../../../net/sf/saxon/expr/instruct/UserFunction.html" title="class in net.sf.saxon.expr.instruct"><CODE>UserFunction</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="gatherCalledFunctionNames(net.sf.saxon.expr.Expression, java.util.List)"><!-- --></A><H3>
gatherCalledFunctionNames</H3>
<PRE>
public static void <B>gatherCalledFunctionNames</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e,
                                             <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&nbsp;list)</PRE>
<DL>
<DD>Gather a list of the names of the user-defined functions which a given expression calls directly
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>e</CODE> - the expression being tested<DD><CODE>list</CODE> - a list of the functions that are called. The items in this list are strings in the format
             "{uri}local/arity"</DL>
</DD>
</DL>
<HR>

<A NAME="resetPropertiesWithinSubtree(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
resetPropertiesWithinSubtree</H3>
<PRE>
public static void <B>resetPropertiesWithinSubtree</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</PRE>
<DL>
<DD>Reset cached static properties within a subtree, meaning that they have to be
 recalulated next time they are required
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the root of the subtree within which static properties should be reset</DL>
</DD>
</DL>
<HR>

<A NAME="resolveCallsToCurrentFunction(net.sf.saxon.expr.Expression, net.sf.saxon.Configuration)"><!-- --></A><H3>
resolveCallsToCurrentFunction</H3>
<PRE>
public static <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>resolveCallsToCurrentFunction</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                                       <A HREF="../../../../../net/sf/saxon/Configuration.html" title="class in net.sf.saxon">Configuration</A>&nbsp;config)
                                                throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Resolve calls to the XSLT current() function within an expression
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression within which calls to current() should be resolved<DD><CODE>config</CODE> - the Saxon configuration
<DT><B>Returns:</B><DD>the expression after resolving calls to current()
<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 a static error is detected</DL>
</DD>
</DL>
<HR>

<A NAME="gatherVariableReferences(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Binding, java.util.List)"><!-- --></A><H3>
gatherVariableReferences</H3>
<PRE>
public static void <B>gatherVariableReferences</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                            <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&nbsp;binding,
                                            <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../../net/sf/saxon/expr/VariableReference.html" title="class in net.sf.saxon.expr">VariableReference</A>&gt;&nbsp;list)</PRE>
<DL>
<DD>Get a list of all references to a particular variable within a subtree
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression at the root of the subtree<DD><CODE>binding</CODE> - the variable binding whose references are sought<DD><CODE>list</CODE> - a list to be populated with the references to this variable</DL>
</DD>
</DL>
<HR>

<A NAME="getReferenceCount(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Binding, boolean)"><!-- --></A><H3>
getReferenceCount</H3>
<PRE>
public static int <B>getReferenceCount</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                    <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&nbsp;binding,
                                    boolean&nbsp;inLoop)</PRE>
<DL>
<DD>Determine how often a variable is referenced. This is the number of times
 it is referenced at run-time: so a reference in a loop counts as "many". This code
 currently handles local variables (Let expressions) and function parameters. It is
 not currently used for XSLT template parameters. It's not the end of the world if
 the answer is wrong (unless it's wrongly given as zero), but if wrongly returned as
 1 then the variable will be repeatedly evaluated.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression within which variable references are to be counted<DD><CODE>binding</CODE> - identifies the variable of interest<DD><CODE>inLoop</CODE> - true if the expression is within a loop, in which case a reference counts as many.
                This should be set to false on the initial call, it may be set to true on an internal recursive
                call
<DT><B>Returns:</B><DD>the number of references. The interesting values are 0, 1,  "many" (represented
         by any value >1), and the special value FILTERED, which indicates that there are
         multiple references and one or more of them is of the form $x[....] indicating that an
         index might be useful.</DL>
</DD>
</DL>
<HR>

<A NAME="gatherAllSubExpressions(net.sf.saxon.expr.Expression, java.util.HashSet)"><!-- --></A><H3>
gatherAllSubExpressions</H3>
<PRE>
public static void <B>gatherAllSubExpressions</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                           <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/HashSet.html?is-external=true" title="class or interface in java.util">HashSet</A>&nbsp;set)</PRE>
<DL>
<DD>Gather the set of all the subexpressions of an expression (the transitive closure)
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the parent expression<DD><CODE>set</CODE> - the set to be populated; on return it will contain all the subexpressions.
            Beware that testing for membership of a set of expressions relies on the equals() comparison,
            which does not test identity.</DL>
</DD>
</DL>
<HR>

<A NAME="pathToContainedExpression(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression, java.util.Stack)"><!-- --></A><H3>
pathToContainedExpression</H3>
<PRE>
public static <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/Stack.html?is-external=true" title="class or interface in java.util">Stack</A>&lt;<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&gt; <B>pathToContainedExpression</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;ancestor,
                                                          <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;child,
                                                          <A HREF="http://download.oracle.com/javase/6/docs/api/java/util/Stack.html?is-external=true" title="class or interface in java.util">Stack</A>&lt;<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&gt;&nbsp;expressionStack)</PRE>
<DL>
<DD>Check if child expression is a sub-expression of a expression
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>ancestor</CODE> - the ancestor expression<DD><CODE>child</CODE> - the child expressions.</DL>
</DD>
</DL>
<HR>

<A NAME="expressionSize(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
expressionSize</H3>
<PRE>
public static int <B>expressionSize</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</PRE>
<DL>
<DD>Get the size of an expression tree (the number of subexpressions it contains)
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression whose size is required
<DT><B>Returns:</B><DD>the size of the expression tree, as the number of nodes</DL>
</DD>
</DL>
<HR>

<A NAME="rebindVariableReferences(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Binding, net.sf.saxon.expr.Binding)"><!-- --></A><H3>
rebindVariableReferences</H3>
<PRE>
public static void <B>rebindVariableReferences</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                            <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&nbsp;oldBinding,
                                            <A HREF="../../../../../net/sf/saxon/expr/Binding.html" title="interface in net.sf.saxon.expr">Binding</A>&nbsp;newBinding)</PRE>
<DL>
<DD>Rebind all variable references to a binding
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression whose contained variable references are to be rebound<DD><CODE>oldBinding</CODE> - the old binding for the variable references<DD><CODE>newBinding</CODE> - the new binding to which the variables should be rebound</DL>
</DD>
</DL>
<HR>

<A NAME="makePathExpression(net.sf.saxon.expr.Expression, net.sf.saxon.expr.Expression, boolean)"><!-- --></A><H3>
makePathExpression</H3>
<PRE>
public static <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>makePathExpression</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;start,
                                            <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;step,
                                            boolean&nbsp;sortAndDeduplicate)</PRE>
<DL>
<DD>Make a mapping expression. The resulting expression will include logic to check that the first operand
 returns nodes, and that the expression as a whole is homogeneous, unless the caller requests otherwise.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>start</CODE> - the start expression (the first operand of "/")<DD><CODE>step</CODE> - the step expression (the second operand of "/")<DD><CODE>sortAndDeduplicate</CODE> - set to true if this is a path expression ("/") where the result needs to be
                           homogenous, and needs to be sorted and deduplicated if it consists of nodes. Set to false if the caller
                           knows that this is not necessary (typically because it has already been checked).
<DT><B>Returns:</B><DD>the resulting expression.</DL>
</DD>
</DL>
<HR>

<A NAME="tryToFactorOutDot(net.sf.saxon.expr.Expression, net.sf.saxon.type.ItemType)"><!-- --></A><H3>
tryToFactorOutDot</H3>
<PRE>
public static <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A> <B>tryToFactorOutDot</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp,
                                           <A HREF="../../../../../net/sf/saxon/type/ItemType.html" title="interface in net.sf.saxon.type">ItemType</A>&nbsp;contextItemType)</PRE>
<DL>
<DD>Try to factor out dependencies on the context item, by rewriting an expression f(.) as
 let $dot := . return f($dot). This is not always possible, for example where f() is an extension
 function call that uses XPathContext as an implicit argument. However, doing this increases the
 chances of distributing a "where" condition in a FLWOR expression to the individual input sequences
 selected by the "for" clauses.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression from which references to "." should be factored out if possible<DD><CODE>contextItemType</CODE> - the static type of the context item
<DT><B>Returns:</B><DD>either the expression, after binding "." to a local variable and replacing all references to it;
         or null, if no changes were made.</DL>
</DD>
</DL>
<HR>

<A NAME="isAllowedInUpdatingContext(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
isAllowedInUpdatingContext</H3>
<PRE>
public static boolean <B>isAllowedInUpdatingContext</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;exp)</PRE>
<DL>
<DD>Determine whether the expression is either an updating expression, or an expression that is permitted
 in a context where updating expressions are allowed
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exp</CODE> - the expression under test
<DT><B>Returns:</B><DD>true if the expression is an updating expression, or an empty sequence, or a call on error()</DL>
</DD>
</DL>
<HR>

<A NAME="replaceNthSubexpression(net.sf.saxon.expr.Expression, int, net.sf.saxon.expr.Expression)"><!-- --></A><H3>
replaceNthSubexpression</H3>
<PRE>
public static void <B>replaceNthSubexpression</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;target,
                                           int&nbsp;n,
                                           <A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;replacement)</PRE>
<DL>
<DD>Replace the Nth subexpression of an expression
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>target</CODE> - the parent expression whose subexpression is to be replaced<DD><CODE>n</CODE> - the index of the subexpression to be replaced (starting at zero)<DD><CODE>replacement</CODE> - the replacement subexpression</DL>
</DD>
</DL>
<HR>

<A NAME="selectsOutwards(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
selectsOutwards</H3>
<PRE>
public static boolean <B>selectsOutwards</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e)</PRE>
<DL>
<DD>Tests whether an expression performs navigation downwards or sideways
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>e</CODE> - the expression
<DT><B>Returns:</B><DD>true if the expression uses a downwards or sideways axis</DL>
</DD>
</DL>
<HR>

<A NAME="selectsSideways(net.sf.saxon.expr.Expression)"><!-- --></A><H3>
selectsSideways</H3>
<PRE>
public static boolean <B>selectsSideways</B>(<A HREF="../../../../../net/sf/saxon/expr/Expression.html" title="class in net.sf.saxon.expr">Expression</A>&nbsp;e)</PRE>
<DL>
<DD>Tests whether an expression performs navigation downwards or sideways
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>e</CODE> - the expression
<DT><B>Returns:</B><DD>true if the expression uses a downwards or sideways axis</DL>
</DD>
</DL>
<HR>

<A NAME="getCurrentDirectory()"><!-- --></A><H3>
getCurrentDirectory</H3>
<PRE>
public static <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> <B>getCurrentDirectory</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getBaseURI(net.sf.saxon.expr.StaticContext, javax.xml.transform.SourceLocator, boolean)"><!-- --></A><H3>
getBaseURI</H3>
<PRE>
public static <A HREF="http://download.oracle.com/javase/6/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</A> <B>getBaseURI</B>(<A HREF="../../../../../net/sf/saxon/expr/StaticContext.html" title="interface in net.sf.saxon.expr">StaticContext</A>&nbsp;env,
                             <A HREF="http://download.oracle.com/javase/6/docs/api/javax/xml/transform/SourceLocator.html?is-external=true" title="class or interface in javax.xml.transform">SourceLocator</A>&nbsp;locator,
                             boolean&nbsp;fail)
                      throws <A HREF="../../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Determine the base URI of an expression, so that it can be saved on the expression tree for use
 when the expression is evaluated
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>env</CODE> - the static context<DD><CODE>locator</CODE> - location of the expression for error messages<DD><CODE>fail</CODE> - if true, the method throws an exception when there is no absolute base URI; otherwise, the
 method returns null  @return the absolute base URI of the 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></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="../../../../../net/sf/saxon/expr/parser/ExpressionParser.TemporaryContainer.html" title="class in net.sf.saxon.expr.parser"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../net/sf/saxon/expr/parser/ExpressionVisitor.html" title="class in net.sf.saxon.expr.parser"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?net/sf/saxon/expr/parser/ExpressionTool.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ExpressionTool.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="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&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>