<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 RangeResultSequence</h2><br><hr><pre>public class <strong>RangeResultSequence</strong>
extends org.eclipse.wst.xml.xpath2.processor.ResultSequence</pre>A range expression can be used to construct a sequence of consecutive
 integers.<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_RangeResultSequence">RangeResultSequence</a></strong>(int start
         ,
      int end)</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 void</code></td><td width="" align="left"><code><a href="#method_add">add</a>(org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType item)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               item is an integer to add to the range.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_clear">clear</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               clear range</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_concat">concat</a>(org.eclipse.wst.xml.xpath2.processor.ResultSequence rs)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               remove the tail from the range given.</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.ResultSequence</code></td><td width="" align="left"><code><a href="#method_create_new">create_new</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               create new result sequence</td></tr><tr valign="top"><td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code><a href="#method_empty">empty</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               asks if the range is empty?</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_first">first</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </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_get">get</a>(int i)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.ListIterator</code></td><td width="" align="left"><code><a href="#method_iterator">iterator</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               interate through range.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_release">release</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               release</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_size">size</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </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_RangeResultSequence">RangeResultSequence</a></h2><p><code>public <strong>RangeResultSequence</strong>(int start
         ,
      int end)</code></p><p>set the start and end of the range result sequence</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_add">add</a></h2><p><code>public void <strong>add</strong>(org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType item)</code></p><p>item is an integer to add to the range.</p><h3>Parameters</h3><p><code>item</code> - is an integer.</p><hr><h2><a name="method_clear">clear</a></h2><p><code>public void <strong>clear</strong>()</code></p><p>clear range</p><hr><h2><a name="method_concat">concat</a></h2><p><code>public void <strong>concat</strong>(org.eclipse.wst.xml.xpath2.processor.ResultSequence rs)</code></p><p>remove the tail from the range given.</p><h3>Parameters</h3><p><code>rs</code> - is the range</p><hr><h2><a name="method_create_new">create_new</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.ResultSequence <strong>create_new</strong>()</code></p><p>create new result sequence</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.ResultSequence</code> - null</p><hr><h2><a name="method_empty">empty</a></h2><p><code>public boolean <strong>empty</strong>()</code></p><p>asks if the range is empty?</p><h3>Returns</h3><p><code>boolean</code> - boolean</p><hr><h2><a name="method_first">first</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType <strong>first</strong>()</code></p><p></p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType</code> - first item in range</p><hr><h2><a name="method_get">get</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType <strong>get</strong>(int i)</code></p><p></p><h3>Parameters</h3><p><code>i</code></p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.types.AnyType</code> - item from range</p><hr><h2><a name="method_iterator">iterator</a></h2><p><code>public java.util.ListIterator <strong>iterator</strong>()</code></p><p>interate through range.</p><h3>Returns</h3><p><code>java.util.ListIterator</code> - tail</p><hr><h2><a name="method_release">release</a></h2><p><code>public void <strong>release</strong>()</code></p><p>release</p><hr><h2><a name="method_size">size</a></h2><p><code>public int <strong>size</strong>()</code></p><p></p><h3>Returns</h3><p><code>int</code> - size</p><hr></body></html>