<!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> <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>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 <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="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 <util/state/state.h></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&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&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&)<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->next(); } 00097 <font class="keywordtype">void</font> operator ++(<font class="keywordtype">int</font>)<font class="keyword"> </font>{ link = link->next(); } 00098 SCMatrixBlock* block()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> link->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&); 00107 ~SCMatrixBlockList(); 00108 <font class="keywordtype">void</font> save_data_state(StateOut&); 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&); 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&); 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&); 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&); 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&); 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&); 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&); 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&); 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&); 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&); 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&); 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&); 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&); 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&); 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&); 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&); 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<SCMatrixBlock> block_; 00408 <font class="keywordtype">int</font> ready_; 00409 <font class="keyword">public</font>: 00410 SCMatrixSimpleSubblockIter(Access, <font class="keyword">const</font> Ref<SCMatrixBlock> &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<SCMatrixBlockList> list_; 00420 SCMatrixBlockListIter iter_; 00421 <font class="keyword">public</font>: 00422 SCMatrixListSubblockIter(Access, <font class="keyword">const</font> Ref<SCMatrixBlockList> &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<SCMatrixSubblockIter> *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<SCMatrixSubblockIter>&, 00447 Ref<SCMatrixSubblockIter>&); 00448 ~SCMatrixCompositeSubblockIter(); 00449 <font class="keywordtype">void</font> set_iter(<font class="keywordtype">int</font> i, <font class="keyword">const</font> Ref<SCMatrixSubblockIter> &); 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<SCMatrixSubblockIter> *iters_; 00462 <font class="keyword">public</font>: 00463 SCMatrixJointSubblockIter(<font class="keyword">const</font> Ref<SCMatrixSubblockIter>&, 00464 <font class="keyword">const</font> Ref<SCMatrixSubblockIter>&, 00465 <font class="keyword">const</font> Ref<SCMatrixSubblockIter>& = 0, 00466 <font class="keyword">const</font> Ref<SCMatrixSubblockIter>& = 0, 00467 <font class="keyword">const</font> Ref<SCMatrixSubblockIter>& = 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>