<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xml.xpath2.processor.internal</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xml.xpath2.processor.internal</strong></font><br>
               Class Focus</h2><br><hr><pre>public class <strong>Focus</strong>
extends java.lang.Object</pre>set the focus from a result sequence<hr><table width="100%" border="1"><tr bgcolor="#CCCCFF"><td width="100%"><h2>Constructor Summary</h2></td></tr><tr><td><code><strong><a href="#con_Focus">Focus</a></strong>(org.eclipse.wst.xml.xpath2.processor.ResultSequence rs)</code></td></tr></table><br><table width="100%" border="1"><tr cols="2" bgcolor="#CCCCFF"><td colspan="2" width="100%"><h2>Method Summary</h2></td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_advance_cp">advance_cp</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Checks to see if possible to advance rs.</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType</code></td><td width="" align="left"><code><a href="#method_context_item">context_item</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Retrieves previous item from current context position.</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_last">last</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               returns the position of the last item in rs.</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_position">position</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               returns an integer of the current position.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_set_position">set_position</a>(int p)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               sets the position.</td></tr></table><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Constructor Detail
               </h2></td></tr></table><h2><a name="con_Focus">Focus</a></h2><p><code>public <strong>Focus</strong>(org.eclipse.wst.xml.xpath2.processor.ResultSequence rs)</code></p><p>Sets the _rs to rs and context position to 1.</p><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Methods Detail
               </h2></td></tr></table><h2><a name="method_advance_cp">advance_cp</a></h2><p><code>public boolean <strong>advance_cp</strong>()</code></p><p>Checks to see if possible to advance rs.</p><h3>Returns</h3><p><code>boolean</code> - the boolean.</p><hr><h2><a name="method_context_item">context_item</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType <strong>context_item</strong>()</code></p><p>Retrieves previous item from current context position.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType</code> - the item from _rs, or null if there is no context item.</p><hr><h2><a name="method_last">last</a></h2><p><code>public int <strong>last</strong>()</code></p><p>returns the position of the last item in rs.</p><h3>Returns</h3><p><code>int</code> - the size of rs.</p><hr><h2><a name="method_position">position</a></h2><p><code>public int <strong>position</strong>()</code></p><p>returns an integer of the current position.</p><h3>Returns</h3><p><code>int</code> - the current position of rs.</p><hr><h2><a name="method_set_position">set_position</a></h2><p><code>public void <strong>set_position</strong>(int p)</code></p><p>sets the position.</p><h3>Parameters</h3><p><code>p</code> - is the position that is set.</p><hr></body></html>