<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Flex Bison C++ Example: CalcNode Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class List</span></a></li>
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>CalcNode Class Reference</h1><!-- doxytag: class="CalcNode" --><a class="el" href="classCalcNode.html" title="CalcNode is the abstract base class for calculation nodes.">CalcNode</a> is the abstract base class for calculation nodes.
<a href="#_details">More...</a>
<p>
<code>#include <<a class="el" href="expression_8h_source.html">expression.h</a>></code>
<p>
<div class="dynheader">
Inheritance diagram for CalcNode:</div>
<div class="dynsection">
<p><center><img src="classCalcNode.png" usemap="#CalcNode_map" border="0" alt=""></center>
<map name="CalcNode_map">
<area href="classCNAdd.html" alt="CNAdd" shape="rect" coords="89,56,168,80">
<area href="classCNConstant.html" alt="CNConstant" shape="rect" coords="89,112,168,136">
<area href="classCNDivide.html" alt="CNDivide" shape="rect" coords="89,168,168,192">
<area href="classCNModulo.html" alt="CNModulo" shape="rect" coords="89,224,168,248">
<area href="classCNMultiply.html" alt="CNMultiply" shape="rect" coords="89,280,168,304">
<area href="classCNNegate.html" alt="CNNegate" shape="rect" coords="89,336,168,360">
<area href="classCNPower.html" alt="CNPower" shape="rect" coords="89,392,168,416">
<area href="classCNSubtract.html" alt="CNSubtract" shape="rect" coords="89,448,168,472">
</map>
</div>
<p>
<a href="classCalcNode-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classCalcNode.html#d277e8092667f224a6f7f607885a3a4d">~CalcNode</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">required for virtual functions. <a href="#d277e8092667f224a6f7f607885a3a4d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual double </td><td class="memItemRight" valign="bottom"><a class="el" href="classCalcNode.html#0c036b9e80266101e155bf76da1b868a">evaluate</a> () const =0</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">evaluate the complete calculation tree and return the floating point result value <a href="#0c036b9e80266101e155bf76da1b868a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCalcNode.html#ce46c07f593f0b4727faa46cbeb8f6e8">print</a> (std::ostream &os, unsigned int depth=0) const =0</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">output the calculation tree to the given stream. <a href="#ce46c07f593f0b4727faa46cbeb8f6e8"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classCalcNode.html#605eaaacf8c3d3367c722bf7787fc4d2">indent</a> (unsigned int d)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">helper function for <a class="el" href="classCalcNode.html#ce46c07f593f0b4727faa46cbeb8f6e8" title="output the calculation tree to the given stream.">print()</a> which makes the indention string <a href="#605eaaacf8c3d3367c722bf7787fc4d2"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<a class="el" href="classCalcNode.html" title="CalcNode is the abstract base class for calculation nodes.">CalcNode</a> is the abstract base class for calculation nodes.
<p>
From it the different nullary, unary and binary nodes are derived.
<p>Definition at line <a class="el" href="expression_8h_source.html#l00015">15</a> of file <a class="el" href="expression_8h_source.html">expression.h</a>.</p>
<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="d277e8092667f224a6f7f607885a3a4d"></a><!-- doxytag: member="CalcNode::~CalcNode" ref="d277e8092667f224a6f7f607885a3a4d" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual CalcNode::~CalcNode </td>
<td>(</td>
<td class="paramname"> </td>
<td> ) </td>
<td><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
required for virtual functions.
<p>
in the derived classes the operands are deleted.
<p>Definition at line <a class="el" href="expression_8h_source.html#l00020">20</a> of file <a class="el" href="expression_8h_source.html">expression.h</a>.</p>
</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="0c036b9e80266101e155bf76da1b868a"></a><!-- doxytag: member="CalcNode::evaluate" ref="0c036b9e80266101e155bf76da1b868a" args="() const =0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual double CalcNode::evaluate </td>
<td>(</td>
<td class="paramname"> </td>
<td> ) </td>
<td> const<code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
evaluate the complete calculation tree and return the floating point result value
<p>
<p>Implemented in <a class="el" href="classCNConstant.html#f8f9ed8124c661e1dd31df7e6eed94c3">CNConstant</a>, <a class="el" href="classCNNegate.html#d8742ef807da75fea0d512467d5331cd">CNNegate</a>, <a class="el" href="classCNAdd.html#5b558f1853ec5555c1ff3503f44b30e7">CNAdd</a>, <a class="el" href="classCNSubtract.html#e57879411a77bf2a5b16f28aa488a3d6">CNSubtract</a>, <a class="el" href="classCNMultiply.html#51ce205165bfa5842002721332c14f5c">CNMultiply</a>, <a class="el" href="classCNDivide.html#416c36cec11a481a20bbe3409c1e42db">CNDivide</a>, <a class="el" href="classCNModulo.html#ea0edc20d0feeaded4e44182039f8396">CNModulo</a>, and <a class="el" href="classCNPower.html#9461646cf8e9fc0cb54318e04d73ed72">CNPower</a>.</p>
<p>Referenced by <a class="el" href="expression_8h_source.html#l00284">CNPower::evaluate()</a>, <a class="el" href="expression_8h_source.html#l00250">CNModulo::evaluate()</a>, <a class="el" href="expression_8h_source.html#l00215">CNDivide::evaluate()</a>, <a class="el" href="expression_8h_source.html#l00181">CNMultiply::evaluate()</a>, <a class="el" href="expression_8h_source.html#l00147">CNSubtract::evaluate()</a>, <a class="el" href="expression_8h_source.html#l00113">CNAdd::evaluate()</a>, and <a class="el" href="expression_8h_source.html#l00080">CNNegate::evaluate()</a>.</p>
</div>
</div><p>
<a class="anchor" name="605eaaacf8c3d3367c722bf7787fc4d2"></a><!-- doxytag: member="CalcNode::indent" ref="605eaaacf8c3d3367c722bf7787fc4d2" args="(unsigned int d)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static std::string CalcNode::indent </td>
<td>(</td>
<td class="paramtype">unsigned int </td>
<td class="paramname"> <em>d</em> </td>
<td> ) </td>
<td><code> [inline, static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
helper function for <a class="el" href="classCalcNode.html#ce46c07f593f0b4727faa46cbeb8f6e8" title="output the calculation tree to the given stream.">print()</a> which makes the indention string
<p>
<p>Definition at line <a class="el" href="expression_8h_source.html#l00033">33</a> of file <a class="el" href="expression_8h_source.html">expression.h</a>.</p>
<p>Referenced by <a class="el" href="expression_8h_source.html#l00289">CNPower::print()</a>, <a class="el" href="expression_8h_source.html#l00255">CNModulo::print()</a>, <a class="el" href="expression_8h_source.html#l00220">CNDivide::print()</a>, <a class="el" href="expression_8h_source.html#l00186">CNMultiply::print()</a>, <a class="el" href="expression_8h_source.html#l00152">CNSubtract::print()</a>, <a class="el" href="expression_8h_source.html#l00118">CNAdd::print()</a>, <a class="el" href="expression_8h_source.html#l00085">CNNegate::print()</a>, and <a class="el" href="expression_8h_source.html#l00057">CNConstant::print()</a>.</p>
</div>
</div><p>
<a class="anchor" name="ce46c07f593f0b4727faa46cbeb8f6e8"></a><!-- doxytag: member="CalcNode::print" ref="ce46c07f593f0b4727faa46cbeb8f6e8" args="(std::ostream &os, unsigned int depth=0) const =0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void CalcNode::print </td>
<td>(</td>
<td class="paramtype">std::ostream & </td>
<td class="paramname"> <em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int </td>
<td class="paramname"> <em>depth</em> = <code>0</code></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td> const<code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
output the calculation tree to the given stream.
<p>
tries to format the output to make tree levels visible.
<p>Implemented in <a class="el" href="classCNConstant.html#cacd0c4f899f52b2ec29ad102fc17d9a">CNConstant</a>, <a class="el" href="classCNNegate.html#05186ba465d67b4c7d82775aff6bfcc7">CNNegate</a>, <a class="el" href="classCNAdd.html#73128b63182541df1e0d8797c1c3f4a9">CNAdd</a>, <a class="el" href="classCNSubtract.html#2a1f71490f4492af059f80ebd862a442">CNSubtract</a>, <a class="el" href="classCNMultiply.html#a97ab488dd08e3c3248df351465e0d1d">CNMultiply</a>, <a class="el" href="classCNDivide.html#0126b757dde799c062ce16abfeda197d">CNDivide</a>, <a class="el" href="classCNModulo.html#9dbb4fee67eb934535924e6ee8ffc810">CNModulo</a>, and <a class="el" href="classCNPower.html#23b22f144f66e242794826719eb4a47a">CNPower</a>.</p>
<p>Referenced by <a class="el" href="expression_8h_source.html#l00289">CNPower::print()</a>, <a class="el" href="expression_8h_source.html#l00255">CNModulo::print()</a>, <a class="el" href="expression_8h_source.html#l00220">CNDivide::print()</a>, <a class="el" href="expression_8h_source.html#l00186">CNMultiply::print()</a>, <a class="el" href="expression_8h_source.html#l00152">CNSubtract::print()</a>, <a class="el" href="expression_8h_source.html#l00118">CNAdd::print()</a>, and <a class="el" href="expression_8h_source.html#l00085">CNNegate::print()</a>.</p>
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li>src/<a class="el" href="expression_8h_source.html">expression.h</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat Sep 5 10:26:25 2009 for Flex Bison C++ Example by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>