Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > media > contrib > by-pkgid > 263386785cefb9ae5d63b926d214d809 > files > 29

mpqc-2.1.2-4mdk.ppc.rpm

<!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>block.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:35 2002 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>block.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font>
00002 <font class="comment">// block.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 &lt;cljanss@limitpt.com&gt;</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="preprocessor">#ifndef _math_scmat_block_h</font>
00029 <font class="preprocessor"></font><font class="preprocessor">#define _math_scmat_block_h</font>
00030 <font class="preprocessor"></font>
00031 <font class="preprocessor">#ifdef __GNUC__</font>
00032 <font class="preprocessor"></font><font class="preprocessor">#pragma interface</font>
00033 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00034 <font class="preprocessor"></font>
00035 <font class="preprocessor">#include &lt;util/state/state.h&gt;</font>
00036 
00037 <font class="keyword">namespace </font>sc {
00038 
00039 <font class="keyword">class </font>SCElementOp;
00040 <font class="keyword">class </font>SCElementOp2;
00041 <font class="keyword">class </font>SCElementOp3;
00042 
<a name="l00045"></a><a class="code" href="class_sc__SCMatrixBlock.html">00045</a> <font class="keyword">class </font>SCMatrixBlock: <font class="keyword">public</font> SavableState {
00046   <font class="keyword">public</font>:
00047     <font class="keywordtype">int</font> blocki, blockj;
00048   <font class="keyword">public</font>:
00049     SCMatrixBlock();
00050     SCMatrixBlock(StateIn&amp;s);
00051     <font class="keyword">virtual</font> ~SCMatrixBlock();
00052     <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrixBlock.html#a3">save_data_state</a>(StateOut&amp;s);
00053 
00057     <font class="keyword">virtual</font> SCMatrixBlock *<a class="code" href="class_sc__SCMatrixBlock.html#a4">deepcopy</a>() <font class="keyword">const</font>;
00058 
00063     <font class="keyword">virtual</font> <font class="keywordtype">double</font> *<a class="code" href="class_sc__SCMatrixBlock.html#a5">dat</a>();
00064     <font class="keyword">virtual</font> <font class="keywordtype">int</font> ndat() <font class="keyword">const</font>;
00065 
00066     <font class="comment">// These routines are obsolete.</font>
00067     <font class="keyword">virtual</font> <font class="keywordtype">void</font> process(SCElementOp*) = 0;
00068     <font class="keyword">virtual</font> <font class="keywordtype">void</font> process(SCElementOp2*, SCMatrixBlock*) = 0;
00069     <font class="keyword">virtual</font> <font class="keywordtype">void</font> process(SCElementOp3*, SCMatrixBlock*, SCMatrixBlock*) = 0;
00070 };
00071 
00072 
00073 <font class="keyword">class </font>SCMatrixBlockListLink {
00074   <font class="keyword">private</font>:
00075     <font class="keywordtype">void</font> operator = (<font class="keyword">const</font> SCMatrixBlockListLink&amp;)<font class="keyword"> </font>{}  <font class="comment">// disallowed</font>
00076     SCMatrixBlock* _block;
00077     SCMatrixBlockListLink* _next;
00078   <font class="keyword">public</font>:
00079     SCMatrixBlockListLink(SCMatrixBlock*, SCMatrixBlockListLink* = 0);
00080     ~SCMatrixBlockListLink();
00081     <font class="keywordtype">void</font> block(SCMatrixBlock*);
00082     <font class="keywordtype">void</font> next(SCMatrixBlockListLink* link)<font class="keyword"> </font>{ _next = link; }
00083     SCMatrixBlock* block()<font class="keyword"> </font>{ <font class="keywordflow">return</font> _block; }
00084     SCMatrixBlockListLink* next()<font class="keyword"> </font>{ <font class="keywordflow">return</font> _next; }
00085 };
00086 
00087 <font class="keyword">class </font>SCMatrixBlockListIter {
00088   <font class="keyword">private</font>:
00089     SCMatrixBlockListLink* link;
00090   <font class="keyword">public</font>:
00091     SCMatrixBlockListIter(): link(0) {}
00092     SCMatrixBlockListIter(SCMatrixBlockListLink*l): link(l) {}
00093     <font class="keywordtype">int</font> operator !=(<font class="keyword">const</font> SCMatrixBlockListIter p)<font class="keyword"> const </font>{
00094         <font class="keywordflow">return</font> link != p.link;
00095       }
00096     <font class="keywordtype">void</font> operator ++()<font class="keyword"> </font>{ link = link-&gt;next(); }
00097     <font class="keywordtype">void</font> operator ++(<font class="keywordtype">int</font>)<font class="keyword"> </font>{ link = link-&gt;next(); }
00098     SCMatrixBlock* block()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> link-&gt;block(); }
00099 };
00100 
00101 <font class="keyword">class </font>SCMatrixBlockList: <font class="keyword">public</font> SavableState {
00102   <font class="keyword">private</font>:
00103     SCMatrixBlockListLink* _begin;
00104   <font class="keyword">public</font>:
00105     SCMatrixBlockList();
00106     SCMatrixBlockList(StateIn&amp;);
00107     ~SCMatrixBlockList();
00108     <font class="keywordtype">void</font> save_data_state(StateOut&amp;);
00109     <font class="keywordtype">void</font> insert(SCMatrixBlock*);
00110     <font class="keywordtype">void</font> append(SCMatrixBlock*);
00111     SCMatrixBlockListIter begin()<font class="keyword"> </font>{ <font class="keywordflow">return</font> _begin; }
00112     SCMatrixBlockListIter end()<font class="keyword"> </font>{ <font class="keywordflow">return</font> 0; }
00113     SCMatrixBlockList *deepcopy();
00114 };
00115 
00116 
<a name="l00127"></a><a class="code" href="class_sc__SCVectorSimpleBlock.html">00127</a> <font class="keyword">class </font>SCVectorSimpleBlock: <font class="keyword">public</font> SCMatrixBlock {
00128   <font class="keyword">public</font>:
00129     SCVectorSimpleBlock(<font class="keywordtype">int</font> istart,<font class="keywordtype">int</font> iend);
00130     SCVectorSimpleBlock(StateIn&amp;);
00131     <font class="keyword">virtual</font> ~SCVectorSimpleBlock();
00132     <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVectorSimpleBlock.html#a3">save_data_state</a>(StateOut&amp;);
00133     <font class="keywordtype">int</font> istart;
00134     <font class="keywordtype">int</font> iend;
00135     <font class="keywordtype">double</font>* data;
00136 
00137     SCMatrixBlock *<a class="code" href="class_sc__SCVectorSimpleBlock.html#a4">deepcopy</a>() <font class="keyword">const</font>;
00138 
00139     <font class="keywordtype">void</font> process(SCElementOp*);
00140     <font class="keywordtype">void</font> process(SCElementOp2*, SCMatrixBlock*);
00141     <font class="keywordtype">void</font> process(SCElementOp3*, SCMatrixBlock*, SCMatrixBlock*);
00142 
00143     <font class="keywordtype">double</font> *<a class="code" href="class_sc__SCVectorSimpleBlock.html#a8">dat</a>();
00144     <font class="keywordtype">int</font> ndat() <font class="keyword">const</font>;
00145 };
00146 
00147 
<a name="l00158"></a><a class="code" href="class_sc__SCVectorSimpleSubBlock.html">00158</a> <font class="keyword">class </font>SCVectorSimpleSubBlock: <font class="keyword">public</font> SCMatrixBlock {
00159   <font class="keyword">public</font>:
00160     SCVectorSimpleSubBlock(<font class="keywordtype">int</font> istart,<font class="keywordtype">int</font> iend, <font class="keywordtype">int</font> offset, <font class="keywordtype">double</font>* data);
00161     SCVectorSimpleSubBlock(StateIn&amp;);
00162     <font class="keyword">virtual</font> ~SCVectorSimpleSubBlock();
00163     <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVectorSimpleSubBlock.html#a3">save_data_state</a>(StateOut&amp;);
00164     <font class="keywordtype">int</font> istart;
00165     <font class="keywordtype">int</font> iend;
00166     <font class="keywordtype">int</font> offset;
00167     <font class="keywordtype">double</font>* data;
00168 
00169     <font class="keywordtype">void</font> process(SCElementOp*);
00170     <font class="keywordtype">void</font> process(SCElementOp2*, SCMatrixBlock*);
00171     <font class="keywordtype">void</font> process(SCElementOp3*, SCMatrixBlock*, SCMatrixBlock*);
00172 };
00173 
00174 
<a name="l00187"></a><a class="code" href="class_sc__SCMatrixRectBlock.html">00187</a> <font class="keyword">class </font>SCMatrixRectBlock: <font class="keyword">public</font> SCMatrixBlock {
00188   <font class="keyword">public</font>:
00189     SCMatrixRectBlock(<font class="keywordtype">int</font> is, <font class="keywordtype">int</font> ie, <font class="keywordtype">int</font> js, <font class="keywordtype">int</font> je);
00190     SCMatrixRectBlock(StateIn&amp;);
00191     <font class="keyword">virtual</font> ~SCMatrixRectBlock();
00192     <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrixRectBlock.html#a3">save_data_state</a>(StateOut&amp;);
00193     <font class="keywordtype">int</font> istart;
00194     <font class="keywordtype">int</font> jstart;
00195     <font class="keywordtype">int</font> iend;
00196     <font class="keywordtype">int</font> jend;
00197     <font class="keywordtype">double</font>* data;
00198 
00199     SCMatrixBlock *<a class="code" href="class_sc__SCMatrixRectBlock.html#a4">deepcopy</a>() <font class="keyword">const</font>;
00200 
00201     <font class="keywordtype">void</font> process(SCElementOp*);
00202     <font class="keywordtype">void</font> process(SCElementOp2*, SCMatrixBlock*);
00203     <font class="keywordtype">void</font> process(SCElementOp3*, SCMatrixBlock*, SCMatrixBlock*);
00204 
00205     <font class="keywordtype">double</font> *<a class="code" href="class_sc__SCMatrixRectBlock.html#a8">dat</a>();
00206     <font class="keywordtype">int</font> ndat() <font class="keyword">const</font>;
00207 };
00208 
00209 
<a name="l00223"></a><a class="code" href="class_sc__SCMatrixRectSubBlock.html">00223</a> <font class="keyword">class </font>SCMatrixRectSubBlock: <font class="keyword">public</font> SCMatrixBlock {
00224   <font class="keyword">public</font>:
00225     SCMatrixRectSubBlock(<font class="keywordtype">int</font> is, <font class="keywordtype">int</font> ie, <font class="keywordtype">int</font> istride, <font class="keywordtype">int</font> js, <font class="keywordtype">int</font> je,
00226                          <font class="keywordtype">double</font>* data);
00227     SCMatrixRectSubBlock(StateIn&amp;);
00228     <font class="comment">// does not delete the data member</font>
00229     <font class="keyword">virtual</font> ~SCMatrixRectSubBlock();
00230     <font class="comment">// does not save the data member</font>
00231     <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrixRectSubBlock.html#a3">save_data_state</a>(StateOut&amp;);
00232     <font class="keywordtype">int</font> istart;
00233     <font class="keywordtype">int</font> jstart;
00234     <font class="keywordtype">int</font> iend;
00235     <font class="keywordtype">int</font> jend;
00236     <font class="keywordtype">int</font> istride;
00237     <font class="keywordtype">double</font>* data;
00238 
00239     <font class="keywordtype">void</font> process(SCElementOp*);
00240     <font class="keywordtype">void</font> process(SCElementOp2*, SCMatrixBlock*);
00241     <font class="keywordtype">void</font> process(SCElementOp3*, SCMatrixBlock*, SCMatrixBlock*);
00242 };
00243 
00244 
<a name="l00257"></a><a class="code" href="class_sc__SCMatrixLTriBlock.html">00257</a> <font class="keyword">class </font>SCMatrixLTriBlock: <font class="keyword">public</font> SCMatrixBlock {
00258   <font class="keyword">public</font>:
00259     SCMatrixLTriBlock(<font class="keywordtype">int</font> s,<font class="keywordtype">int</font> e);
00260     SCMatrixLTriBlock(StateIn&amp;);
00261     <font class="keyword">virtual</font> ~SCMatrixLTriBlock();
00262     <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrixLTriBlock.html#a3">save_data_state</a>(StateOut&amp;);
00263     <font class="keywordtype">int</font> start;
00264     <font class="keywordtype">int</font> end;
00265     <font class="keywordtype">double</font>* data;
00266 
00267     SCMatrixBlock *<a class="code" href="class_sc__SCMatrixLTriBlock.html#a4">deepcopy</a>() <font class="keyword">const</font>;
00268 
00269     <font class="keywordtype">void</font> process(SCElementOp*);
00270     <font class="keywordtype">void</font> process(SCElementOp2*, SCMatrixBlock*);
00271     <font class="keywordtype">void</font> process(SCElementOp3*, SCMatrixBlock*, SCMatrixBlock*);
00272 
00273     <font class="keywordtype">double</font> *<a class="code" href="class_sc__SCMatrixLTriBlock.html#a8">dat</a>();
00274     <font class="keywordtype">int</font> ndat() <font class="keyword">const</font>;
00275 };
00276 
00277 
<a name="l00292"></a><a class="code" href="class_sc__SCMatrixLTriSubBlock.html">00292</a> <font class="keyword">class </font>SCMatrixLTriSubBlock: <font class="keyword">public</font> SCMatrixBlock {
00293   <font class="keyword">public</font>:
00294     SCMatrixLTriSubBlock(<font class="keywordtype">int</font> is,<font class="keywordtype">int</font> ie,<font class="keywordtype">int</font> js,<font class="keywordtype">int</font> je,<font class="keywordtype">double</font>*data);
00295     SCMatrixLTriSubBlock(StateIn&amp;);
00296     <font class="comment">// does not delete the data member</font>
00297     <font class="keyword">virtual</font> ~SCMatrixLTriSubBlock();
00298     <font class="comment">// does not save the data member</font>
00299     <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrixLTriSubBlock.html#a3">save_data_state</a>(StateOut&amp;);
00300     <font class="keywordtype">int</font> istart;
00301     <font class="keywordtype">int</font> iend;
00302     <font class="keywordtype">int</font> jstart;
00303     <font class="keywordtype">int</font> jend;
00304     <font class="keywordtype">double</font>* data;
00305 
00306     <font class="keywordtype">void</font> process(SCElementOp*);
00307     <font class="keywordtype">void</font> process(SCElementOp2*, SCMatrixBlock*);
00308     <font class="keywordtype">void</font> process(SCElementOp3*, SCMatrixBlock*, SCMatrixBlock*);
00309 };
00310 
00311 
<a name="l00322"></a><a class="code" href="class_sc__SCMatrixDiagBlock.html">00322</a> <font class="keyword">class </font>SCMatrixDiagBlock: <font class="keyword">public</font> SCMatrixBlock {
00323   <font class="keyword">public</font>:
00324     SCMatrixDiagBlock(<font class="keywordtype">int</font> istart,<font class="keywordtype">int</font> iend,<font class="keywordtype">int</font> jstart);
00325     SCMatrixDiagBlock(<font class="keywordtype">int</font> istart,<font class="keywordtype">int</font> iend);
00326     SCMatrixDiagBlock(StateIn&amp;);
00327     <font class="keyword">virtual</font> ~SCMatrixDiagBlock();
00328     <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrixDiagBlock.html#a4">save_data_state</a>(StateOut&amp;);
00329     <font class="keywordtype">int</font> istart;
00330     <font class="keywordtype">int</font> jstart;
00331     <font class="keywordtype">int</font> iend;
00332     <font class="keywordtype">double</font>* data;
00333 
00334     SCMatrixBlock *<a class="code" href="class_sc__SCMatrixDiagBlock.html#a5">deepcopy</a>() <font class="keyword">const</font>;
00335 
00336     <font class="keywordtype">void</font> process(SCElementOp*);
00337     <font class="keywordtype">void</font> process(SCElementOp2*, SCMatrixBlock*);
00338     <font class="keywordtype">void</font> process(SCElementOp3*, SCMatrixBlock*, SCMatrixBlock*);
00339 
00340     <font class="keywordtype">double</font> *<a class="code" href="class_sc__SCMatrixDiagBlock.html#a9">dat</a>();
00341     <font class="keywordtype">int</font> ndat() <font class="keyword">const</font>;
00342 };
00343 
00344 
<a name="l00355"></a><a class="code" href="class_sc__SCMatrixDiagSubBlock.html">00355</a> <font class="keyword">class </font>SCMatrixDiagSubBlock: <font class="keyword">public</font> SCMatrixBlock {
00356   <font class="keyword">public</font>:
00357     SCMatrixDiagSubBlock(<font class="keywordtype">int</font> istart,<font class="keywordtype">int</font> iend,<font class="keywordtype">int</font> jstart, <font class="keywordtype">int</font> offset,
00358                          <font class="keywordtype">double</font>*data);
00359     SCMatrixDiagSubBlock(<font class="keywordtype">int</font> istart,<font class="keywordtype">int</font> iend, <font class="keywordtype">int</font> offset, <font class="keywordtype">double</font>*data);
00360     SCMatrixDiagSubBlock(StateIn&amp;);
00361     <font class="comment">// does not delete the data member</font>
00362     <font class="keyword">virtual</font> ~SCMatrixDiagSubBlock();
00363     <font class="comment">// does not save the data member</font>
00364     <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrixDiagSubBlock.html#a4">save_data_state</a>(StateOut&amp;);
00365     <font class="keywordtype">int</font> istart;
00366     <font class="keywordtype">int</font> jstart;
00367     <font class="keywordtype">int</font> iend;
00368     <font class="keywordtype">int</font> offset;
00369     <font class="keywordtype">double</font>* data;
00370 
00371     <font class="keywordtype">void</font> process(SCElementOp*);
00372     <font class="keywordtype">void</font> process(SCElementOp2*, SCMatrixBlock*);
00373     <font class="keywordtype">void</font> process(SCElementOp3*, SCMatrixBlock*, SCMatrixBlock*);
00374 };
00375 
00376 
00377 <font class="comment">// //////////////////////////////////////////////////////////////////</font>
00378 <font class="comment">// Classes that iterate through the blocks of a matrix.</font>
00379 
<a name="l00383"></a><a class="code" href="class_sc__SCMatrixSubblockIter.html">00383</a> <font class="keyword">class </font>SCMatrixSubblockIter: <font class="keyword">public</font> RefCount {
00384   <font class="keyword">public</font>:
00385     <font class="keyword">enum</font> Access { Read, Write, Accum, None };
00386   <font class="keyword">protected</font>:
00387     Access access_;
00388   <font class="keyword">public</font>:
<a name="l00391"></a><a class="code" href="class_sc__SCMatrixSubblockIter.html#a0">00391</a>     <a class="code" href="class_sc__SCMatrixSubblockIter.html#a0">SCMatrixSubblockIter</a>(Access access): access_(access) {}
00393     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrixSubblockIter.html#a1">begin</a>() = 0;
00395     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__SCMatrixSubblockIter.html#a2">ready</a>() = 0;
00397     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrixSubblockIter.html#a3">next</a>() = 0;
00399     <font class="keyword">virtual</font> SCMatrixBlock *<a class="code" href="class_sc__SCMatrixSubblockIter.html#a4">block</a>() = 0;
<a name="l00401"></a><a class="code" href="class_sc__SCMatrixSubblockIter.html#a5">00401</a>     Access <a class="code" href="class_sc__SCMatrixSubblockIter.html#a5">access</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> access_; }
00402 };
00403 
00404 
00405 <font class="keyword">class </font>SCMatrixSimpleSubblockIter: <font class="keyword">public</font> SCMatrixSubblockIter {
00406   <font class="keyword">protected</font>:
00407     Ref&lt;SCMatrixBlock&gt; block_;
00408     <font class="keywordtype">int</font> ready_;
00409   <font class="keyword">public</font>:
00410     SCMatrixSimpleSubblockIter(Access, <font class="keyword">const</font> Ref&lt;SCMatrixBlock&gt; &amp;b);
00411     <font class="keywordtype">void</font> begin();
00412     <font class="keywordtype">int</font> ready();
00413     <font class="keywordtype">void</font> next();
00414     SCMatrixBlock *block();
00415 };
00416 
00417 <font class="keyword">class </font>SCMatrixListSubblockIter: <font class="keyword">public</font> SCMatrixSubblockIter {
00418   <font class="keyword">protected</font>:
00419     Ref&lt;SCMatrixBlockList&gt; list_;
00420     SCMatrixBlockListIter iter_;
00421   <font class="keyword">public</font>:
00422     SCMatrixListSubblockIter(Access, <font class="keyword">const</font> Ref&lt;SCMatrixBlockList&gt; &amp;list);
00423     <font class="keywordtype">void</font> begin();
00424     <font class="keywordtype">int</font> ready();
00425     <font class="keywordtype">void</font> next();
00426     SCMatrixBlock *block();
00427 };
00428 
00429 <font class="keyword">class </font>SCMatrixNullSubblockIter: <font class="keyword">public</font> SCMatrixSubblockIter {
00430   <font class="keyword">public</font>:
00431     SCMatrixNullSubblockIter();
00432     SCMatrixNullSubblockIter(Access);
00433     <font class="keywordtype">void</font> begin();
00434     <font class="keywordtype">int</font> ready();
00435     <font class="keywordtype">void</font> next();
00436     SCMatrixBlock *block();
00437 };
00438 
00439 <font class="keyword">class </font>SCMatrixCompositeSubblockIter: <font class="keyword">public</font> SCMatrixSubblockIter {
00440   <font class="keyword">protected</font>:
00441     <font class="keywordtype">int</font> niters_;
00442     Ref&lt;SCMatrixSubblockIter&gt; *iters_;
00443     <font class="keywordtype">int</font> iiter_;
00444   <font class="keyword">public</font>:
00445     SCMatrixCompositeSubblockIter(Access, <font class="keywordtype">int</font> niter);
00446     SCMatrixCompositeSubblockIter(Ref&lt;SCMatrixSubblockIter&gt;&amp;,
00447                                   Ref&lt;SCMatrixSubblockIter&gt;&amp;);
00448     ~SCMatrixCompositeSubblockIter();
00449     <font class="keywordtype">void</font> set_iter(<font class="keywordtype">int</font> i, <font class="keyword">const</font> Ref&lt;SCMatrixSubblockIter&gt; &amp;);
00450     <font class="keywordtype">void</font> begin();
00451     <font class="keywordtype">int</font> ready();
00452     <font class="keywordtype">void</font> next();
00453     SCMatrixBlock *block();
00454     <font class="keywordtype">int</font> current_block()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> iiter_; }
00455 };
00456 
00457 
00458 <font class="keyword">class </font>SCMatrixJointSubblockIter: <font class="keyword">public</font> SCMatrixSubblockIter {
00459   <font class="keyword">protected</font>:
00460     <font class="keywordtype">int</font> niters_;
00461     Ref&lt;SCMatrixSubblockIter&gt; *iters_;
00462   <font class="keyword">public</font>:
00463     SCMatrixJointSubblockIter(<font class="keyword">const</font> Ref&lt;SCMatrixSubblockIter&gt;&amp;,
00464                               <font class="keyword">const</font> Ref&lt;SCMatrixSubblockIter&gt;&amp;,
00465                               <font class="keyword">const</font> Ref&lt;SCMatrixSubblockIter&gt;&amp; = 0,
00466                               <font class="keyword">const</font> Ref&lt;SCMatrixSubblockIter&gt;&amp; = 0,
00467                               <font class="keyword">const</font> Ref&lt;SCMatrixSubblockIter&gt;&amp; = 0);
00468     ~SCMatrixJointSubblockIter();
00469     <font class="keywordtype">void</font> begin();
00470     <font class="keywordtype">int</font> ready();
00471     <font class="keywordtype">void</font> next();
00472     SCMatrixBlock *block();
00473     SCMatrixBlock *block(<font class="keywordtype">int</font> i);
00474 };
00475 
00476 }
00477 
00478 <font class="preprocessor">#endif</font>
00479 <font class="preprocessor"></font>
00480 <font class="comment">// Local Variables:</font>
00481 <font class="comment">// mode: c++</font>
00482 <font class="comment">// c-file-style: "CLJ"</font>
00483 <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>