diff options
Diffstat (limited to 'docs/doxygen/nel/a02460.html')
-rw-r--r-- | docs/doxygen/nel/a02460.html | 2751 |
1 files changed, 2751 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02460.html b/docs/doxygen/nel/a02460.html new file mode 100644 index 00000000..ef20499e --- /dev/null +++ b/docs/doxygen/nel/a02460.html @@ -0,0 +1,2751 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>NeL: NLMISC::CEvalNumExpr class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.6 --> +<div class="qindex"> <form class="search" action="search.php" method="get"> +<a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div> +<h1>NLMISC::CEvalNumExpr Class Reference</h1><code>#include <<a class="el" href="a05679.html">eval_num_expr.h</a>></code> +<p> +<p>Inheritance diagram for NLMISC::CEvalNumExpr: +<p><center><img src="a02460.png" usemap="#NLMISC::CEvalNumExpr_map" border="0" alt=""></center> +<map name="NLMISC::CEvalNumExpr_map"> +<area href="a02979.html" alt="NLGEORGES::CMyEvalNumExpr" shape="rect" coords="0,56,197,80"> +</map> +<hr><a name="_details"></a><h2>Detailed Description</h2> +This class preforms numerical expression parsing. +<p> + +<p> +Definition at line <a class="el" href="a05679.html#l00037">37</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>.<table border=0 cellpadding=0 cellspacing=0> +<tr><td></td></tr> +<tr><td colspan=2><br><h2>Public Types</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> { <br> + <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw15">UnkownValue</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw16">ValueError</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw13">UnkownFunction</a>, +<br> + <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw1">FunctionError</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw10">NumberSyntaxError</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw14">UnkownOperator</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw7">MustBeOpen</a>, +<br> + <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw2">MustBeClose</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw3">MustBeComa</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw6">MustBeExpression</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw9">NotUnaryOperator</a>, +<br> + <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw5">MustBeEnd</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw4">MustBeDoubleQuote</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw0">DividByZero</a>, +<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw11">ReturnValueCount</a> +<br> + }</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Eval return error. <a href="#NLGEORGES_1_1CMyEvalNumExprw12">More...</a><br><br></td></tr> +<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExpra1">evalExpression</a> (const char *expression, double &result, int *errorIndex, <a class="el" href="a04558.html#a11">uint32</a> userData=0)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>const char * </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExpra3">getErrorString</a> (<a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> state) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Get error string. <a href="#NLGEORGES_1_1CMyEvalNumExpra3"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExpra4">internalCheck</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>virtual </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpra3">~CEvalNumExpr</a> ()</td></tr> + +<tr><td colspan=2><br><h2>Protected Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprb0">evalFunction</a> (const char *funcName, double arg0, double <a class="el" href="a04223.html#a644">arg1</a>, double &result)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprb1">evalFunction</a> (const char *funcName, double arg0, double &result)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprb2">evalValue</a> (const char *<a class="el" href="a04223.html#a658">value</a>, double &result, <a class="el" href="a04558.html#a11">uint32</a> userData)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Overridable functions. <a href="#NLMISC_1_1CEvalNumExprb2"></a><br><br></td></tr> +<tr><td colspan=2><br><h2>Private Types</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom>{ <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry25">InternalStringLen</a> = 32, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a> = 4 + }</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62">TOperator</a> { <br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry36">Not</a> = 0, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry61">Tilde</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry35">Mul</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry12">Div</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry47">Remainder</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry44">Plus</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry34">Minus</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry65">ULeftShift</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry66">URightShift</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry52">SLeftShift</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry55">SRightShift</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry21">Inferior</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry22">InferiorEqual</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry57">Superior</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry58">SuperiorEqual</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry14">Equal</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry37">NotEqual</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry3">And</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry43">Or</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry67">Xor</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry28">LogicalAnd</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry29">LogicalOr</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry30">LogicalXor</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry42">OperatorCount</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry38">NotOperator</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry17">ExtOperator</a> +<br> + }</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63">TReservedWord</a> { <br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry1">Abs</a> = 0, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry2">Acos</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry4">Asin</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry5">Atan</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry6">Atan2</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry7">Ceil</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry10">Cos</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry11">Cosh</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry15">Exp</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry16">Exponent</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry18">Floor</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry23">Int</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry26">Log</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry27">Log10</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry31">Mantissa</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry32">Max</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry33">Min</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry45">Pow</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry46">Rand</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry49">Round</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry50">Sin</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry51">Sinh</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry53">Sq</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry54">Sqrt</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry59">Tan</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry60">Tanh</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry48">ReservedWordCount</a> +<br> + }</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64">TToken</a> { <br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry39">Number</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry19">Function1</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry20">Function2</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry56">String</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry41">Operator</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry40">Open</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8">Close</a>, +<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry9">Coma</a>, +<br> + <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry13">End</a> +<br> + }</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation Expression tokens. <a href="#NLMISC_1_1CEvalNumExpry64">More...</a><br><br></td></tr> +<tr><td colspan=2><br><h2>Private Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprd0">evalExpression</a> (double &result, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64">TToken</a> &nextToken, <a class="el" href="a04558.html#a11">uint32</a> userData)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Evaluate an expression. <a href="#NLMISC_1_1CEvalNumExprd0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (<a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64">TToken</a> &token)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Internal functions Get the next token. <a href="#NLMISC_1_1CEvalNumExprd1"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprd2">readDecimal</a> (double &<a class="el" href="a04223.html#a658">value</a>)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Read a decimal double. <a href="#NLMISC_1_1CEvalNumExprd2"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprd3">readIntegerNumberDecimal</a> (double &<a class="el" href="a04223.html#a658">value</a>)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Read an integer. <a href="#NLMISC_1_1CEvalNumExprd3"></a><br><br></td></tr> +<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const char * </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr0">_ExprPtr</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>std::string </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr1">_InternalStlString</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr2">_InternalString</a> [InternalStringLen]</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Current string. <a href="#NLMISC_1_1CEvalNumExprr2"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const char * </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr3">_InternalStringPtr</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62">TOperator</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Current operator. <a href="#NLMISC_1_1CEvalNumExprr4"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63">TReservedWord</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr5">_ReservedWordFound</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Reserved word. <a href="#NLMISC_1_1CEvalNumExprr5"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr6">_State</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Members. <a href="#NLMISC_1_1CEvalNumExprr6"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>double </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr7">_Value</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Current value. <a href="#NLMISC_1_1CEvalNumExprr7"></a><br><br></td></tr> +<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const char * </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv0">_ErrorString</a> [ReturnValueCount]</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62">TOperator</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv1">_OperatorArray</a> [128]</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>const int </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv2">_OperatorPrecedence</a> []</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>const char * </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv3">_ReservedWord</a> [ReservedWordCount]</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64">TToken</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv4">_ReservedWordToken</a> [ReservedWordCount]</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Static values Char to operator array. <a href="#NLMISC_1_1CEvalNumExprv4"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv5">_StringChar</a> [128]</td></tr> + +</table> +<hr><h2>Member Enumeration Documentation</h2> +<a class="anchor" name="NLMISC_1_1CEvalNumExpry0" doxytag="NLMISC::CEvalNumExpr::@70" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> anonymous enum<code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +<dl compact><dt><b>Enumeration values: </b></dt><dd> +<table border=0 cellspacing=2 cellpadding=0> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry25" doxytag="InternalStringLen" ></a>InternalStringLen</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24" doxytag="InternalOperator" ></a>InternalOperator</em> </td><td> +</td></tr> +</table> +</dl> + +<p> +Definition at line <a class="el" href="a05679.html#l00289">289</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +<div class="fragment"><pre>00290 { +00291 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry25">InternalStringLen</a> = 32, +00292 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a> = 4, +00293 }; +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExpry62" doxytag="NLMISC::CEvalNumExpr::TOperator" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> enum <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62">NLMISC::CEvalNumExpr::TOperator</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +<dl compact><dt><b>Enumeration values: </b></dt><dd> +<table border=0 cellspacing=2 cellpadding=0> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry36" doxytag="Not" ></a>Not</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry61" doxytag="Tilde" ></a>Tilde</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry35" doxytag="Mul" ></a>Mul</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry12" doxytag="Div" ></a>Div</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry47" doxytag="Remainder" ></a>Remainder</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry44" doxytag="Plus" ></a>Plus</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry34" doxytag="Minus" ></a>Minus</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry65" doxytag="ULeftShift" ></a>ULeftShift</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry66" doxytag="URightShift" ></a>URightShift</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry52" doxytag="SLeftShift" ></a>SLeftShift</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry55" doxytag="SRightShift" ></a>SRightShift</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry21" doxytag="Inferior" ></a>Inferior</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry22" doxytag="InferiorEqual" ></a>InferiorEqual</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry57" doxytag="Superior" ></a>Superior</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry58" doxytag="SuperiorEqual" ></a>SuperiorEqual</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry14" doxytag="Equal" ></a>Equal</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry37" doxytag="NotEqual" ></a>NotEqual</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry3" doxytag="And" ></a>And</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry43" doxytag="Or" ></a>Or</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry67" doxytag="Xor" ></a>Xor</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry28" doxytag="LogicalAnd" ></a>LogicalAnd</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry29" doxytag="LogicalOr" ></a>LogicalOr</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry30" doxytag="LogicalXor" ></a>LogicalXor</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry42" doxytag="OperatorCount" ></a>OperatorCount</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry38" doxytag="NotOperator" ></a>NotOperator</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry17" doxytag="ExtOperator" ></a>ExtOperator</em> </td><td> +</td></tr> +</table> +</dl> + +<p> +Definition at line <a class="el" href="a05679.html#l00226">226</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +<div class="fragment"><pre>00227 { +00228 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry36">Not</a> = 0, <span class="comment">// !</span> +00229 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry61">Tilde</a>, <span class="comment">// ~</span> +00230 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry35">Mul</a>, <span class="comment">// *</span> +00231 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry12">Div</a>, <span class="comment">// /</span> +00232 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry47">Remainder</a>, <span class="comment">// %</span> +00233 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry44">Plus</a>, <span class="comment">// +</span> +00234 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry34">Minus</a>, <span class="comment">// -</span> +00235 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry65">ULeftShift</a>, <span class="comment">// <<</span> +00236 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry66">URightShift</a>, <span class="comment">// >></span> +00237 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry52">SLeftShift</a>, <span class="comment">// <-</span> +00238 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry55">SRightShift</a>, <span class="comment">// -></span> +00239 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry21">Inferior</a>, <span class="comment">// <</span> +00240 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry22">InferiorEqual</a>, <span class="comment">// <=</span> +00241 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry57">Superior</a>, <span class="comment">// ></span> +00242 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry58">SuperiorEqual</a>, <span class="comment">// >=</span> +00243 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry14">Equal</a>, <span class="comment">// ==</span> +00244 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry37">NotEqual</a>, <span class="comment">// !=</span> +00245 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry3">And</a>, <span class="comment">// &</span> +00246 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry43">Or</a>, <span class="comment">// |</span> +00247 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry67">Xor</a>, <span class="comment">// ^</span> +00248 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry28">LogicalAnd</a>, <span class="comment">// &&</span> +00249 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry29">LogicalOr</a>, <span class="comment">// ||</span> +00250 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry30">LogicalXor</a>, <span class="comment">// ^^</span> +00251 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry42">OperatorCount</a>, <span class="comment">// </span> +00252 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry38">NotOperator</a>, <span class="comment">// This is not an operator</span> +00253 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry17">ExtOperator</a>, <span class="comment">// This is a 2 charcters operator</span> +00254 }; +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExpry63" doxytag="NLMISC::CEvalNumExpr::TReservedWord" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> enum <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63">NLMISC::CEvalNumExpr::TReservedWord</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +<dl compact><dt><b>Enumeration values: </b></dt><dd> +<table border=0 cellspacing=2 cellpadding=0> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry1" doxytag="Abs" ></a>Abs</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry2" doxytag="Acos" ></a>Acos</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry4" doxytag="Asin" ></a>Asin</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry5" doxytag="Atan" ></a>Atan</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry6" doxytag="Atan2" ></a>Atan2</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry7" doxytag="Ceil" ></a>Ceil</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry10" doxytag="Cos" ></a>Cos</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry11" doxytag="Cosh" ></a>Cosh</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry15" doxytag="Exp" ></a>Exp</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry16" doxytag="Exponent" ></a>Exponent</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry18" doxytag="Floor" ></a>Floor</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry23" doxytag="Int" ></a>Int</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry26" doxytag="Log" ></a>Log</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry27" doxytag="Log10" ></a>Log10</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry31" doxytag="Mantissa" ></a>Mantissa</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry32" doxytag="Max" ></a>Max</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry33" doxytag="Min" ></a>Min</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry45" doxytag="Pow" ></a>Pow</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry46" doxytag="Rand" ></a>Rand</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry49" doxytag="Round" ></a>Round</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry50" doxytag="Sin" ></a>Sin</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry51" doxytag="Sinh" ></a>Sinh</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry53" doxytag="Sq" ></a>Sq</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry54" doxytag="Sqrt" ></a>Sqrt</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry59" doxytag="Tan" ></a>Tan</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry60" doxytag="Tanh" ></a>Tanh</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry48" doxytag="ReservedWordCount" ></a>ReservedWordCount</em> </td><td> +</td></tr> +</table> +</dl> + +<p> +Definition at line <a class="el" href="a05679.html#l00257">257</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00616">evalExpression()</a>, and <a class="el" href="a05678.html#l00096">getNextToken()</a>. +<p> +<div class="fragment"><pre>00258 { +00259 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry1">Abs</a> = 0, +00260 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry2">Acos</a>, +00261 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry4">Asin</a>, +00262 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry5">Atan</a>, +00263 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry6">Atan2</a>, +00264 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry7">Ceil</a>, +00265 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry10">Cos</a>, +00266 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry11">Cosh</a>, +00267 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry15">Exp</a>, +00268 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry16">Exponent</a>, +00269 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry18">Floor</a>, +00270 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry23">Int</a>, +00271 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry26">Log</a>, +00272 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry27">Log10</a>, +00273 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry31">Mantissa</a>, +00274 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry32">Max</a>, +00275 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry33">Min</a>, +00276 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry45">Pow</a>, +00277 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry46">Rand</a>, +00278 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry49">Round</a>, +00279 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry50">Sin</a>, +00280 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry51">Sinh</a>, +00281 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry53">Sq</a>, +00282 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry54">Sqrt</a>, +00283 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry59">Tan</a>, +00284 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry60">Tanh</a>, +00285 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry48">ReservedWordCount</a>, +00286 }; +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12" doxytag="NLMISC::CEvalNumExpr::TReturnState" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> enum <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">NLMISC::CEvalNumExpr::TReturnState</a> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Eval return error. +<p> +<dl compact><dt><b>Enumeration values: </b></dt><dd> +<table border=0 cellspacing=2 cellpadding=0> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8" doxytag="NoError" ></a>NoError</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw15" doxytag="UnkownValue" ></a>UnkownValue</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw16" doxytag="ValueError" ></a>ValueError</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw13" doxytag="UnkownFunction" ></a>UnkownFunction</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw1" doxytag="FunctionError" ></a>FunctionError</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw10" doxytag="NumberSyntaxError" ></a>NumberSyntaxError</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw14" doxytag="UnkownOperator" ></a>UnkownOperator</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw7" doxytag="MustBeOpen" ></a>MustBeOpen</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw2" doxytag="MustBeClose" ></a>MustBeClose</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw3" doxytag="MustBeComa" ></a>MustBeComa</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw6" doxytag="MustBeExpression" ></a>MustBeExpression</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw9" doxytag="NotUnaryOperator" ></a>NotUnaryOperator</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw5" doxytag="MustBeEnd" ></a>MustBeEnd</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw4" doxytag="MustBeDoubleQuote" ></a>MustBeDoubleQuote</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw0" doxytag="DividByZero" ></a>DividByZero</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw11" doxytag="ReturnValueCount" ></a>ReturnValueCount</em> </td><td> +</td></tr> +</table> +</dl> + +<p> +Definition at line <a class="el" href="a05679.html#l00042">42</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00586">evalExpression()</a>, and <a class="el" href="a05678.html#l00096">getNextToken()</a>. +<p> +<div class="fragment"><pre>00043 { +00044 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>, <span class="comment">// No error</span> +00045 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw15">UnkownValue</a>, <span class="comment">// Unkown value has been parsed</span> +00046 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw16">ValueError</a>, <span class="comment">// Error during user defined value evaluation</span> +00047 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw13">UnkownFunction</a>, <span class="comment">// Unkown function has been parsed</span> +00048 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw1">FunctionError</a>, <span class="comment">// Error during user defined function evaluation</span> +00049 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw10">NumberSyntaxError</a>, <span class="comment">// Syntax error in a number expression</span> +00050 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw14">UnkownOperator</a>, <span class="comment">// Unkown operator</span> +00051 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw7">MustBeOpen</a>, <span class="comment">// Should be a open parentesis</span> +00052 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw2">MustBeClose</a>, <span class="comment">// Should be a close parentesis</span> +00053 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw3">MustBeComa</a>, <span class="comment">// Should be a coma character</span> +00054 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw6">MustBeExpression</a>, <span class="comment">// Should be an expression</span> +00055 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw9">NotUnaryOperator</a>, <span class="comment">// Should not be an unary operator</span> +00056 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw5">MustBeEnd</a>, <span class="comment">// Should be the end</span> +00057 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw4">MustBeDoubleQuote</a>, <span class="comment">// Should be a double quote</span> +00058 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw0">DividByZero</a>, <span class="comment">// Divide by zero</span> +00059 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw11">ReturnValueCount</a> +00060 }; +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExpry64" doxytag="NLMISC::CEvalNumExpr::TToken" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> enum <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64">NLMISC::CEvalNumExpr::TToken</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Implementation Expression tokens. +<p> +<dl compact><dt><b>Enumeration values: </b></dt><dd> +<table border=0 cellspacing=2 cellpadding=0> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry39" doxytag="Number" ></a>Number</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry19" doxytag="Function1" ></a>Function1</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry20" doxytag="Function2" ></a>Function2</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry56" doxytag="String" ></a>String</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry41" doxytag="Operator" ></a>Operator</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry40" doxytag="Open" ></a>Open</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8" doxytag="Close" ></a>Close</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry9" doxytag="Coma" ></a>Coma</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry13" doxytag="End" ></a>End</em> </td><td> +</td></tr> +</table> +</dl> + +<p> +Definition at line <a class="el" href="a05679.html#l00212">212</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +<div class="fragment"><pre>00213 { +00214 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry39">Number</a>, <span class="comment">// This is a number</span> +00215 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry19">Function1</a>, <span class="comment">// This is a function with one argu</span> +00216 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry20">Function2</a>, <span class="comment">// This is a function with two argu</span> +00217 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry56">String</a>, <span class="comment">// This is a user string</span> +00218 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry41">Operator</a>, <span class="comment">// This is an operator</span> +00219 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry40">Open</a>, <span class="comment">// (</span> +00220 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8">Close</a>, <span class="comment">// )</span> +00221 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry9">Coma</a>, <span class="comment">// ,</span> +00222 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry13">End</a>, <span class="comment">// End of string</span> +00223 }; +</pre></div> </td> + </tr> +</table> +<hr><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" name="NLMISC_1_1CEvalNumExpra3" doxytag="NLMISC::CEvalNumExpr::~CEvalNumExpr" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> virtual NLMISC::CEvalNumExpr::~<a class="el" href="a02460.html">CEvalNumExpr</a> </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline, virtual]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05679.html#l00040">40</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +<div class="fragment"><pre>00040 {} +</pre></div> </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="NLMISC_1_1CEvalNumExprd0" doxytag="NLMISC::CEvalNumExpr::evalExpression" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">CEvalNumExpr::TReturnState</a> NLMISC::CEvalNumExpr::evalExpression </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">double & </td> + <td class="mdname" nowrap> <em>result</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64">TToken</a> & </td> + <td class="mdname" nowrap> <em>nextToken</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>userData</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [private]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Evaluate an expression. +<p> + +<p> +Definition at line <a class="el" href="a05678.html#l00616">616</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +References <a class="el" href="a05679.html#l00319">_InternalStringPtr</a>, <a class="el" href="a05678.html#l01296">_OperatorPrecedence</a>, <a class="el" href="a05679.html#l00314">_ReservedWordFound</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry1">Abs</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry2">Acos</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry3">And</a>, <a class="el" href="a05646.html#l01119">arg1</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry4">Asin</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry5">Atan</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry6">Atan2</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry7">Ceil</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8">Close</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry9">Coma</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry10">Cos</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry11">Cosh</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry12">Div</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw0">DividByZero</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry14">Equal</a>, <a class="el" href="a05678.html#l00586">evalExpression()</a>, <a class="el" href="a05678.html#l01190">evalFunction()</a>, <a class="el" href="a05678.html#l01183">evalValue()</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry16">Exponent</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry18">Floor</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry19">Function1</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry20">Function2</a>, <a class="el" href="a05678.html#l00096">getNextToken()</a>, <a class="el" href="a05646.html#l00225">index</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry21">Inferior</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry22">InferiorEqual</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry25">InternalStringLen</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry27">Log10</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry28">LogicalAnd</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry29">LogicalOr</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry30">LogicalXor</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry31">Mantissa</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry34">Minus</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry35">Mul</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw2">MustBeClose</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw3">MustBeComa</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw6">MustBeExpression</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw7">MustBeOpen</a>, <a class="el" href="a05622.html#l00416">nlstop</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry36">Not</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry37">NotEqual</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry38">NotOperator</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw9">NotUnaryOperator</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry39">Number</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry40">Open</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry43">Or</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry44">Plus</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry45">Pow</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry46">Rand</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry50">Sin</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry51">Sinh</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry52">SLeftShift</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry53">Sq</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry54">Sqrt</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry55">SRightShift</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry57">Superior</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry58">SuperiorEqual</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry59">Tan</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry60">Tanh</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry61">Tilde</a>, <a class="el" href="a05679.html#l00257">TReservedWord</a>, <a class="el" href="a05679.html#l00042">TReturnState</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry65">ULeftShift</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry66">URightShift</a>, <a class="el" href="a05646.html#l01132">value</a>, and <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry67">Xor</a>. +<p> +<div class="fragment"><pre>00617 { +00618 <span class="comment">// Array of result</span> +00619 +00620 <a class="code" href="a04558.html#a15">uint</a> exprCount = 0; +00621 <span class="keywordtype">double</span> result[<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]; +00622 vector<double> resultSup; +00623 +00624 <a class="code" href="a04558.html#a15">uint</a> opCount = 0; +00625 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62">TOperator</a> resultOp[<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]; +00626 vector<TOperator> resultOpSup; +00627 +00628 <span class="comment">// Read a token</span> +00629 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (nextToken); +00630 <span class="keywordflow">if</span> (error != <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00631 <span class="keywordflow">return</span> error; +00632 <span class="keywordflow">while</span> (1) +00633 { +00634 <span class="comment">// Unary opertor</span> +00635 <a class="code" href="a04558.html#a15">uint</a> unaryOpCount = 0; +00636 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62">TOperator</a> resultUnaryOp[<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]; +00637 vector<TOperator> resultUnaryOpSup; +00638 +00639 <span class="comment">// Current value</span> +00640 <span class="keywordtype">double</span> <a class="code" href="a04223.html#a658">value</a>; +00641 +00642 <span class="comment">// Unary operator ?</span> +00643 <span class="keywordflow">if</span> ( (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry41">Operator</a>) && ( (<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry34">Minus</a>) || (<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry36">Not</a>) || (<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry61">Tilde</a>) ) ) +00644 { +00645 <span class="comment">// Push the unary operator</span> +00646 <span class="keywordflow">if</span> (unaryOpCount<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>) +00647 resultUnaryOp[unaryOpCount] = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a>; +00648 <span class="keywordflow">else</span> +00649 resultUnaryOpSup.push_back (_Op); +00650 unaryOpCount++; +00651 +00652 <span class="comment">// Read next token</span> +00653 error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (nextToken); +00654 <span class="keywordflow">if</span> (error != <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00655 <span class="keywordflow">return</span> error; +00656 } +00657 +00658 <span class="comment">// Parenthesis ?</span> +00659 <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry40">Open</a>) +00660 { +00661 <span class="comment">// Eval sub expression</span> +00662 error = <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExpra1">evalExpression</a> (value, nextToken, userData); +00663 <span class="keywordflow">if</span> (error == <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00664 { +00665 <span class="keywordflow">if</span> (nextToken != <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8">Close</a>) +00666 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw2">MustBeClose</a>; +00667 } +00668 <span class="keywordflow">else</span> +00669 <span class="keywordflow">return</span> error; +00670 +00671 <span class="comment">// Get next token</span> +00672 error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (nextToken); +00673 <span class="keywordflow">if</span> (error != <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00674 <span class="keywordflow">return</span> error; +00675 } +00676 <span class="comment">// This is a function ?</span> +00677 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry19">Function1</a>) || (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry20">Function2</a>) ) +00678 { +00679 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64">TToken</a> backupedToken = nextToken; +00680 +00681 <span class="comment">// Get the function</span> +00682 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63">TReservedWord</a> reservedWord = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr5">_ReservedWordFound</a>; +00683 +00684 <span class="comment">// Read a token</span> +00685 error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (nextToken); +00686 <span class="keywordflow">if</span> (error == <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00687 { +00688 <span class="comment">// Open ?</span> +00689 <span class="keywordflow">if</span> (nextToken != <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry40">Open</a>) +00690 { +00691 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw7">MustBeOpen</a>; +00692 } +00693 +00694 <span class="comment">// Eval an expression</span> +00695 <span class="keywordtype">double</span> arg0; +00696 error = <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExpra1">evalExpression</a> (arg0, nextToken, userData); +00697 <span class="keywordflow">if</span> (error == <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00698 { +00699 <span class="comment">// 2 arg ?</span> +00700 <span class="keywordflow">if</span> (backupedToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry20">Function2</a>) +00701 { +00702 <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry9">Coma</a>) +00703 { +00704 <span class="comment">// Second argument</span> +00705 <span class="keywordtype">double</span> <a class="code" href="a04223.html#a644">arg1</a>; +00706 error = <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExpra1">evalExpression</a> (arg1, nextToken, userData); +00707 <span class="keywordflow">if</span> (error == <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00708 { +00709 <span class="comment">// Final with close ?</span> +00710 <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8">Close</a>) +00711 { +00712 <span class="keywordflow">switch</span> (reservedWord) +00713 { +00714 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry6">Atan2</a>: +00715 <a class="code" href="a04223.html#a658">value</a> = atan2 (arg0, arg1); +00716 <span class="keywordflow">break</span>; +00717 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry32">Max</a>: +00718 <a class="code" href="a04223.html#a658">value</a> = (arg0><a class="code" href="a04223.html#a644">arg1</a>) ? arg0 : <a class="code" href="a04223.html#a644">arg1</a>; +00719 <span class="keywordflow">break</span>; +00720 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry33">Min</a>: +00721 <a class="code" href="a04223.html#a658">value</a> = (arg0<<a class="code" href="a04223.html#a644">arg1</a>) ? arg0 : <a class="code" href="a04223.html#a644">arg1</a>; +00722 <span class="keywordflow">break</span>; +00723 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry45">Pow</a>: +00724 <a class="code" href="a04223.html#a658">value</a> = pow (arg0, arg1); +00725 <span class="keywordflow">break</span>; +00726 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry46">Rand</a>: +00727 <a class="code" href="a04223.html#a658">value</a> = arg0 + (<a class="code" href="a04223.html#a644">arg1</a>-arg0) * (<span class="keywordtype">double</span>)rand () / (<span class="keywordtype">double</span>)(RAND_MAX+1); +00728 <span class="keywordflow">break</span>; +00729 <span class="keywordflow">default</span>: +00730 <span class="comment">// Can't be hear after getToken</span> +00731 <a class="code" href="a04199.html#a12">nlstop</a>; +00732 } +00733 } +00734 <span class="keywordflow">else</span> +00735 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw2">MustBeClose</a>; +00736 } +00737 <span class="keywordflow">else</span> +00738 <span class="keywordflow">return</span> error; +00739 } +00740 <span class="keywordflow">else</span> +00741 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw3">MustBeComa</a>; +00742 } +00743 <span class="keywordflow">else</span> +00744 { +00745 <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8">Close</a>) +00746 { +00747 <span class="comment">// Eval the function</span> +00748 <span class="keywordflow">switch</span> (reservedWord) +00749 { +00750 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry1">Abs</a>: +00751 <a class="code" href="a04223.html#a658">value</a> = fabs (arg0); +00752 <span class="keywordflow">break</span>; +00753 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry2">Acos</a>: +00754 <a class="code" href="a04223.html#a658">value</a> = acos (arg0); +00755 <span class="keywordflow">break</span>; +00756 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry4">Asin</a>: +00757 <a class="code" href="a04223.html#a658">value</a> = asin (arg0); +00758 <span class="keywordflow">break</span>; +00759 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry5">Atan</a>: +00760 <a class="code" href="a04223.html#a658">value</a> = atan (arg0); +00761 <span class="keywordflow">break</span>; +00762 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry7">Ceil</a>: +00763 <a class="code" href="a04223.html#a658">value</a> = ceil (arg0); +00764 <span class="keywordflow">break</span>; +00765 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry11">Cosh</a>: +00766 <a class="code" href="a04223.html#a658">value</a> = cosh (arg0); +00767 <span class="keywordflow">break</span>; +00768 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry10">Cos</a>: +00769 <a class="code" href="a04223.html#a658">value</a> = cos (arg0); +00770 <span class="keywordflow">break</span>; +00771 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry16">Exponent</a>: +00772 { +00773 <span class="keywordtype">int</span> exponent; +00774 frexp( arg0, &exponent); +00775 <a class="code" href="a04223.html#a658">value</a> = (<span class="keywordtype">double</span>)exponent; +00776 } +00777 <span class="keywordflow">break</span>; +00778 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry15">Exp</a>: +00779 <a class="code" href="a04223.html#a658">value</a> = exp (arg0); +00780 <span class="keywordflow">break</span>; +00781 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry18">Floor</a>: +00782 <a class="code" href="a04223.html#a658">value</a> = floor (arg0); +00783 <span class="keywordflow">break</span>; +00784 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry23">Int</a>: +00785 <a class="code" href="a04223.html#a658">value</a> = (<span class="keywordtype">double</span>)(<span class="keywordtype">int</span>)(arg0); +00786 <span class="keywordflow">break</span>; +00787 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry27">Log10</a>: +00788 <a class="code" href="a04223.html#a658">value</a> = log10 (arg0); +00789 <span class="keywordflow">break</span>; +00790 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry26">Log</a>: +00791 <a class="code" href="a04223.html#a658">value</a> = log (arg0); +00792 <span class="keywordflow">break</span>; +00793 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry31">Mantissa</a>: +00794 { +00795 <span class="keywordtype">int</span> exponent; +00796 <a class="code" href="a04223.html#a658">value</a> = frexp( arg0, &exponent); +00797 } +00798 <span class="keywordflow">break</span>; +00799 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry49">Round</a>: +00800 <a class="code" href="a04223.html#a658">value</a> = floor (arg0 + 0.5); +00801 <span class="keywordflow">break</span>; +00802 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry51">Sinh</a>: +00803 <a class="code" href="a04223.html#a658">value</a> = sinh (arg0); +00804 <span class="keywordflow">break</span>; +00805 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry50">Sin</a>: +00806 <a class="code" href="a04223.html#a658">value</a> = sin (arg0); +00807 <span class="keywordflow">break</span>; +00808 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry54">Sqrt</a>: +00809 <a class="code" href="a04223.html#a658">value</a> = sqrt (arg0); +00810 <span class="keywordflow">break</span>; +00811 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry53">Sq</a>: +00812 <a class="code" href="a04223.html#a658">value</a> = arg0 * arg0; +00813 <span class="keywordflow">break</span>; +00814 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry60">Tanh</a>: +00815 <a class="code" href="a04223.html#a658">value</a> = tanh (arg0); +00816 <span class="keywordflow">break</span>; +00817 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry59">Tan</a>: +00818 <a class="code" href="a04223.html#a658">value</a> = tan (arg0); +00819 <span class="keywordflow">break</span>; +00820 <span class="keywordflow">default</span>: +00821 <span class="comment">// Can't be hear after getToken</span> +00822 <a class="code" href="a04199.html#a12">nlstop</a>; +00823 } +00824 } +00825 <span class="keywordflow">else</span> +00826 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw2">MustBeClose</a>; +00827 } +00828 } +00829 <span class="keywordflow">else</span> +00830 <span class="keywordflow">return</span> error; +00831 } +00832 <span class="keywordflow">else</span> +00833 <span class="keywordflow">return</span> error; +00834 +00835 <span class="comment">// Get next token</span> +00836 error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (nextToken); +00837 <span class="keywordflow">if</span> (error != <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00838 <span class="keywordflow">return</span> error; +00839 } +00840 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry39">Number</a>) +00841 { +00842 <span class="comment">// Save the internal value</span> +00843 <a class="code" href="a04223.html#a658">value</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr7">_Value</a>; +00844 +00845 <span class="comment">// Get next token</span> +00846 error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (nextToken); +00847 <span class="keywordflow">if</span> (error != <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00848 <span class="keywordflow">return</span> error; +00849 } +00850 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry56">String</a>) +00851 { +00852 <span class="comment">// Copy the string</span> +00853 <span class="keywordtype">char</span> internalString[<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry25">InternalStringLen</a>]; +00854 std::string internalStlString; +00855 <span class="keyword">const</span> <span class="keywordtype">char</span> *internalStringPtr; +00856 <span class="keywordflow">if</span> (strlen (_InternalStringPtr) >= <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry25">InternalStringLen</a>-1) +00857 { +00858 internalStlString = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr3">_InternalStringPtr</a>; +00859 internalStringPtr = internalStlString.c_str (); +00860 } +00861 <span class="keywordflow">else</span> +00862 { +00863 strcpy (internalString ,_InternalStringPtr); +00864 internalStringPtr = internalString; +00865 } +00866 +00867 <span class="comment">// Read a token</span> +00868 error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (nextToken); +00869 <span class="keywordflow">if</span> (error == <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00870 { +00871 <span class="comment">// Open ?</span> +00872 <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry40">Open</a>) +00873 { +00874 <span class="comment">// Eval an expression</span> +00875 <span class="keywordtype">double</span> arg0; +00876 error = <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExpra1">evalExpression</a> (arg0, nextToken, userData); +00877 <span class="keywordflow">if</span> (error == <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00878 { +00879 <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry9">Coma</a>) +00880 { +00881 <span class="comment">// Second argument</span> +00882 <span class="keywordtype">double</span> <a class="code" href="a04223.html#a644">arg1</a>; +00883 error = <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExpra1">evalExpression</a> (arg1, nextToken, userData); +00884 <span class="keywordflow">if</span> (error == <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00885 { +00886 <span class="comment">// Final with close ?</span> +00887 <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8">Close</a>) +00888 { +00889 <span class="comment">// Eval the function</span> +00890 error = <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprb1">evalFunction</a> (internalStringPtr, arg0, arg1, value); +00891 <span class="keywordflow">if</span> (error != <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00892 <span class="keywordflow">return</span> error; +00893 +00894 <span class="comment">// Get next token</span> +00895 error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (nextToken); +00896 <span class="keywordflow">if</span> (error != <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00897 <span class="keywordflow">return</span> error; +00898 } +00899 <span class="keywordflow">else</span> +00900 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw2">MustBeClose</a>; +00901 } +00902 <span class="keywordflow">else</span> +00903 <span class="keywordflow">return</span> error; +00904 } +00905 <span class="keywordflow">else</span> +00906 { +00907 <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8">Close</a>) +00908 { +00909 <span class="comment">// Eval the function</span> +00910 error = <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprb1">evalFunction</a> (internalStringPtr, arg0, value); +00911 <span class="keywordflow">if</span> (error != <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00912 <span class="keywordflow">return</span> error; +00913 +00914 <span class="comment">// Get next token</span> +00915 error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (nextToken); +00916 <span class="keywordflow">if</span> (error != <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00917 <span class="keywordflow">return</span> error; +00918 } +00919 <span class="keywordflow">else</span> +00920 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw2">MustBeClose</a>; +00921 } +00922 } +00923 <span class="keywordflow">else</span> +00924 <span class="keywordflow">return</span> error; +00925 } +00926 <span class="keywordflow">else</span> +00927 { +00928 <span class="comment">// This is a user value</span> +00929 error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprb2">evalValue</a> (internalStringPtr, value, userData); +00930 <span class="keywordflow">if</span> (error != <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00931 <span class="keywordflow">return</span> error; +00932 } +00933 } +00934 <span class="keywordflow">else</span> +00935 <span class="keywordflow">return</span> error; +00936 } +00937 <span class="keywordflow">else</span> +00938 { +00939 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw6">MustBeExpression</a>; +00940 } +00941 +00942 <span class="comment">// Eval unary operator</span> +00943 <a class="code" href="a04558.html#a14">sint</a> i; +00944 <span class="keywordflow">for</span> (i=unaryOpCount-1; i>=0; i--) +00945 { +00946 <span class="keywordflow">switch</span> ((i<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>)?resultUnaryOp[i]:resultUnaryOpSup[i-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]) +00947 { +00948 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry36">Not</a>: +00949 <a class="code" href="a04223.html#a658">value</a> = (<span class="keywordtype">double</span>)(<a class="code" href="a04558.html#a15">uint</a>)((floor (value+0.5)==0.0)); +00950 <span class="keywordflow">break</span>; +00951 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry61">Tilde</a>: +00952 <a class="code" href="a04223.html#a658">value</a> = (<span class="keywordtype">double</span>)~((<a class="code" href="a04558.html#a15">uint</a>)floor (value+0.5)); +00953 <span class="keywordflow">break</span>; +00954 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry34">Minus</a>: +00955 <a class="code" href="a04223.html#a658">value</a> = -<a class="code" href="a04223.html#a658">value</a>; +00956 <span class="keywordflow">break</span>; +00957 <span class="keywordflow">default</span>: +00958 <span class="comment">// Can't be hear after getToken</span> +00959 <a class="code" href="a04199.html#a12">nlstop</a>; +00960 } +00961 } +00962 +00963 <span class="comment">// Push the value</span> +00964 <span class="keywordflow">if</span> (exprCount < <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>) +00965 result[exprCount] = <a class="code" href="a04223.html#a658">value</a>; +00966 <span class="keywordflow">else</span> +00967 resultSup.push_back (value); +00968 exprCount++; +00969 +00970 <span class="comment">// Look for an operator</span> +00971 <span class="comment">// Operator ?</span> +00972 <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry41">Operator</a>) +00973 { +00974 <span class="comment">// Yes, push it</span> +00975 <span class="keywordflow">if</span> (opCount < <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>) +00976 resultOp[opCount] = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a>; +00977 <span class="keywordflow">else</span> +00978 resultOpSup.push_back (_Op); +00979 opCount++; +00980 } +00981 <span class="keywordflow">else</span> +00982 { +00983 <span class="comment">// Exit the evaluate loop</span> +00984 <span class="keywordflow">break</span>; +00985 } +00986 +00987 <span class="comment">// Next token</span> +00988 error = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd1">getNextToken</a> (nextToken); +00989 } +00990 +00991 <span class="comment">// Reduce the expression</span> +00992 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a566">index</a> = 1; +00993 <span class="keywordflow">while</span> (exprCount != 1) +00994 { +00995 <span class="comment">// Reduct ?</span> +00996 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62">TOperator</a> before = (((<a class="code" href="a04223.html#a566">index</a>-1)<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>)?resultOp[<a class="code" href="a04223.html#a566">index</a>-1]:resultOpSup[<a class="code" href="a04223.html#a566">index</a>-1-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]); +00997 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62">TOperator</a> after = (<a class="code" href="a04223.html#a566">index</a> < opCount)?(((<a class="code" href="a04223.html#a566">index</a>)<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>)?resultOp[<a class="code" href="a04223.html#a566">index</a>]:resultOpSup[<a class="code" href="a04223.html#a566">index</a>-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]):<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry38">NotOperator</a>; +00998 <span class="keywordflow">if</span> ((<a class="code" href="a04223.html#a566">index</a> == opCount) || (<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprv2">_OperatorPrecedence</a>[before] <= <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprv2">_OperatorPrecedence</a>[after])) +00999 { +01000 <span class="comment">// Eval the value</span> +01001 <span class="keywordtype">double</span> &v0 = ((<a class="code" href="a04223.html#a566">index</a>-1)<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>)?result[<a class="code" href="a04223.html#a566">index</a>-1]:resultSup[<a class="code" href="a04223.html#a566">index</a>-1-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]; +01002 <span class="keywordtype">double</span> &v1 = ((<a class="code" href="a04223.html#a566">index</a>)<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>)?result[<a class="code" href="a04223.html#a566">index</a>]:resultSup[<a class="code" href="a04223.html#a566">index</a>-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]; +01003 +01004 <span class="comment">// Choose the operator</span> +01005 <span class="keywordflow">switch</span> (before) +01006 { +01007 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry36">Not</a>: +01008 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry61">Tilde</a>: +01009 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw9">NotUnaryOperator</a>; +01010 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry35">Mul</a>: +01011 v0 *= v1; +01012 <span class="keywordflow">break</span>; +01013 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry12">Div</a>: +01014 <span class="keywordflow">if</span> (v1 == 0) +01015 { +01016 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw0">DividByZero</a>; +01017 } +01018 <span class="keywordflow">else</span> +01019 { +01020 v0 /= v1; +01021 } +01022 <span class="keywordflow">break</span>; +01023 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry47">Remainder</a>: +01024 v0 = fmod (v0, v1); +01025 <span class="keywordflow">break</span>; +01026 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry44">Plus</a>: +01027 v0 += v1; +01028 <span class="keywordflow">break</span>; +01029 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry34">Minus</a>: +01030 v0 -= v1; +01031 <span class="keywordflow">break</span>; +01032 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry65">ULeftShift</a>: +01033 v0 = (<span class="keywordtype">double</span>)(((<a class="code" href="a04558.html#a15">uint</a>)floor (v0 + 0.5))<<((<a class="code" href="a04558.html#a15">uint</a>)floor (v1 + 0.5))); +01034 <span class="keywordflow">break</span>; +01035 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry66">URightShift</a>: +01036 v0 = (<span class="keywordtype">double</span>)(((<a class="code" href="a04558.html#a15">uint</a>)floor (v0 + 0.5))>>((<a class="code" href="a04558.html#a15">uint</a>)floor (v1 + 0.5))); +01037 <span class="keywordflow">break</span>; +01038 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry52">SLeftShift</a>: +01039 v0 = (<span class="keywordtype">double</span>)(((<a class="code" href="a04558.html#a14">sint</a>)floor (v0 + 0.5))<<((<a class="code" href="a04558.html#a14">sint</a>)floor (v1 + 0.5))); +01040 <span class="keywordflow">break</span>; +01041 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry55">SRightShift</a>: +01042 v0 = (<span class="keywordtype">double</span>)(((<a class="code" href="a04558.html#a14">sint</a>)floor (v0 + 0.5))>>((<a class="code" href="a04558.html#a14">sint</a>)floor (v1 + 0.5))); +01043 <span class="keywordflow">break</span>; +01044 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry21">Inferior</a>: +01045 v0 = (v0<v1)?1.0:0.0; +01046 <span class="keywordflow">break</span>; +01047 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry22">InferiorEqual</a>: +01048 v0 = (v0<=v1)?1.0:0.0; +01049 <span class="keywordflow">break</span>; +01050 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry57">Superior</a>: +01051 v0 = (v0>v1)?1.0:0.0; +01052 <span class="keywordflow">break</span>; +01053 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry58">SuperiorEqual</a>: +01054 v0 = (v0>=v1)?1.0:0.0; +01055 <span class="keywordflow">break</span>; +01056 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry14">Equal</a>: +01057 v0 = (v0==v1)?1.0:0.0; +01058 <span class="keywordflow">break</span>; +01059 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry37">NotEqual</a>: +01060 v0 = (v0!=v1)?1.0:0.0; +01061 <span class="keywordflow">break</span>; +01062 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry3">And</a>: +01063 v0 = (<span class="keywordtype">double</span>)(((<a class="code" href="a04558.html#a15">uint</a>)floor (v0 + 0.5)) & ((<a class="code" href="a04558.html#a15">uint</a>)floor (v1 + 0.5))); +01064 <span class="keywordflow">break</span>; +01065 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry43">Or</a>: +01066 v0 = (<span class="keywordtype">double</span>)(((<a class="code" href="a04558.html#a15">uint</a>)floor (v0 + 0.5)) | ((<a class="code" href="a04558.html#a15">uint</a>)floor (v1 + 0.5))); +01067 <span class="keywordflow">break</span>; +01068 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry67">Xor</a>: +01069 v0 = (<span class="keywordtype">double</span>)(((<a class="code" href="a04558.html#a15">uint</a>)floor (v0 + 0.5)) ^ ((<a class="code" href="a04558.html#a15">uint</a>)floor (v1 + 0.5))); +01070 <span class="keywordflow">break</span>; +01071 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry28">LogicalAnd</a>: +01072 v0 = (<span class="keywordtype">double</span>)(<a class="code" href="a04558.html#a15">uint</a>)((floor (v0 + 0.5) != 0.0) && (floor (v1 + 0.5) != 0.0)); +01073 <span class="keywordflow">break</span>; +01074 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry29">LogicalOr</a>: +01075 v0 = (<span class="keywordtype">double</span>)(<a class="code" href="a04558.html#a15">uint</a>)((floor (v0 + 0.5) != 0.0) || (floor (v1 + 0.5) != 0.0)); +01076 <span class="keywordflow">break</span>; +01077 <span class="keywordflow">case</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry30">LogicalXor</a>: +01078 { +01079 <span class="keywordtype">bool</span> b0 = floor (v0 + 0.5) != 0.0; +01080 <span class="keywordtype">bool</span> b1 = floor (v1 + 0.5) != 0.0; +01081 v0 = (<span class="keywordtype">double</span>)(<a class="code" href="a04558.html#a15">uint</a>)((b0&&!b1) || ((!b0)&&b1)); +01082 } +01083 <span class="keywordflow">break</span>; +01084 <span class="keywordflow">default</span>: +01085 <a class="code" href="a04199.html#a12">nlstop</a>; +01086 } +01087 +01088 <span class="comment">// Decal others values</span> +01089 <a class="code" href="a04558.html#a15">uint</a> i = <a class="code" href="a04223.html#a566">index</a>; +01090 <span class="keywordflow">for</span> (; i<exprCount-1; i++) +01091 { +01092 <span class="comment">// Copy</span> +01093 <span class="keywordflow">if</span> (i<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>) +01094 result[i] = (i+1<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>)?result[i+1]:resultSup[i+1-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]; +01095 <span class="keywordflow">else</span> +01096 resultSup[i-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>] = (i+1<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>)?result[i+1]:resultSup[i+1-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]; +01097 } +01098 exprCount--; +01099 +01100 <span class="comment">// Decal operators</span> +01101 i = <a class="code" href="a04223.html#a566">index</a>-1; +01102 <span class="keywordflow">for</span> (; i<opCount-1; i++) +01103 { +01104 <span class="comment">// Copy</span> +01105 <span class="keywordflow">if</span> (i<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>) +01106 resultOp[i] = (i+1<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>)?resultOp[i+1]:resultOpSup[i+1-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]; +01107 <span class="keywordflow">else</span> +01108 resultOpSup[i-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>] = (i+1<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>)?resultOp[i+1]:resultOpSup[i+1-<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry24">InternalOperator</a>]; +01109 +01110 } +01111 opCount--; +01112 +01113 <span class="comment">// Last one ?</span> +01114 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a566">index</a> > 1) +01115 <a class="code" href="a04223.html#a566">index</a>--; +01116 } +01117 <span class="keywordflow">else</span> +01118 <a class="code" href="a04223.html#a566">index</a>++; +01119 } +01120 +01121 finalResult = result[0]; +01122 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +01123 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLGEORGES_1_1CMyEvalNumExpra1" doxytag="NLMISC::CEvalNumExpr::evalExpression" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">CEvalNumExpr::TReturnState</a> NLMISC::CEvalNumExpr::evalExpression </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname" nowrap> <em>expression</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>double & </td> + <td class="mdname" nowrap> <em>result</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>int * </td> + <td class="mdname" nowrap> <em>errorIndex</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>userData</em> = 0</td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Evaluate a numerical expression.<p> +Doesn't allocate heap memory for common complexity expression.<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>expression</em> </td><td>is an expression string. See the expression grammar. </td></tr> + <tr><td valign=top><em>result</em> </td><td>is filled with the result if the function returns "NoError". </td></tr> + <tr><td valign=top><em>errorIndex</em> </td><td>is a pointer on an integer value filled with the index of the parsing error in the input string if function doesn't return "NoError". This value can be NULL. </td></tr> + <tr><td valign=top><em>userData</em> </td><td>is a user data used by user eval function </td></tr> + </table> +</dl> +<dl compact><dt><b>Returns:</b></dt><dd>NoError if the expression has been parsed. Result is filled with the evaluated value.</dd></dl> +This expression must follow the following grammar with the following evaluation priority:<p> +expression: '-' expression | '!' expression // Returns true if a equal false, else false (logical not) | '~' expression // Returns ~ round(a) (bitwise not) | '(' expression ')' | expression operator expression | function1 '(' expression ')' | function2 '(' expression ',' expression ')' | number | constant | string // User defined value, evaluated by the <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprb2">evalValue()</a> callback<p> +operator: '*' // Calculates (a * b) | '/' // Calculates (a / b) | '%' // Calculates the remainder of (a / b) | '+' // Calculates (a + b) | '-' // Calculates (a - b) | '<<' // Returns round(a) left 32 bits unsigned shift by round(b) | '>>' // Returns round(a) right 32 bits unsigned shift by round(b) | '<-' // Returns round(a) left 32 bits signed shift by round(b) | '->' // Returns round(a) right 32 bits signed shift by round(b) | '<' // Returns true if a is strictly smaller than b | '<=' // Returns true if a is smaller or equal than b | '>' // Returns true if a is strictly bigger than b | '>=' // Returns true if a is bigger or equal than b | '==' // Returns true if a equal b, else returns false (warning, performs a floating point comparison) | '!=' // Returns false if a equal b, else returns true (warning, performs a floating point comparison) | '&' // Returns round(a) & round(b) over 32 bits | '|' // Returns round(a) | round(b) over 32 bits | '^' // Returns round(a) ^ round(b) over 32 bits | '&&' // Returns true if a equal true and b equal true else returns false | '||' // Returns true if a equal true or b equal true else returns false | '^^' // Returns true if a equal true and b equal false, or, a equal false and b equal 1.0, else returns false<p> +function1: abs // Calculates the absolute value | acos // Calculates the arccosine | asin // Calculates the arcsine | atan // Calculates the arctangent | ceil // Calculates the ceiling of a value ( ceil(-1.1) = -1, ceil(1.1) = 2 ) | cos // Calculates the cosine | cosh // Calculates the hyperbolic cosine | exp // Calculates the exponential | exponent // Calculates the exponent of a floating point value | floor // Calculates the floor of a value ( floor(-1.1) = -2, floor(1.1) = 1 ) | int // Calculates the C style integer value ( int(-1.6) = -1, int(1.6) = 1 ) | log // Calculates logarithms | log10 // Calculates base-10 logarithms | mantissa // Calculates the mantissa of a floating point value | round // Calculates the nearest integer value ( round(-1.6) = -2, round(1.1) = 1 ) | sin // Calculate sines | sinh // Calculate hyperbolic sines | sq // Calculates the square | sqrt // Calculates the square root | tan // Calculates the tangent | tanh // Calculates the hyperbolic tangent | string // User defined one arg function, evaluated by the evalfunction() callback<p> +function2: max // Returns the larger of two values | min // Returns the smaller of two values | atan2 // Calculates the arctangent of arg0/arg1 | pow // Calculates a raised at the power of b | rand // Calculates a pseudo random value (arg0 <= randomValue < arg1) | string // User defined two args function, evaluated by the evalfunction() callback<p> +number: [0-9]+ // Unsigned decimal integer | "0x"[0-9a-fA-F]+ // Unsigned hexadecimal integer | "0"[0-7]+ // Unsigned octal integer | [0-9]*.[0-9]+ // Unsigned floating point value | [0-9]*.[0-9]+[eE]-?[0-9]*.[0-9]+ // Unsigned floating point value with signed exponent<p> +constant: e // 2.7182818284590452353602874713527 | pi // 3.1415926535897932384626433832795<p> +string: [^ 0-9<br> +/\*-+=<>&|\^!%~\(\)\.,\"][^ \t\n/\*-+=<>&|\^!%~\(\)\.,\"]* // Labels ($foo, #foo01, _001) | \"[]+\" // All kind of labels between double quotes "123456" "foo.foo[12]"<p> +Operator precedence:<p> +0 - unary operator (-, ~, !) 1 - *, /, 2 - +, -, 3 - <<, >>, <-, -> 4 - <, <=, >, >= 5 - ==, != 6 - & 7 - | 8 - ^ 9 - && 10 - || 11 - ^^ +<p> +Definition at line <a class="el" href="a05678.html#l00586">586</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +References <a class="el" href="a05679.html#l00297">_ExprPtr</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw5">MustBeEnd</a>, <a class="el" href="a05679.html#l00042">TReturnState</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00616">evalExpression()</a>, and <a class="el" href="a06586.html#l00339">NLGEORGES::CMyEvalNumExpr::evalValue()</a>. +<p> +<div class="fragment"><pre>00588 { +00589 <span class="comment">// Init the ptr</span> +00590 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr0">_ExprPtr</a> = expression; +00591 +00592 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64">TToken</a> nextToken; +00593 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> error = <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExpra1">evalExpression</a> (result, nextToken, userData); +00594 <span class="keywordflow">if</span> (error == <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00595 { +00596 <span class="comment">// The end ?</span> +00597 <span class="keywordflow">if</span> (nextToken == <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry13">End</a>) +00598 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00599 <span class="keywordflow">else</span> +00600 { +00601 <span class="keywordflow">if</span> (errorIndex) +00602 *errorIndex = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr0">_ExprPtr</a> - expression; +00603 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw5">MustBeEnd</a>; +00604 } +00605 } +00606 <span class="keywordflow">else</span> +00607 { +00608 <span class="keywordflow">if</span> (errorIndex) +00609 *errorIndex = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr0">_ExprPtr</a> - expression; +00610 <span class="keywordflow">return</span> error; +00611 } +00612 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprb0" doxytag="NLMISC::CEvalNumExpr::evalFunction" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">CEvalNumExpr::TReturnState</a> NLMISC::CEvalNumExpr::evalFunction </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname" nowrap> <em>funcName</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>double </td> + <td class="mdname" nowrap> <em>arg0</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>double </td> + <td class="mdname" nowrap> <em>arg1</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>double & </td> + <td class="mdname" nowrap> <em>result</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [protected, virtual]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05678.html#l01197">1197</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +References <a class="el" href="a05646.html#l01119">arg1</a>, and <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw13">UnkownFunction</a>. +<p> +<div class="fragment"><pre>01198 { +01199 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw13">UnkownFunction</a>; +01200 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLGEORGES_1_1CMyEvalNumExprb1" doxytag="NLMISC::CEvalNumExpr::evalFunction" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">CEvalNumExpr::TReturnState</a> NLMISC::CEvalNumExpr::evalFunction </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname" nowrap> <em>funcName</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>double </td> + <td class="mdname" nowrap> <em>arg0</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>double & </td> + <td class="mdname" nowrap> <em>result</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [protected, virtual]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Eval a user defined function. Default implementation returns UnkownFunction. The user can parse the function name and fill the result double and return NoError, UnkownFunction or FunctionError.<p> +To convert double argu in boolean argu, use (round (value) != 0.0) ? true : false<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>funcName</em> </td><td>is the name of the function to evaluate. </td></tr> + <tr><td valign=top><em>arg0</em> </td><td>is the first parameter passed to the function. </td></tr> + <tr><td valign=top><em>arg1</em> </td><td>is the second parameter passed to the function. </td></tr> + <tr><td valign=top><em>result</em> </td><td>is the result to fill if the value has been succesfully parsed. </td></tr> + </table> +</dl> +<dl compact><dt><b>Returns:</b></dt><dd>UnkownFunction if the function doesn't exist, FunctionError if the function evaluation failed, NoError if it has been parsed.</dd></dl> + +<p> +Definition at line <a class="el" href="a05678.html#l01190">1190</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +References <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw13">UnkownFunction</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00616">evalExpression()</a>. +<p> +<div class="fragment"><pre>01191 { +01192 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw13">UnkownFunction</a>; +01193 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprb2" doxytag="NLMISC::CEvalNumExpr::evalValue" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">CEvalNumExpr::TReturnState</a> NLMISC::CEvalNumExpr::evalValue </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname" nowrap> <em>value</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>double & </td> + <td class="mdname" nowrap> <em>result</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>userData</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [protected, virtual]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Overridable functions. +<p> +Eval a user defined value. Default implementation returns UnkownValue. The user can parse the value and fill the result double and return NoError, UnkownValue or ValueError.<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>value</em> </td><td>is the value to parse. </td></tr> + <tr><td valign=top><em>result</em> </td><td>is the result to fill if the value has been succesfully parsed. </td></tr> + <tr><td valign=top><em>userData</em> </td><td>is a user data used by user eval function. </td></tr> + </table> +</dl> +<dl compact><dt><b>Returns:</b></dt><dd>UnkownValue if the value is not known, ValueError is the value evaluation failed or NoError if it has been parsed.</dd></dl> + +<p> +Reimplemented in <a class="el" href="a02979.html#NLGEORGES_1_1CMyEvalNumExpra2">NLGEORGES::CMyEvalNumExpr</a>. +<p> +Definition at line <a class="el" href="a05678.html#l01183">1183</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +References <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw15">UnkownValue</a>, and <a class="el" href="a05646.html#l01132">value</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00616">evalExpression()</a>, and <a class="el" href="a06586.html#l00339">NLGEORGES::CMyEvalNumExpr::evalValue()</a>. +<p> +<div class="fragment"><pre>01184 { +01185 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw15">UnkownValue</a>; +01186 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLGEORGES_1_1CMyEvalNumExpra3" doxytag="NLMISC::CEvalNumExpr::getErrorString" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const char * NLMISC::CEvalNumExpr::getErrorString </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> </td> + <td class="mdname1" valign="top" nowrap> <em>state</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Get error string. +<p> + +<p> +Definition at line <a class="el" href="a05678.html#l01289">1289</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +References <a class="el" href="a05678.html#l01268">_ErrorString</a>. +<p> +<div class="fragment"><pre>01290 { +01291 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprv0">_ErrorString</a>[state]; +01292 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprd1" doxytag="NLMISC::CEvalNumExpr::getNextToken" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">CEvalNumExpr::TReturnState</a> NLMISC::CEvalNumExpr::getNextToken </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64">TToken</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>token</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [private]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Internal functions Get the next token. +<p> + +<p> +Definition at line <a class="el" href="a05678.html#l00096">96</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +References <a class="el" href="a05679.html#l00297">_ExprPtr</a>, <a class="el" href="a05679.html#l00318">_InternalStlString</a>, <a class="el" href="a05679.html#l00317">_InternalString</a>, <a class="el" href="a05679.html#l00319">_InternalStringPtr</a>, <a class="el" href="a05678.html#l01155">_OperatorArray</a>, <a class="el" href="a05678.html#l01204">_ReservedWord</a>, <a class="el" href="a05679.html#l00314">_ReservedWordFound</a>, <a class="el" href="a05678.html#l01236">_ReservedWordToken</a>, <a class="el" href="a05678.html#l01169">_StringChar</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry3">And</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8">Close</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry9">Coma</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry14">Equal</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry17">ExtOperator</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry21">Inferior</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry22">InferiorEqual</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry25">InternalStringLen</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry28">LogicalAnd</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry29">LogicalOr</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry30">LogicalXor</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry34">Minus</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw4">MustBeDoubleQuote</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry36">Not</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry37">NotEqual</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry38">NotOperator</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry39">Number</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw10">NumberSyntaxError</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry40">Open</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry43">Or</a>, <a class="el" href="a05678.html#l00037">readDecimal()</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry48">ReservedWordCount</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05646.html#l00645">size</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry52">SLeftShift</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry55">SRightShift</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry57">Superior</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry58">SuperiorEqual</a>, <a class="el" href="a05679.html#l00257">TReservedWord</a>, <a class="el" href="a05679.html#l00042">TReturnState</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry65">ULeftShift</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw14">UnkownOperator</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry66">URightShift</a>, and <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry67">Xor</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00616">evalExpression()</a>. +<p> +<div class="fragment"><pre>00097 { +00098 <span class="comment">// Get the current char</span> +00099 <a class="code" href="a04558.html#a7">uint8</a> currentChar = *<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr0">_ExprPtr</a>; +00100 +00101 <span class="comment">// Skip space</span> +00102 <span class="keywordflow">while</span> ((currentChar!=0) && (currentChar<=0x20)) +00103 { +00104 _ExprPtr++; +00105 currentChar = *_ExprPtr; +00106 } +00107 +00108 <span class="comment">// Can be an operator ?</span> +00109 <span class="keywordflow">if</span> (currentChar <= 128) +00110 { +00111 <span class="comment">// Get the operator</span> +00112 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprv1">_OperatorArray</a>[currentChar]; +00113 +00114 <span class="comment">// Is an operator ?</span> +00115 <span class="keywordflow">if</span> (<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> != <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry38">NotOperator</a>) +00116 { +00117 <span class="comment">// It is an operator</span> +00118 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry41">Operator</a>; +00119 +00120 <span class="comment">// Is a 2 characters operator ?</span> +00121 <span class="keywordflow">if</span> (<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> != <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry17">ExtOperator</a>) +00122 { +00123 <span class="comment">// Return next character</span> +00124 _ExprPtr++; +00125 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00126 } +00127 <span class="keywordflow">else</span> +00128 { +00129 <span class="comment">// Have a second character ?</span> +00130 <span class="keywordtype">char</span> secondChar = *(_ExprPtr+1); +00131 +00132 <span class="comment">// What kind of 1st character</span> +00133 <span class="keywordflow">switch</span> (currentChar) +00134 { +00135 <span class="keywordflow">case</span> <span class="charliteral">'!'</span>: +00136 <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'='</span>) +00137 { +00138 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry37">NotEqual</a>; +00139 _ExprPtr+=2; +00140 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00141 } +00142 <span class="keywordflow">else</span> +00143 { +00144 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry36">Not</a>; +00145 _ExprPtr++; +00146 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00147 } +00148 <span class="keywordflow">case</span> <span class="charliteral">'&'</span>: +00149 <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'&'</span>) +00150 { +00151 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry28">LogicalAnd</a>; +00152 _ExprPtr+=2; +00153 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00154 } +00155 <span class="keywordflow">else</span> +00156 { +00157 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry3">And</a>; +00158 _ExprPtr+=1; +00159 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00160 } +00161 <span class="keywordflow">case</span> <span class="charliteral">'-'</span>: +00162 <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'>'</span>) +00163 { +00164 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry55">SRightShift</a>; +00165 _ExprPtr+=2; +00166 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00167 } +00168 <span class="keywordflow">else</span> +00169 { +00170 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry34">Minus</a>; +00171 _ExprPtr++; +00172 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00173 } +00174 <span class="keywordflow">case</span> <span class="charliteral">'<'</span>: +00175 <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'<'</span>) +00176 { +00177 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry65">ULeftShift</a>; +00178 _ExprPtr+=2; +00179 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00180 } +00181 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'='</span>) +00182 { +00183 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry22">InferiorEqual</a>; +00184 _ExprPtr+=2; +00185 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00186 } +00187 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'-'</span>) +00188 { +00189 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry52">SLeftShift</a>; +00190 _ExprPtr+=2; +00191 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00192 } +00193 <span class="keywordflow">else</span> +00194 { +00195 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry21">Inferior</a>; +00196 _ExprPtr+=1; +00197 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00198 } +00199 <span class="keywordflow">case</span> <span class="charliteral">'='</span>: +00200 <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'='</span>) +00201 { +00202 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry14">Equal</a>; +00203 _ExprPtr+=2; +00204 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00205 } +00206 <span class="keywordflow">case</span> <span class="charliteral">'>'</span>: +00207 <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'>'</span>) +00208 { +00209 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry66">URightShift</a>; +00210 _ExprPtr+=2; +00211 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00212 } +00213 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'='</span>) +00214 { +00215 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry58">SuperiorEqual</a>; +00216 _ExprPtr+=2; +00217 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00218 } +00219 <span class="keywordflow">else</span> +00220 { +00221 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry57">Superior</a>; +00222 _ExprPtr+=1; +00223 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00224 } +00225 <span class="keywordflow">case</span> <span class="charliteral">'^'</span>: +00226 <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'^'</span>) +00227 { +00228 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry30">LogicalXor</a>; +00229 _ExprPtr+=2; +00230 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00231 } +00232 <span class="keywordflow">else</span> +00233 { +00234 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry67">Xor</a>; +00235 _ExprPtr+=1; +00236 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00237 } +00238 <span class="keywordflow">case</span> <span class="charliteral">'|'</span>: +00239 <span class="keywordflow">if</span> (secondChar == <span class="charliteral">'|'</span>) +00240 { +00241 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry29">LogicalOr</a>; +00242 _ExprPtr+=2; +00243 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00244 } +00245 <span class="keywordflow">else</span> +00246 { +00247 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr4">_Op</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry43">Or</a>; +00248 _ExprPtr+=1; +00249 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00250 } +00251 } +00252 +00253 <span class="comment">// Can't found the operator</span> +00254 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw14">UnkownOperator</a>; +00255 } +00256 } +00257 <span class="comment">// Is End, '(', ')', '.' ?</span> +00258 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (currentChar == 0) +00259 { +00260 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry13">End</a>; +00261 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00262 } +00263 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (currentChar == <span class="charliteral">'('</span>) +00264 { +00265 _ExprPtr++; +00266 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry40">Open</a>; +00267 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00268 } +00269 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (currentChar == <span class="charliteral">')'</span>) +00270 { +00271 _ExprPtr++; +00272 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry8">Close</a>; +00273 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00274 } +00275 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (currentChar == <span class="charliteral">','</span>) +00276 { +00277 _ExprPtr++; +00278 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry9">Coma</a>; +00279 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00280 } +00281 <span class="comment">// Is a number ?</span> +00282 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((currentChar >= <span class="charliteral">'0'</span>) && (currentChar <= <span class="charliteral">'9'</span>) || (currentChar == <span class="charliteral">'.'</span>)) +00283 { +00284 <span class="comment">// This is a number</span> +00285 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry39">Number</a>; +00286 +00287 <span class="comment">// Have a second character ?</span> +00288 <span class="keywordtype">char</span> secondChar = *(_ExprPtr+1); +00289 +00290 <span class="comment">// Is an hexadecimal value ?</span> +00291 <span class="keywordflow">if</span> ((currentChar == <span class="charliteral">'0'</span>) && (secondChar == <span class="charliteral">'x'</span>)) +00292 { +00293 <span class="comment">// Go to the number</span> +00294 _ExprPtr +=2; +00295 currentChar = *_ExprPtr; +00296 +00297 <span class="comment">// Registered values</span> +00298 <span class="keyword">register</span> <span class="keywordtype">double</span> regValue = 0; +00299 <span class="keywordflow">if</span> ((currentChar >= <span class="charliteral">'0'</span>) && (currentChar <= <span class="charliteral">'9'</span>)) +00300 { +00301 regValue += (currentChar - <span class="charliteral">'0'</span>); +00302 } +00303 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((currentChar >= <span class="charliteral">'a'</span>) && (currentChar <= <span class="charliteral">'f'</span>)) +00304 { +00305 regValue += (currentChar - <span class="charliteral">'a'</span> + 10); +00306 } +00307 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((currentChar >= <span class="charliteral">'A'</span>) && (currentChar <= <span class="charliteral">'F'</span>)) +00308 { +00309 regValue += (currentChar - <span class="charliteral">'A'</span> + 10); +00310 } +00311 <span class="keywordflow">else</span> +00312 { +00313 <span class="comment">// Number syntax error</span> +00314 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw10">NumberSyntaxError</a>; +00315 } +00316 _ExprPtr++; +00317 currentChar = *_ExprPtr; +00318 +00319 <span class="comment">// For each values</span> +00320 <span class="keywordflow">while</span> (1) +00321 { +00322 <span class="keywordflow">if</span> ((currentChar >= <span class="charliteral">'0'</span>) && (currentChar <= <span class="charliteral">'9'</span>)) +00323 { +00324 regValue *= 16; +00325 regValue += (currentChar - <span class="charliteral">'0'</span>); +00326 } +00327 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((currentChar >= <span class="charliteral">'a'</span>) && (currentChar <= <span class="charliteral">'f'</span>)) +00328 { +00329 regValue *= 16; +00330 regValue += (currentChar - <span class="charliteral">'a'</span> + 10); +00331 } +00332 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((currentChar >= <span class="charliteral">'A'</span>) && (currentChar <= <span class="charliteral">'F'</span>)) +00333 { +00334 regValue *= 16; +00335 regValue += (currentChar - <span class="charliteral">'A'</span> + 10); +00336 } +00337 <span class="keywordflow">else</span> +00338 { +00339 <span class="comment">// Stop</span> +00340 <span class="keywordflow">break</span>; +00341 } +00342 +00343 <span class="comment">// Next char</span> +00344 _ExprPtr++; +00345 currentChar = *_ExprPtr; +00346 } +00347 +00348 <span class="comment">// Store value</span> +00349 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr7">_Value</a> = regValue; +00350 +00351 <span class="comment">// Number ok</span> +00352 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00353 } +00354 <span class="comment">// Is an octal value ?</span> +00355 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((currentChar == <span class="charliteral">'0'</span>) && (secondChar >= <span class="charliteral">'0'</span>) && (secondChar <= <span class="charliteral">'9'</span>)) +00356 { +00357 <span class="comment">// Go to the number</span> +00358 _ExprPtr ++; +00359 currentChar = *_ExprPtr; +00360 +00361 <span class="comment">// Registered values</span> +00362 <span class="keyword">register</span> <span class="keywordtype">double</span> regValue = 0; +00363 +00364 <span class="comment">// Check octal number</span> +00365 <span class="keywordflow">if</span> (currentChar > <span class="charliteral">'7'</span>) +00366 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw10">NumberSyntaxError</a>; +00367 +00368 <span class="comment">// Read the first value</span> +00369 regValue += (currentChar - <span class="charliteral">'0'</span>); +00370 _ExprPtr++; +00371 currentChar = *_ExprPtr; +00372 +00373 <span class="comment">// For each values</span> +00374 <span class="keywordflow">while</span> ((currentChar >= <span class="charliteral">'0'</span>) && (currentChar <= <span class="charliteral">'9'</span>)) +00375 { +00376 <span class="comment">// Check octal number</span> +00377 <span class="keywordflow">if</span> (currentChar > <span class="charliteral">'7'</span>) +00378 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw10">NumberSyntaxError</a>; +00379 +00380 regValue *= 8; +00381 regValue += (currentChar - <span class="charliteral">'0'</span>); +00382 +00383 <span class="comment">// Next char</span> +00384 _ExprPtr++; +00385 currentChar = *_ExprPtr; +00386 } +00387 +00388 <span class="comment">// Store value</span> +00389 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr7">_Value</a> = regValue; +00390 +00391 <span class="comment">// Number ok</span> +00392 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00393 } +00394 <span class="comment">// It is a decimal value</span> +00395 <span class="keywordflow">else</span> +00396 { +00397 <span class="comment">// Read value</span> +00398 <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> state = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd2">readDecimal</a> (_Value); +00399 <span class="keywordflow">if</span> (state == <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00400 { +00401 <span class="comment">// Exponent ?</span> +00402 currentChar = *_ExprPtr; +00403 <span class="keywordflow">if</span> ( (currentChar == <span class="charliteral">'e'</span>) || (currentChar == <span class="charliteral">'E'</span>) ) +00404 { +00405 <span class="comment">// Next char</span> +00406 _ExprPtr++; +00407 +00408 <span class="comment">// Minus ?</span> +00409 <span class="keywordtype">bool</span> negative = <span class="keyword">false</span>; +00410 <span class="keywordflow">if</span> (*_ExprPtr == <span class="charliteral">'-'</span>) +00411 { +00412 negative = <span class="keyword">true</span>; +00413 _ExprPtr++; +00414 } +00415 +00416 <span class="comment">// Read value</span> +00417 <span class="keywordtype">double</span> exponent; +00418 state = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd2">readDecimal</a> (exponent); +00419 <span class="keywordflow">if</span> (state == <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>) +00420 { +00421 <span class="comment">// Negative value ?</span> +00422 <span class="keywordflow">if</span> (negative) +00423 exponent = -exponent; +00424 +00425 <span class="comment">// Raise 10 at the power of</span> +00426 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr7">_Value</a> *= pow (10.0, exponent); +00427 } +00428 <span class="keywordflow">else</span> +00429 { +00430 <span class="keywordflow">return</span> state; +00431 } +00432 } +00433 +00434 <span class="comment">// Number ok</span> +00435 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00436 } +00437 <span class="keywordflow">else</span> +00438 { +00439 <span class="keywordflow">return</span> state; +00440 } +00441 } +00442 } +00443 <span class="comment">// Is a string ?</span> +00444 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (currentChar == <span class="charliteral">'"'</span>) +00445 { +00446 <span class="comment">// Look for the end of the string</span> +00447 _ExprPtr++; +00448 currentChar = *_ExprPtr; +00449 <span class="keyword">const</span> <span class="keywordtype">char</span> *start = _ExprPtr; +00450 <span class="keywordflow">while</span> ( (currentChar != 0) && (currentChar != <span class="charliteral">'"'</span>) ) +00451 { +00452 _ExprPtr++; +00453 currentChar = *_ExprPtr; +00454 } +00455 +00456 <span class="comment">// End reached ?</span> +00457 <span class="keywordflow">if</span> (currentChar == 0) +00458 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw4">MustBeDoubleQuote</a>; +00459 +00460 <span class="comment">// This is a user string, copy the string</span> +00461 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a587">size</a> = _ExprPtr - start; +00462 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a587">size</a> >= (<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry25">InternalStringLen</a>-1)) +00463 { +00464 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr1">_InternalStlString</a>.resize (size); +00465 <a class="code" href="a04558.html#a15">uint</a> i; +00466 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a04223.html#a587">size</a>; i++) +00467 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr1">_InternalStlString</a>[i] = start[i]; +00468 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr3">_InternalStringPtr</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr1">_InternalStlString</a>.c_str (); +00469 } +00470 <span class="keywordflow">else</span> +00471 { +00472 memcpy (_InternalString, start, size); +00473 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr2">_InternalString</a>[<a class="code" href="a04223.html#a587">size</a>] = 0; +00474 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr3">_InternalStringPtr</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr2">_InternalString</a>; +00475 } +00476 +00477 <span class="comment">// Token</span> +00478 _ExprPtr++; +00479 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry56">String</a>; +00480 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00481 } +00482 } +00483 +00484 <span class="comment">// Read a string</span> +00485 <span class="keyword">const</span> <span class="keywordtype">char</span> *start = _ExprPtr; +00486 <span class="keywordflow">while</span> ( (currentChar >= 128) || <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprv5">_StringChar</a>[currentChar] ) +00487 { +00488 _ExprPtr++; +00489 currentChar = *_ExprPtr; +00490 } +00491 +00492 <span class="comment">// Is pi ?</span> +00493 <span class="keywordflow">if</span> (((_ExprPtr - start) == 2) && (start[0] == <span class="charliteral">'p'</span>) && (start[1] == <span class="charliteral">'i'</span>)) +00494 { +00495 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry39">Number</a>; +00496 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr7">_Value</a> = 3.1415926535897932384626433832795; +00497 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00498 } +00499 <span class="comment">// Is e ?</span> +00500 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (((_ExprPtr - start) == 1) && (start[0] == <span class="charliteral">'e'</span>)) +00501 { +00502 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry39">Number</a>; +00503 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr7">_Value</a> = 2.7182818284590452353602874713527; +00504 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00505 } +00506 +00507 <span class="comment">// This is a user string, copy the string</span> +00508 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a587">size</a> = _ExprPtr - start; +00509 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a587">size</a> >= (<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry0NLMISC_1_1CEvalNumExpry25">InternalStringLen</a>-1)) +00510 { +00511 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr1">_InternalStlString</a>.resize (size); +00512 <a class="code" href="a04558.html#a15">uint</a> i; +00513 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a04223.html#a587">size</a>; i++) +00514 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr1">_InternalStlString</a>[i] = start[i]; +00515 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr3">_InternalStringPtr</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr1">_InternalStlString</a>.c_str (); +00516 } +00517 <span class="keywordflow">else</span> +00518 { +00519 memcpy (_InternalString, start, size); +00520 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr2">_InternalString</a>[<a class="code" href="a04223.html#a587">size</a>] = 0; +00521 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr3">_InternalStringPtr</a> = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr2">_InternalString</a>; +00522 } +00523 +00524 <span class="comment">// Search for a reserved word ?</span> +00525 <a class="code" href="a04558.html#a15">uint</a> begin = 0; +00526 <a class="code" href="a04558.html#a15">uint</a> end = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry48">ReservedWordCount</a>-1; +00527 <a class="code" href="a04558.html#a14">sint</a> result = strcmp (_InternalStringPtr, _ReservedWord[begin]); +00528 <span class="keywordflow">if</span> ( result >= 0 ) +00529 { +00530 <span class="comment">// The first is the good ?</span> +00531 <span class="keywordflow">if</span> ( result == 0 ) +00532 { +00533 end = begin; +00534 } +00535 +00536 result = strcmp (_InternalStringPtr, _ReservedWord[end]); +00537 <span class="keywordflow">if</span> (result <= 0) +00538 { +00539 <span class="comment">// The last is the good ?</span> +00540 <span class="keywordflow">if</span> ( result == 0 ) +00541 { +00542 begin = end; +00543 } +00544 +00545 <span class="comment">// While there is a middle..</span> +00546 <span class="keywordflow">while</span> ((end - begin) > 1) +00547 { +00548 <a class="code" href="a04558.html#a15">uint</a> middle = begin + (end - begin) / 2; +00549 result = strcmp (_InternalStringPtr, _ReservedWord[middle]); +00550 <span class="keywordflow">if</span> (result == 0) +00551 { +00552 begin = middle; +00553 end = middle; +00554 <span class="keywordflow">break</span>; +00555 } +00556 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (result < 0) +00557 { +00558 end = middle; +00559 } +00560 <span class="keywordflow">else</span> +00561 { +00562 begin = middle; +00563 } +00564 } +00565 } +00566 +00567 <span class="comment">// Found ?</span> +00568 <span class="keywordflow">if</span> (end == begin) +00569 { +00570 <span class="comment">// Return the token</span> +00571 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr5">_ReservedWordFound</a> = (<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63">TReservedWord</a>)begin; +00572 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprv4">_ReservedWordToken</a>[begin]; +00573 +00574 <span class="comment">// Ok</span> +00575 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00576 } +00577 } +00578 +00579 <span class="comment">// Token</span> +00580 token = <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry56">String</a>; +00581 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00582 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLGEORGES_1_1CMyEvalNumExpra4" doxytag="NLMISC::CEvalNumExpr::internalCheck" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NLMISC::CEvalNumExpr::internalCheck </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05678.html#l01127">1127</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +References <a class="el" href="a05678.html#l01204">_ReservedWord</a>, <a class="el" href="a05622.html#l00416">nlstop</a>, <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry48">ReservedWordCount</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +<div class="fragment"><pre>01128 { +01129 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> i=0; i<<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry63NLMISC_1_1CEvalNumExpry48">ReservedWordCount</a>-1; i++) +01130 <span class="keywordflow">if</span> (strcmp (_ReservedWord[i], _ReservedWord[i+1]) >= 0) +01131 { +01132 <a class="code" href="a04199.html#a12">nlstop</a>; +01133 <span class="keywordflow">return</span> <span class="keyword">false</span>; +01134 } +01135 <span class="keywordflow">return</span> <span class="keyword">true</span>; +01136 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprd2" doxytag="NLMISC::CEvalNumExpr::readDecimal" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">CEvalNumExpr::TReturnState</a> NLMISC::CEvalNumExpr::readDecimal </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">double & </td> + <td class="mdname1" valign="top" nowrap> <em>value</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [private]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Read a decimal double. +<p> + +<p> +Definition at line <a class="el" href="a05678.html#l00037">37</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +References <a class="el" href="a05679.html#l00297">_ExprPtr</a>, <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw10">NumberSyntaxError</a>, <a class="el" href="a05678.html#l00065">readIntegerNumberDecimal()</a>, and <a class="el" href="a05646.html#l01132">value</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00096">getNextToken()</a>. +<p> +<div class="fragment"><pre>00038 { +00039 <span class="comment">// Read first integer value</span> +00040 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd3">readIntegerNumberDecimal</a> (value); +00041 +00042 <span class="comment">// Dot ?</span> +00043 <span class="keywordtype">char</span> currentChar = *<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr0">_ExprPtr</a>; +00044 <span class="keywordflow">if</span> (currentChar == <span class="charliteral">'.'</span>) +00045 { +00046 <span class="comment">// Next char</span> +00047 _ExprPtr++; +00048 currentChar = *_ExprPtr; +00049 <span class="keywordflow">if</span> (currentChar < '0' || currentChar > <span class="charliteral">'9'</span>) +00050 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw10">NumberSyntaxError</a>; +00051 +00052 <span class="comment">// Read the decimal part</span> +00053 <span class="keyword">const</span> <span class="keywordtype">char</span> *start = _ExprPtr; +00054 <span class="keywordtype">double</span> fract; +00055 <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprd3">readIntegerNumberDecimal</a> (fract); +00056 fract /= (<span class="keywordtype">double</span>)pow (10 ,(_ExprPtr-start)); +00057 <a class="code" href="a04223.html#a658">value</a> += fract; +00058 } +00059 +00060 <span class="keywordflow">return</span> <a class="code" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12NLGEORGES_1_1CMyEvalNumExprw8">NoError</a>; +00061 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprd3" doxytag="NLMISC::CEvalNumExpr::readIntegerNumberDecimal" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NLMISC::CEvalNumExpr::readIntegerNumberDecimal </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">double & </td> + <td class="mdname1" valign="top" nowrap> <em>value</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [private]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Read an integer. +<p> + +<p> +Definition at line <a class="el" href="a05678.html#l00065">65</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +References <a class="el" href="a05679.html#l00297">_ExprPtr</a>, and <a class="el" href="a05646.html#l01132">value</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00037">readDecimal()</a>. +<p> +<div class="fragment"><pre>00066 { +00067 <span class="comment">// Registered values</span> +00068 <span class="keyword">register</span> <span class="keywordtype">double</span> regValue = 0; +00069 +00070 <span class="comment">// Read the first value</span> +00071 <span class="keywordtype">char</span> currentChar = *<a class="code" href="a02460.html#NLMISC_1_1CEvalNumExprr0">_ExprPtr</a>; +00072 <span class="keywordflow">if</span> ((currentChar >= <span class="charliteral">'0'</span>) && (currentChar <= <span class="charliteral">'9'</span>)) +00073 { +00074 regValue += (currentChar - <span class="charliteral">'0'</span>); +00075 _ExprPtr++; +00076 currentChar = *_ExprPtr; +00077 +00078 <span class="comment">// For each values</span> +00079 <span class="keywordflow">while</span> ((currentChar >= <span class="charliteral">'0'</span>) && (currentChar <= <span class="charliteral">'9'</span>)) +00080 { +00081 regValue *= 10; +00082 regValue += (currentChar - <span class="charliteral">'0'</span>); +00083 +00084 <span class="comment">// Next char</span> +00085 _ExprPtr++; +00086 currentChar = *_ExprPtr; +00087 } +00088 } +00089 +00090 <span class="comment">// Store value</span> +00091 <a class="code" href="a04223.html#a658">value</a> = regValue; +00092 } +</pre></div> </td> + </tr> +</table> +<hr><h2>Field Documentation</h2> +<a class="anchor" name="NLMISC_1_1CEvalNumExprv0" doxytag="NLMISC::CEvalNumExpr::_ErrorString" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const char * <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv0">NLMISC::CEvalNumExpr::_ErrorString</a><code> [static, private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +<b>Initial value:</b><div class="fragment"><pre> +{ + <span class="stringliteral">"No error"</span>, + <span class="stringliteral">"Unkown value"</span>, + <span class="stringliteral">"Error during user defined value evaluation"</span>, + <span class="stringliteral">"Unkown function"</span>, + <span class="stringliteral">"Error during user defined function evaluation"</span>, + <span class="stringliteral">"Syntax error in a number expression"</span>, + <span class="stringliteral">"Unkown operator"</span>, + <span class="stringliteral">"Should be a open parentesis"</span>, + <span class="stringliteral">"Should be a close parentesis"</span>, + <span class="stringliteral">"Should be a coma character"</span>, + <span class="stringliteral">"Should be an expression"</span>, + <span class="stringliteral">"Should not be an unary operator"</span>, + <span class="stringliteral">"Should be the end of the expression"</span>, + <span class="stringliteral">"Should be a double quote"</span>, + <span class="stringliteral">"Divid by zero"</span>, +} +</pre></div> +<p> +Definition at line <a class="el" href="a05678.html#l01268">1268</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +Referenced by <a class="el" href="a05678.html#l01289">getErrorString()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprr0" doxytag="NLMISC::CEvalNumExpr::_ExprPtr" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const char* <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr0">NLMISC::CEvalNumExpr::_ExprPtr</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05679.html#l00297">297</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00586">evalExpression()</a>, <a class="el" href="a05678.html#l00096">getNextToken()</a>, <a class="el" href="a05678.html#l00037">readDecimal()</a>, and <a class="el" href="a05678.html#l00065">readIntegerNumberDecimal()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprr1" doxytag="NLMISC::CEvalNumExpr::_InternalStlString" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> std::string <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr1">NLMISC::CEvalNumExpr::_InternalStlString</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05679.html#l00318">318</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00096">getNextToken()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprr2" doxytag="NLMISC::CEvalNumExpr::_InternalString" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> char <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr2">NLMISC::CEvalNumExpr::_InternalString</a>[InternalStringLen]<code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Current string. +<p> + +<p> +Definition at line <a class="el" href="a05679.html#l00317">317</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00096">getNextToken()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprr3" doxytag="NLMISC::CEvalNumExpr::_InternalStringPtr" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const char* <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr3">NLMISC::CEvalNumExpr::_InternalStringPtr</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05679.html#l00319">319</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00616">evalExpression()</a>, and <a class="el" href="a05678.html#l00096">getNextToken()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprr4" doxytag="NLMISC::CEvalNumExpr::_Op" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62">TOperator</a> <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr4">NLMISC::CEvalNumExpr::_Op</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Current operator. +<p> + +<p> +Definition at line <a class="el" href="a05679.html#l00325">325</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprv1" doxytag="NLMISC::CEvalNumExpr::_OperatorArray" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry62">CEvalNumExpr::TOperator</a> <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv1">NLMISC::CEvalNumExpr::_OperatorArray</a><code> [static, private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +<b>Initial value:</b><div class="fragment"><pre> +{ + <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry38">NotOperator</a>, <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry38">NotOperator</a>, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, + NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, + NotOperator, <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry17">ExtOperator</a>, NotOperator, NotOperator, NotOperator, <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry47">Remainder</a>, ExtOperator, NotOperator, NotOperator, NotOperator, <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry35">Mul</a>, <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry44">Plus</a>, NotOperator, ExtOperator, NotOperator, <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry12">Div</a>, + NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, ExtOperator, ExtOperator, ExtOperator, NotOperator, + NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, + NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, ExtOperator, NotOperator, + NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, + NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, NotOperator, ExtOperator, NotOperator, <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry62NLMISC_1_1CEvalNumExpry61">Tilde</a>, NotOperator, +} +</pre></div> +<p> +Definition at line <a class="el" href="a05678.html#l01155">1155</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00096">getNextToken()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprv2" doxytag="NLMISC::CEvalNumExpr::_OperatorPrecedence" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const int <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv2">NLMISC::CEvalNumExpr::_OperatorPrecedence</a><code> [static, private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +<b>Initial value:</b><div class="fragment"><pre> +{ + 0, + 0, + 1, + 1, + 1, + 2, + 2, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 0xffffffff, + 20, +} +</pre></div> +<p> +Definition at line <a class="el" href="a05678.html#l01296">1296</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00616">evalExpression()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprv3" doxytag="NLMISC::CEvalNumExpr::_ReservedWord" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const char * <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv3">NLMISC::CEvalNumExpr::_ReservedWord</a><code> [static, private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +<b>Initial value:</b><div class="fragment"><pre> +{ + <span class="stringliteral">"abs"</span>, + <span class="stringliteral">"acos"</span>, + <span class="stringliteral">"asin"</span>, + <span class="stringliteral">"atan"</span>, + <span class="stringliteral">"atan2"</span>, + <span class="stringliteral">"ceil"</span>, + <span class="stringliteral">"cos"</span>, + <span class="stringliteral">"cosh"</span>, + <span class="stringliteral">"exp"</span>, + <span class="stringliteral">"exponent"</span>, + <span class="stringliteral">"floor"</span>, + <span class="stringliteral">"int"</span>, + <span class="stringliteral">"log"</span>, + <span class="stringliteral">"log10"</span>, + <span class="stringliteral">"mantissa"</span>, + <span class="stringliteral">"max"</span>, + <span class="stringliteral">"min"</span>, + <span class="stringliteral">"pow"</span>, + <span class="stringliteral">"rand"</span>, + <span class="stringliteral">"round"</span>, + <span class="stringliteral">"sin"</span>, + <span class="stringliteral">"sinh"</span>, + <span class="stringliteral">"sq"</span>, + <span class="stringliteral">"sqrt"</span>, + <span class="stringliteral">"tan"</span>, + <span class="stringliteral">"tanh"</span>, +} +</pre></div> +<p> +Definition at line <a class="el" href="a05678.html#l01204">1204</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00096">getNextToken()</a>, and <a class="el" href="a05678.html#l01127">internalCheck()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprr5" doxytag="NLMISC::CEvalNumExpr::_ReservedWordFound" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry63">TReservedWord</a> <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr5">NLMISC::CEvalNumExpr::_ReservedWordFound</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Reserved word. +<p> + +<p> +Definition at line <a class="el" href="a05679.html#l00314">314</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00616">evalExpression()</a>, and <a class="el" href="a05678.html#l00096">getNextToken()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprv4" doxytag="NLMISC::CEvalNumExpr::_ReservedWordToken" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExpry64">CEvalNumExpr::TToken</a> <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv4">NLMISC::CEvalNumExpr::_ReservedWordToken</a><code> [static, private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +<b>Initial value:</b><div class="fragment"><pre> +{ + <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry19">Function1</a>, + <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry19">Function1</a>, + Function1, + Function1, + <a class="code" href="a02460.html#NLMISC_1_1CEvalNumExpry64NLMISC_1_1CEvalNumExpry20">Function2</a>, + Function1, + Function1, + Function1, + Function1, + Function1, + Function1, + Function1, + Function1, + Function1, + Function1, + Function2, + Function2, + Function2, + Function2, + Function1, + Function1, + Function1, + Function1, + Function1, + Function1, + Function1, +} +</pre></div>Static values Char to operator array. +<p> + +<p> +Definition at line <a class="el" href="a05678.html#l01236">1236</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00096">getNextToken()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprr6" doxytag="NLMISC::CEvalNumExpr::_State" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02460.html#NLGEORGES_1_1CMyEvalNumExprw12">TReturnState</a> <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr6">NLMISC::CEvalNumExpr::_State</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Members. +<p> + +<p> +Definition at line <a class="el" href="a05679.html#l00296">296</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprv5" doxytag="NLMISC::CEvalNumExpr::_StringChar" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const bool <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprv5">NLMISC::CEvalNumExpr::_StringChar</a><code> [static, private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +<b>Initial value:</b><div class="fragment"><pre> +{ + <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, + <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, + <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">true</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, + <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">true</span>, + <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, + <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">false</span>, <span class="keyword">true</span>, + <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, + <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">false</span>, <span class="keyword">true</span>, <span class="keyword">false</span>, <span class="keyword">true</span>, +} +</pre></div> +<p> +Definition at line <a class="el" href="a05678.html#l01169">1169</a> of file <a class="el" href="a05678.html">eval_num_expr.cpp</a>. +<p> +Referenced by <a class="el" href="a05678.html#l00096">getNextToken()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CEvalNumExprr7" doxytag="NLMISC::CEvalNumExpr::_Value" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> double <a class="el" href="a02460.html#NLMISC_1_1CEvalNumExprr7">NLMISC::CEvalNumExpr::_Value</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Current value. +<p> + +<p> +Definition at line <a class="el" href="a05679.html#l00322">322</a> of file <a class="el" href="a05679.html">eval_num_expr.h</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following files:<ul> +<li><a class="el" href="a05679.html">eval_num_expr.h</a><li><a class="el" href="a05678.html">eval_num_expr.cpp</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 13:09:38 2004 for NeL by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border=0 > +</a>1.3.6 </small></address> +</body> +</html> |