<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xml.xpath2.processor.internal.ast</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xml.xpath2.processor.internal.ast</strong></font><br>
               Class QuantifiedExpr</h2><br><hr><pre>public class <strong>QuantifiedExpr</strong>
extends org.eclipse.wst.xml.xpath2.processor.internal.ast.Expr</pre>Support for Quantified expressions.<hr><table width="100%" border="1"><tr cols="2" bgcolor="#CCCCFF"><td colspan="2" width="100%"><h2>Field Summary</h2></td></tr><tr valign="top"><td width="20%" align="right"><code>public static  int</code></td><td width="80%" align="left"><code><a href="#field_ALL">ALL</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set internal value for ALL.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static  int</code></td><td width="80%" align="left"><code><a href="#field_SOME">SOME</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set internal value for SOME.</td></tr></table><br><table width="100%" border="1"><tr bgcolor="#CCCCFF"><td width="100%"><h2>Constructor Summary</h2></td></tr><tr><td><code><strong><a href="#con_QuantifiedExpr">QuantifiedExpr</a></strong>(int type
         ,
      java.util.Collection varexp
         ,
      org.eclipse.wst.xml.xpath2.processor.internal.ast.Expr ret)</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 java.lang.Object</code></td><td width="" align="left"><code><a href="#method_accept">accept</a>(org.eclipse.wst.xml.xpath2.processor.internal.ast.XPathVisitor v)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Support for Visitor interface.</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.internal.ast.Expr</code></td><td width="" align="left"><code><a href="#method_expr">expr</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Support for Expression interface.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.Iterator</code></td><td width="" align="left"><code><a href="#method_iterator">iterator</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Support for Iterator inteface.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_set_expr">set_expr</a>(org.eclipse.wst.xml.xpath2.processor.internal.ast.Expr e)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set next expression.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_truncate_pairs">truncate_pairs</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Normalization of expression pairs.</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_type">type</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Support for Integer interface.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.util.Collection</code></td><td width="" align="left"><code><a href="#method_ve_pairs">ve_pairs</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Support for Collection interface.</td></tr></table><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Field Detail
               </h2></td></tr></table><h2><a name="field_ALL">ALL</a></h2><p><code>public static  int <strong>ALL</strong></code></p><table><tr><td>Set internal value for ALL.</td></tr></table><hr><h2><a name="field_SOME">SOME</a></h2><p><code>public static  int <strong>SOME</strong></code></p><table><tr><td>Set internal value for SOME.</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_QuantifiedExpr">QuantifiedExpr</a></h2><p><code>public <strong>QuantifiedExpr</strong>(int type
         ,
      java.util.Collection varexp
         ,
      org.eclipse.wst.xml.xpath2.processor.internal.ast.Expr ret)</code></p><p>Constructor for QuantifiedExpr.</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_accept">accept</a></h2><p><code>public java.lang.Object <strong>accept</strong>(org.eclipse.wst.xml.xpath2.processor.internal.ast.XPathVisitor v)</code></p><p>Support for Visitor interface.</p><h3>Parameters</h3><p><code>v</code></p><h3>Returns</h3><p><code>java.lang.Object</code> - Result of Visitor operation.</p><hr><h2><a name="method_expr">expr</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.ast.Expr <strong>expr</strong>()</code></p><p>Support for Expression interface.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.ast.Expr</code> - Result of Expr operation.</p><hr><h2><a name="method_iterator">iterator</a></h2><p><code>public java.util.Iterator <strong>iterator</strong>()</code></p><p>Support for Iterator inteface.</p><h3>Returns</h3><p><code>java.util.Iterator</code> - Result of Iterator operation.</p><hr><h2><a name="method_set_expr">set_expr</a></h2><p><code>public void <strong>set_expr</strong>(org.eclipse.wst.xml.xpath2.processor.internal.ast.Expr e)</code></p><p>Set next expression.</p><h3>Parameters</h3><p><code>e</code> - Expression.</p><hr><h2><a name="method_truncate_pairs">truncate_pairs</a></h2><p><code>public void <strong>truncate_pairs</strong>()</code></p><p>Normalization of expression pairs.</p><hr><h2><a name="method_type">type</a></h2><p><code>public int <strong>type</strong>()</code></p><p>Support for Integer interface.</p><h3>Returns</h3><p><code>int</code> - Result of Int operation.</p><hr><h2><a name="method_ve_pairs">ve_pairs</a></h2><p><code>public java.util.Collection <strong>ve_pairs</strong>()</code></p><p>Support for Collection interface.</p><h3>Returns</h3><p><code>java.util.Collection</code> - Expression pairs.</p><hr></body></html>