<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta name="robots" content="noindex"> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>comptmpl.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Generated by Doxygen 1.2.5 on Mon Oct 14 14:16:36 2002 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>comptmpl.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font> 00002 <font class="comment">// comptmpl.h</font> 00003 <font class="comment">//</font> 00004 <font class="comment">// Copyright (C) 1996 Limit Point Systems, Inc.</font> 00005 <font class="comment">//</font> 00006 <font class="comment">// Author: Curtis Janssen <cljanss@limitpt.com></font> 00007 <font class="comment">// Maintainer: LPS</font> 00008 <font class="comment">//</font> 00009 <font class="comment">// This file is part of the SC Toolkit.</font> 00010 <font class="comment">//</font> 00011 <font class="comment">// The SC Toolkit is free software; you can redistribute it and/or modify</font> 00012 <font class="comment">// it under the terms of the GNU Library General Public License as published by</font> 00013 <font class="comment">// the Free Software Foundation; either version 2, or (at your option)</font> 00014 <font class="comment">// any later version.</font> 00015 <font class="comment">//</font> 00016 <font class="comment">// The SC Toolkit is distributed in the hope that it will be useful,</font> 00017 <font class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</font> 00018 <font class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</font> 00019 <font class="comment">// GNU Library General Public License for more details.</font> 00020 <font class="comment">//</font> 00021 <font class="comment">// You should have received a copy of the GNU Library General Public License</font> 00022 <font class="comment">// along with the SC Toolkit; see the file COPYING.LIB. If not, write to</font> 00023 <font class="comment">// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.</font> 00024 <font class="comment">//</font> 00025 <font class="comment">// The U.S. Government is granted a limited license as per AL 91-7.</font> 00026 <font class="comment">//</font> 00027 00028 <font class="keyword">namespace </font>sc { 00029 00034 template <class T> <a name="l00035"></a><a class="code" href="class_sc__Result.html">00035</a> <font class="keyword">class </font>Result: <font class="keyword">public</font> ResultInfo { 00036 <font class="keyword">private</font>: 00037 T _result; 00038 <font class="keyword">public</font>: 00039 Result(Compute*c):ResultInfo(c)<font class="keyword"> </font>{}; 00040 Result(<font class="keyword">const</font> Result<T> &r, Compute*c):ResultInfo(c)<font class="keyword"></font> 00041 <font class="keyword"> </font>{ _result=r._result; } 00042 operator T&()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> _result; }; 00043 T* operator ->()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> &_result; }; 00044 T& result()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> _result; }; 00045 T& result_noupdate()<font class="keyword"> </font>{ <font class="keywordflow">return</font> _result; }; 00046 <font class="keyword">const</font> T& result_noupdate()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _result; }; 00047 <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> T& a)<font class="keyword"> </font>{ _result = a; } 00048 <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> Result<T> &r)<font class="keyword"></font> 00049 <font class="keyword"> </font>{ ResultInfo::operator=(r); _result = r._result; }; 00050 }; 00051 00054 template <class T> <a name="l00055"></a><a class="code" href="class_sc__NCResult.html">00055</a> <font class="keyword">class </font>NCResult: <font class="keyword">public</font> ResultInfo { 00056 <font class="keyword">private</font>: 00057 T _result; 00058 <font class="keyword">public</font>: 00059 NCResult(Compute*c):ResultInfo(c)<font class="keyword"> </font>{}; 00060 NCResult(<font class="keyword">const</font> NCResult<T> &r, Compute*c):ResultInfo(c)<font class="keyword"></font> 00061 <font class="keyword"> </font>{ _result=r._result; } 00062 operator T&()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> _result; }; 00063 T& result()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> _result; }; 00064 T& result_noupdate()<font class="keyword"> </font>{ <font class="keywordflow">return</font> _result; }; 00065 <font class="keyword">const</font> T& result_noupdate()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _result; }; 00066 <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> T& a)<font class="keyword"> </font>{ _result = a; } 00067 <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> NCResult<T> &r)<font class="keyword"></font> 00068 <font class="keyword"> </font>{ ResultInfo::operator=(r); _result = r._result; }; 00069 }; 00070 00073 template <class T> <a name="l00074"></a><a class="code" href="class_sc__AccResult.html">00074</a> <font class="keyword">class </font>AccResult: <font class="keyword">public</font> AccResultInfo { 00075 <font class="keyword">private</font>: 00076 T _result; 00077 <font class="keyword">public</font>: 00078 AccResult(Compute*c):AccResultInfo(c)<font class="keyword"> </font>{}; 00079 AccResult(<font class="keyword">const</font> AccResult<T> &r, Compute*c):AccResultInfo(c)<font class="keyword"></font> 00080 <font class="keyword"> </font>{ _result=r._result; } 00081 operator T&()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> _result; }; 00082 T* operator ->()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> &_result; }; 00083 T& result()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> _result; }; 00084 T& result_noupdate()<font class="keyword"> </font>{ <font class="keywordflow">return</font> _result; }; 00085 <font class="keyword">const</font> T& result_noupdate()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _result; }; 00086 <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> T& a)<font class="keyword"> </font>{ _result = a; } 00087 <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> AccResult<T> &r)<font class="keyword"></font> 00088 <font class="keyword"> </font>{ AccResultInfo::operator=(r); _result = r._result; }; 00089 <font class="keywordtype">void</font> restore_state(StateIn&s)<font class="keyword"> </font>{ 00090 AccResultInfo::restore_state(s); 00091 } 00092 <font class="keywordtype">void</font> save_data_state(StateOut&s)<font class="keyword"></font> 00093 <font class="keyword"> </font>{ 00094 AccResultInfo::save_data_state(s); 00095 } 00096 AccResult(StateIn&s,Compute*c): AccResultInfo(s,c)<font class="keyword"> </font>{} 00097 }; 00098 00101 template <class T> <a name="l00102"></a><a class="code" href="class_sc__SSAccResult.html">00102</a> <font class="keyword">class </font>SSAccResult: <font class="keyword">public</font> AccResultInfo { 00103 <font class="keyword">private</font>: 00104 T _result; 00105 <font class="keyword">public</font>: 00106 SSAccResult(Compute*c):AccResultInfo(c)<font class="keyword"> </font>{}; 00107 SSAccResult(<font class="keyword">const</font> SSAccResult<T> &r, Compute*c):AccResultInfo(c)<font class="keyword"></font> 00108 <font class="keyword"> </font>{ _result=r._result; } 00109 operator T&()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> _result; }; 00110 T* operator ->()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> &_result; }; 00111 T& result()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> _result; }; 00112 T& result_noupdate()<font class="keyword"> </font>{ <font class="keywordflow">return</font> _result; }; 00113 <font class="keyword">const</font> T& result_noupdate()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _result; }; 00114 <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> T& a)<font class="keyword"> </font>{ _result = a; } 00115 <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> SSAccResult<T> &r)<font class="keyword"></font> 00116 <font class="keyword"> </font>{ AccResultInfo::operator=(r); _result = r._result; }; 00117 <font class="keywordtype">void</font> restore_state(StateIn&s)<font class="keyword"> </font>{ 00118 AccResultInfo::restore_state(s); 00119 _result.restore_state(s); 00120 } 00121 <font class="keywordtype">void</font> save_data_state(StateOut&s)<font class="keyword"></font> 00122 <font class="keyword"> </font>{ 00123 AccResultInfo::save_data_state(s); 00124 _result.save_data_state(s); 00125 } 00126 SSAccResult(StateIn&s,Compute*c): AccResultInfo(s,c), _result(s)<font class="keyword"> </font>{} 00127 }; 00128 00130 template <class T> <a name="l00131"></a><a class="code" href="class_sc__NCAccResult.html">00131</a> <font class="keyword">class </font>NCAccResult: <font class="keyword">public</font> AccResultInfo { 00132 <font class="keyword">private</font>: 00133 T _result; 00134 <font class="keyword">public</font>: 00135 NCAccResult(Compute*c):AccResultInfo(c)<font class="keyword"> </font>{}; 00136 NCAccResult(<font class="keyword">const</font> NCAccResult<T> &r, Compute*c):AccResultInfo(c)<font class="keyword"></font> 00137 <font class="keyword"> </font>{ _result=r._result; } 00138 operator T&()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> _result; }; 00139 T& result()<font class="keyword"> </font>{ update(); <font class="keywordflow">return</font> _result; }; 00140 T& result_noupdate()<font class="keyword"> </font>{ <font class="keywordflow">return</font> _result; }; 00141 <font class="keyword">const</font> T& result_noupdate()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _result; }; 00142 <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> T& a)<font class="keyword"> </font>{ _result = a; } 00143 <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> NCAccResult<T> &r)<font class="keyword"></font> 00144 <font class="keyword"> </font>{ AccResultInfo::operator=(r); _result = r._result; }; 00145 <font class="keywordtype">void</font> restore_state(StateIn&s)<font class="keyword"> </font>{ 00146 AccResultInfo::restore_state(s); 00147 s.get(_result); 00148 } 00149 <font class="keywordtype">void</font> save_data_state(StateOut&s)<font class="keyword"></font> 00150 <font class="keyword"> </font>{ 00151 AccResultInfo::save_data_state(s); 00152 s.put(_result); 00153 } 00154 NCAccResult(StateIn&s,Compute*c): AccResultInfo(s,c)<font class="keyword"> </font>{s.get(_result);} 00155 }; 00156 00157 } 00158 00159 <font class="comment">// ///////////////////////////////////////////////////////////////////////////</font> 00160 00161 <font class="comment">// Local Variables:</font> 00162 <font class="comment">// mode: c++</font> 00163 <font class="comment">// c-file-style: "CLJ"</font> 00164 <font class="comment">// End:</font> </div></pre><hr> <address> <small> Generated at Mon Oct 14 14:16:36 2002 for <a href="http://aros.ca.sandia.gov/~cljanss/mpqc">MPQC</a> 2.1.2 using the documentation package <a href="http://www.stack.nl/~dimitri/doxygen/index.html">Doxygen</a> 1.2.5. </small> </address> </body> </html>