📄 cell_8hpp-source.html
字号:
<!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>a1: Cell.hpp Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.9.1 --><div class="qindex"><a class="qindex" href="index.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="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div><h1>Cell.hpp</h1><a href="Cell_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 00022 <span class="preprocessor">#ifndef CELL_HPP</span>00023 <span class="preprocessor"></span><span class="preprocessor">#define CELL_HPP</span>00024 <span class="preprocessor"></span>00025 <span class="preprocessor">#include <cstddef></span>00026 <span class="preprocessor">#include <cstdlib></span>00027 <span class="preprocessor">#include <iostream></span>00028 <span class="preprocessor">#include <fstream></span>00029 <span class="preprocessor">#include <sstream></span>00030 <span class="preprocessor">#include <string></span>00031 <span class="preprocessor">#include <stack></span>00032 00033 <span class="keyword">using</span> <span class="keyword">namespace </span>std;00034 <a name="l00039"></a><a class="code" href="classCell.html">00039</a> <span class="keyword">class </span><a class="code" href="classCell.html">Cell</a> {00040 <span class="keyword">public</span>:00045 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> is_int() <span class="keyword">const</span>;00046 00051 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> is_double() <span class="keyword">const</span>;00052 00057 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> is_symbol() <span class="keyword">const</span>;00058 00063 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> is_cons() <span class="keyword">const</span>;00064 00069 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="cons_8hpp.html#a10">get_int</a>() <span class="keyword">const</span>;00070 00075 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="cons_8hpp.html#a11">get_double</a>() <span class="keyword">const</span>;00076 00081 <span class="keyword">virtual</span> string <a class="code" href="cons_8hpp.html#a12">get_symbol</a>() <span class="keyword">const</span>;00082 00087 <span class="keyword">virtual</span> <a class="code" href="classCell.html">Cell</a>* get_car() <span class="keyword">const</span>;00088 00093 <span class="keyword">virtual</span> <a class="code" href="classCell.html">Cell</a>* get_cdr() <span class="keyword">const</span>;00094 00099 <span class="keyword">virtual</span> <span class="keywordtype">void</span> print(ostream& os = cout) <span class="keyword">const </span>= 0;00100 00104 <span class="keyword">virtual</span> <a class="code" href="classCell.html">Cell</a>* cell_ceil() <span class="keyword">const</span>;00105 00109 <span class="keyword">virtual</span> <a class="code" href="classCell.html">Cell</a>* cell_floor() <span class="keyword">const</span>;00110 00114 <span class="keyword">virtual</span> <span class="keywordtype">void</span> cell_sum(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00115 00119 <span class="keyword">virtual</span> <span class="keywordtype">void</span> cell_times(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00120 00124 <span class="keyword">virtual</span> <span class="keywordtype">void</span> cell_sub(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00125 00129 <span class="keyword">virtual</span> <span class="keywordtype">void</span> cell_div(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00130 00134 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> is_zero() <span class="keyword">const</span>;00135 00136 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> is_list() <span class="keyword">const</span>;00137 };00138 <a name="l00139"></a><a class="code" href="classIntCell.html">00139</a> <span class="keyword">class </span><a class="code" href="classIntCell.html">IntCell</a>:<span class="keyword">public</span> <a class="code" href="classCell.html">Cell</a> {00140 <span class="keyword">private</span>:<a name="l00141"></a><a class="code" href="classIntCell.html#r0">00141</a> <span class="keywordtype">int</span> int_m;00142 <span class="keyword">public</span>:00146 <a class="code" href="classIntCell.html#a0">IntCell</a> (<span class="keyword">const</span> <span class="keywordtype">int</span> i);00147 00152 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classIntCell.html#a1">is_int</a>() <span class="keyword">const</span>;00153 00158 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classIntCell.html#a2">get_int</a>() <span class="keyword">const</span>;00159 00164 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classIntCell.html#a3">print</a>(ostream& os = cout) <span class="keyword">const</span>;00165 00169 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classIntCell.html#a4">cell_sum</a>(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00170 00174 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classIntCell.html#a5">cell_times</a>(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00175 00179 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classIntCell.html#a6">cell_sub</a>(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00180 00184 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classIntCell.html#a7">cell_div</a>(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00185 00189 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classIntCell.html#a8">is_zero</a>() <span class="keyword">const</span>;00190 };00191 <a name="l00192"></a><a class="code" href="classDoubleCell.html">00192</a> <span class="keyword">class </span><a class="code" href="classDoubleCell.html">DoubleCell</a>:<span class="keyword">public</span> <a class="code" href="classCell.html">Cell</a> {00193 <span class="keyword">private</span>:<a name="l00194"></a><a class="code" href="classDoubleCell.html#r0">00194</a> <span class="keywordtype">double</span> double_m;00195 <span class="keyword">public</span>:00199 <a class="code" href="classDoubleCell.html#a0">DoubleCell</a> (<span class="keyword">const</span> <span class="keywordtype">double</span> d);00200 00205 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classDoubleCell.html#a1">is_double</a>() <span class="keyword">const</span>;00206 00211 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classDoubleCell.html#a2">get_double</a>() <span class="keyword">const</span>;00212 00217 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classDoubleCell.html#a3">print</a>(ostream& os = cout) <span class="keyword">const </span>;00218 00222 <span class="keyword">virtual</span> <a class="code" href="classCell.html">Cell</a>* <a class="code" href="classDoubleCell.html#a4">cell_ceil</a>() <span class="keyword">const</span>;00223 00227 <span class="keyword">virtual</span> <a class="code" href="classCell.html">Cell</a>* <a class="code" href="classDoubleCell.html#a5">cell_floor</a>() <span class="keyword">const</span>;00228 00232 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classDoubleCell.html#a6">cell_sum</a>(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00233 00237 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classDoubleCell.html#a7">cell_times</a>(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00238 00242 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classDoubleCell.html#a8">cell_sub</a>(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00243 00247 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classDoubleCell.html#a9">cell_div</a>(<span class="keywordtype">int</span> &i, <span class="keywordtype">double</span> &result) <span class="keyword">const</span>;00248 00252 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classDoubleCell.html#a10">is_zero</a>() <span class="keyword">const</span>;00253 };00254 <a name="l00255"></a><a class="code" href="classSymbolCell.html">00255</a> <span class="keyword">class </span><a class="code" href="classSymbolCell.html">SymbolCell</a>:<span class="keyword">public</span> <a class="code" href="classCell.html">Cell</a> {00256 <span class="keyword">private</span>:<a name="l00257"></a><a class="code" href="classSymbolCell.html#r0">00257</a> <span class="keywordtype">char</span>* symbol_m;00258 <span class="keyword">public</span>:00262 <a class="code" href="classSymbolCell.html#a0">SymbolCell</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> s);00263 00268 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSymbolCell.html#a1">is_symbol</a>() <span class="keyword">const</span>;00269 00274 <span class="keyword">virtual</span> string <a class="code" href="classSymbolCell.html#a2">get_symbol</a>() <span class="keyword">const</span>;00275 00280 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSymbolCell.html#a3">print</a>(ostream& os = cout) <span class="keyword">const</span>;00281 };00282 <a name="l00283"></a><a class="code" href="classConsCell.html">00283</a> <span class="keyword">class </span><a class="code" href="classConsCell.html">ConsCell</a>:<span class="keyword">public</span> <a class="code" href="classCell.html">Cell</a> {00284 <span class="keyword">private</span>:<a name="l00285"></a><a class="code" href="classConsCell.html#r0">00285</a> <a class="code" href="classCell.html">Cell</a> *car;<a name="l00286"></a><a class="code" href="classConsCell.html#r1">00286</a> <a class="code" href="classCell.html">Cell</a> *cdr;00287 <span class="keyword">public</span>:00291 <a class="code" href="classConsCell.html#a0">ConsCell</a> (<a class="code" href="classCell.html">Cell</a>* <span class="keyword">const</span> my_car, <a class="code" href="classCell.html">Cell</a>* <span class="keyword">const</span> my_cdr);00292 00297 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classConsCell.html#a1">is_cons</a>() <span class="keyword">const</span>;00298 00303 <span class="keyword">virtual</span> <a class="code" href="classCell.html">Cell</a>* <a class="code" href="classConsCell.html#a2">get_car</a>() <span class="keyword">const</span>;00304 00309 <span class="keyword">virtual</span> <a class="code" href="classCell.html">Cell</a>* <a class="code" href="classConsCell.html#a3">get_cdr</a>() <span class="keyword">const</span>;00310 00315 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classConsCell.html#a4">print</a>(ostream& os = cout) <span class="keyword">const</span>;00316 00317 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classConsCell.html#a5">is_list</a>() <span class="keyword">const</span>;00318 };00319 <span class="comment">// Reminder: cons.hpp expects nil to be defined somewhere (for this</span>00320 <span class="comment">// implementation, Cell.cpp is the logical place to define it).</span>00321 <span class="comment">// Here we promise this again, just to be safe.</span>00322 <span class="keyword">extern</span> <a class="code" href="classCell.html">Cell</a>* <span class="keyword">const</span> nil;00323 00324 <span class="preprocessor">#endif // CELL_HPP</span>00325 <span class="preprocessor"></span>00326 00327 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 28 22:53:52 2007 for a1 by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -