?? cell_8cpp-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.cpp 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="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.cpp</h1><a href="Cell_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 00016 <span class="preprocessor">#include "<a class="code" href="Cell_8hpp.html">Cell.hpp</a>"</span>00017 <span class="comment">// Reminder: cons.hpp expects nil to be defined somewhere. For this</span>00018 <span class="comment">// implementation, this is the logical place to define it.</span><a name="l00019"></a><a class="code" href="cons_8hpp.html#a0">00019</a> <a class="code" href="classCell.html">Cell</a>* <span class="keyword">const</span> <a class="code" href="Cell_8cpp.html#a0">nil</a> = 0;00020 <a name="l00021"></a><a class="code" href="classCell.html#a0">00021</a> <a class="code" href="classCell.html#a0">Cell::Cell</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> i) 00022 {00023 int_m = i;00024 tag_m = type_int;00025 }00026 <a name="l00027"></a><a class="code" href="classCell.html#a1">00027</a> <a class="code" href="classCell.html#a0">Cell::Cell</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> d)00028 {00029 double_m = d ;00030 tag_m = type_double;00031 }00032 <a name="l00033"></a><a class="code" href="classCell.html#a2">00033</a> <a class="code" href="classCell.html#a0">Cell::Cell</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> s)00034 {00035 symbol_m = <span class="keyword">new</span> <span class="keywordtype">char</span> [strlen(s)];00036 strcpy (symbol_m,s);00037 tag_m = type_symbol;00038 }00039 <a name="l00040"></a><a class="code" href="classCell.html#a3">00040</a> <a class="code" href="classCell.html#a0">Cell::Cell</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)00041 {00042 conspair_m.car = my_car;00043 conspair_m.cdr = my_cdr;00044 tag_m = type_conspair; 00045 }00046 <a name="l00047"></a><a class="code" href="classCell.html#a5">00047</a> <span class="keywordtype">bool</span> <a class="code" href="classCell.html#a5">Cell::is_int</a>()<span class="keyword"> const</span>00048 <span class="keyword"></span>{ <span class="keywordflow">if</span>(tag_m == type_int)00049 <span class="keywordflow">return</span> <span class="keyword">true</span>;00050 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;00051 }00052 <a name="l00053"></a><a class="code" href="classCell.html#a6">00053</a> <span class="keywordtype">bool</span> <a class="code" href="classCell.html#a6">Cell::is_double</a>()<span class="keyword"> const</span>00054 <span class="keyword"></span>{00055 <span class="keywordflow">if</span>(tag_m==type_double)00056 <span class="keywordflow">return</span> <span class="keyword">true</span>;00057 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;00058 }00059 <a name="l00060"></a><a class="code" href="classCell.html#a7">00060</a> <span class="keywordtype">bool</span> <a class="code" href="classCell.html#a7">Cell::is_symbol</a>()<span class="keyword"> const</span>00061 <span class="keyword"></span>{00062 <span class="keywordflow">if</span>(tag_m == type_symbol)00063 <span class="keywordflow">return</span> <span class="keyword">true</span>;00064 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;00065 }00066 <a name="l00067"></a><a class="code" href="classCell.html#a8">00067</a> <span class="keywordtype">bool</span> <a class="code" href="classCell.html#a8">Cell::is_cons</a>()<span class="keyword"> const</span>00068 <span class="keyword"></span>{00069 <span class="keywordflow">if</span>(tag_m == type_conspair)00070 <span class="keywordflow">return</span> <span class="keyword">true</span>;00071 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;00072 }00073 <a name="l00074"></a><a class="code" href="classCell.html#a9">00074</a> <span class="keywordtype">int</span> <a class="code" href="classCell.html#a9">Cell::get_int</a>()<span class="keyword"> const</span>00075 <span class="keyword"></span>{00076 <span class="keywordflow">if</span>(<a class="code" href="classCell.html#a5">is_int</a>())00077 <span class="keywordflow">return</span> int_m;00078 <span class="keywordflow">else</span>{00079 cerr<<<span class="stringliteral">"Error:It is not a integer"</span><<endl;00080 exit(1);00081 }00082 }00083 <a name="l00084"></a><a class="code" href="classCell.html#a10">00084</a> <span class="keywordtype">double</span> <a class="code" href="classCell.html#a10">Cell::get_double</a>()<span class="keyword"> const</span>00085 <span class="keyword"></span>{00086 <span class="keywordflow">if</span>(<a class="code" href="classCell.html#a6">is_double</a>())00087 <span class="keywordflow">return</span> double_m;00088 <span class="keywordflow">else</span>{00089 cerr<<<span class="stringliteral">"Error:It is not a double"</span><<endl;00090 exit(1);00091 }00092 }00093 <a name="l00094"></a><a class="code" href="classCell.html#a11">00094</a> string <a class="code" href="classCell.html#a11">Cell::get_symbol</a>()<span class="keyword"> const</span>00095 <span class="keyword"></span>{00096 <span class="keywordflow">if</span>(<a class="code" href="classCell.html#a7">is_symbol</a>())00097 <span class="keywordflow">return</span> symbol_m;00098 <span class="keywordflow">else</span>{00099 cerr<<<span class="stringliteral">"Error:It is not a symbol"</span><<endl;00100 exit(1);00101 }00102 }00103 <a name="l00104"></a><a class="code" href="classCell.html#a12">00104</a> <a class="code" href="classCell.html">Cell</a>* <a class="code" href="classCell.html#a12">Cell::get_car</a>()<span class="keyword"> const</span>00105 <span class="keyword"></span>{00106 <span class="keywordflow">if</span>(<a class="code" href="classCell.html#a8">is_cons</a>())00107 <span class="keywordflow">return</span> conspair_m.car;00108 <span class="keywordflow">else</span> {00109 cerr<<<span class="stringliteral">"Error:It is not a cell"</span><<endl;00110 exit(1);00111 }00112 } 00113 <a name="l00114"></a><a class="code" href="classCell.html#a13">00114</a> <a class="code" href="classCell.html">Cell</a>* <a class="code" href="classCell.html#a13">Cell::get_cdr</a>()<span class="keyword"> const</span>00115 <span class="keyword"></span>{00116 <span class="keywordflow">if</span>(<a class="code" href="classCell.html#a8">is_cons</a>())00117 <span class="keywordflow">return</span> conspair_m.cdr;00118 <span class="keywordflow">else</span> {00119 cerr<<<span class="stringliteral">"Error:It is not a cell"</span><<endl;00120 exit(1);00121 }00122 }00123 Cell :: ~Cell()00124 {00125 <span class="keywordflow">if</span> (<a class="code" href="classCell.html#a7">is_symbol</a>())00126 <span class="keyword">delete</span> [] symbol_m;00127 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classCell.html#a8">is_cons</a>())00128 {00129 <span class="keyword">delete</span> <a class="code" href="classCell.html#a12">get_car</a>();00130 <span class="keywordflow">if</span> (<a class="code" href="classCell.html#a13">get_cdr</a>() == NULL)00131 <span class="keyword">delete</span> <a class="code" href="classCell.html#a13">get_cdr</a>();00132 }00133 } <a name="l00134"></a><a class="code" href="classCell.html#a14">00134</a> <span class="keywordtype">void</span> <a class="code" href="classCell.html#a14">Cell::print</a>(ostream& os)<span class="keyword"> const</span>00135 <span class="keyword"></span>{ 00136 <span class="keywordflow">if</span> (<a class="code" href="classCell.html#a8">is_cons</a>())00137 {00138 <span class="keywordflow">if</span> (<a class="code" href="classCell.html#a12">get_car</a>()-><a class="code" href="classCell.html#a7">is_symbol</a>())00139 cout<<<span class="stringliteral">"("</span>;00140 <a class="code" href="classCell.html#a12">get_car</a>()-><a class="code" href="classCell.html#a14">print</a>(os);00141 cout<<<span class="stringliteral">" "</span>; 00142 <span class="keywordflow">if</span> (<a class="code" href="classCell.html#a13">get_cdr</a>() == NULL)00143 cout<<<span class="stringliteral">")"</span>;00144 <span class="keywordflow">else</span> 00145 <a class="code" href="classCell.html#a13">get_cdr</a>()-><a class="code" href="classCell.html#a14">print</a>(os); 00146 }00147 00148 <span class="keywordflow">if</span> (<a class="code" href="classCell.html#a5">is_int</a>())00149 cout<<<a class="code" href="classCell.html#a9">get_int</a>();00150 00151 <span class="keywordflow">if</span> (<a class="code" href="classCell.html#a6">is_double</a>())00152 cout<<showpoint<<<a class="code" href="classCell.html#a10">get_double</a>();00153 00154 <span class="keywordflow">if</span>(<a class="code" href="classCell.html#a7">is_symbol</a>())00155 cout<<symbol_m;00156 00157 }00158 00159 00160 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Mar 8 15:44:44 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 + -