<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 TypeError</h2><br><hr><pre>public class <strong>TypeError</strong>
extends org.eclipse.wst.xml.xpath2.processor.XPathException</pre>Error caused by bad types.<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_TypeError">TypeError</a></strong>(java.lang.String code
         ,
      java.lang.String err)</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 static org.eclipse.wst.xml.xpath2.processor.internal.TypeError</code></td><td width="" align="left"><code><a href="#method_ci_not_node">ci_not_node</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               "Factory" for building errors</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code><a href="#method_code">code</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the error code.</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.internal.TypeError</code></td><td width="" align="left"><code><a href="#method_invalid_type">invalid_type</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               "Factory" for building errors</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.internal.TypeError</code></td><td width="" align="left"><code><a href="#method_mixed_vals">mixed_vals</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               "Factory" for building errors</td></tr><tr valign="top"><td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath2.processor.internal.TypeError</code></td><td width="" align="left"><code><a href="#method_step_conatins_atoms">step_conatins_atoms</a>(java.lang.String err)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               "Factory" for building errors</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_TypeError">TypeError</a></h2><p><code>public <strong>TypeError</strong>(java.lang.String code
         ,
      java.lang.String err)</code></p><p>Constructor for type error.</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_ci_not_node">ci_not_node</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.TypeError <strong>ci_not_node</strong>(java.lang.String err)</code></p><p>"Factory" for building errors</p><h3>Parameters</h3><p><code>err</code> - is the reason for the error.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.TypeError</code> - the error.</p><hr><h2><a name="method_code">code</a></h2><p><code>public java.lang.String <strong>code</strong>()</code></p><p>Get the error code.</p><h3>Returns</h3><p><code>java.lang.String</code> - The error code.</p><hr><h2><a name="method_invalid_type">invalid_type</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.TypeError <strong>invalid_type</strong>(java.lang.String err)</code></p><p>"Factory" for building errors</p><h3>Parameters</h3><p><code>err</code> - is the reason for the error.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.TypeError</code> - the error.</p><hr><h2><a name="method_mixed_vals">mixed_vals</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.TypeError <strong>mixed_vals</strong>(java.lang.String err)</code></p><p>"Factory" for building errors</p><h3>Parameters</h3><p><code>err</code> - is the reason for the error.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.TypeError</code> - the error.</p><hr><h2><a name="method_step_conatins_atoms">step_conatins_atoms</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.TypeError <strong>step_conatins_atoms</strong>(java.lang.String err)</code></p><p>"Factory" for building errors</p><h3>Parameters</h3><p><code>err</code> - is the reason for the error.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.TypeError</code> - the error.</p><hr></body></html>