Sophie

Sophie

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

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>surf.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:38 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>surf.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font>
00002 <font class="comment">// surf.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_isosurf_surf_h</font>
00029 <font class="preprocessor"></font><font class="preprocessor">#define _math_isosurf_surf_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">#ifdef HAVE_CONFIG_H</font>
00036 <font class="preprocessor"></font><font class="preprocessor">#include &lt;scconfig.h&gt;</font>
00037 <font class="preprocessor">#endif</font>
00038 <font class="preprocessor"></font>
00039 <font class="preprocessor">#ifdef HAVE_STL</font>
00040 <font class="preprocessor"></font><font class="preprocessor">#include &lt;vector&gt;</font>
00041 <font class="preprocessor">#endif</font>
00042 <font class="preprocessor"></font>
00043 <font class="preprocessor">#include &lt;util/container/array.h&gt;</font>
00044 <font class="preprocessor">#include &lt;math/isosurf/triangle.h&gt;</font>
00045 <font class="preprocessor">#include &lt;math/isosurf/volume.h&gt;</font>
00046 <font class="preprocessor">#include &lt;util/render/render.h&gt;</font>
00047 
00048 <font class="keyword">namespace </font>sc {
00049 
00050 <font class="keyword">class </font>TriangulatedSurface: <font class="keyword">public</font> DescribedClass {
00051   <font class="keyword">protected</font>:
00052     <font class="keywordtype">int</font> _verbose;
00053     <font class="keywordtype">int</font> _debug;
00054 
00055     <font class="keywordtype">int</font> _completed_surface;
00056 
00057     <font class="comment">// sets of objects that make up the surface</font>
00058     AVLSet&lt;Ref&lt;Vertex&gt; &gt; _vertices;
00059     AVLSet&lt;Ref&lt;Edge&gt; &gt; _edges;
00060     AVLSet&lt;Ref&lt;Triangle&gt; &gt; _triangles;
00061 
00062     <font class="comment">// map objects to an integer index</font>
00063     AVLMap&lt;Ref&lt;Vertex&gt;,<font class="keywordtype">int</font>&gt; _vertex_to_index;
00064     AVLMap&lt;Ref&lt;Edge&gt;,<font class="keywordtype">int</font>&gt; _edge_to_index;
00065     AVLMap&lt;Ref&lt;Triangle&gt;,<font class="keywordtype">int</font>&gt; _triangle_to_index;
00066 
00067     <font class="comment">// map integer indices to an object</font>
00068 <font class="preprocessor">#ifdef HAVE_STL</font>
00069 <font class="preprocessor"></font>    std::vector&lt;Ref&lt;Vertex&gt; &gt; _index_to_vertex;
00070     std::vector&lt;Ref&lt;Edge&gt; &gt; _index_to_edge;
00071     std::vector&lt;Ref&lt;Triangle&gt; &gt; _index_to_triangle;
00072 <font class="preprocessor">#else</font>
00073 <font class="preprocessor"></font>    Array&lt;Ref&lt;Vertex&gt; &gt; _index_to_vertex;
00074     Array&lt;Ref&lt;Edge&gt; &gt; _index_to_edge;
00075     Array&lt;Ref&lt;Triangle&gt; &gt; _index_to_triangle;
00076 <font class="preprocessor">#endif</font>
00077 <font class="preprocessor"></font>
00078     <font class="comment">// mappings between array element numbers</font>
00079     <font class="keywordtype">int</font>** _triangle_vertex;
00080     <font class="keywordtype">int</font>** _triangle_edge;
00081     <font class="keywordtype">int</font>** _edge_vertex;
00082 
00083     <font class="comment">// values for each of the vertices</font>
00084     <font class="keywordtype">int</font> _have_values;
00085     Arraydouble _values;
00086 
00087     <font class="comment">// what to use to integrate over the surface, by default</font>
00088     Ref&lt;TriangleIntegrator&gt; _integrator;
00089     <font class="comment">// other integrators, in terms of time &amp; accuracy:</font>
00090     <font class="comment">// _fast_integrator &lt;= _integrator &lt;= _accurate_interator</font>
00091     Ref&lt;TriangleIntegrator&gt; _fast_integrator;
00092     Ref&lt;TriangleIntegrator&gt; _accurate_integrator;
00093 
00094     <font class="keywordtype">void</font> clear_int_arrays();
00095 
00096     <font class="keywordtype">void</font> complete_ref_arrays();
00097     <font class="keywordtype">void</font> complete_int_arrays();
00098 
00099     <font class="keywordtype">void</font> recompute_index_maps();
00100 
00101     <font class="keywordtype">void</font> add_triangle(<font class="keyword">const</font> Ref&lt;Triangle&gt;&amp;);
00102     <font class="keywordtype">void</font> add_vertex(<font class="keyword">const</font> Ref&lt;Vertex&gt;&amp;);
00103     <font class="keywordtype">void</font> add_edge(<font class="keyword">const</font> Ref&lt;Edge&gt;&amp;);
00104 
00105     <font class="comment">// these members must be used to allocate new triangles and edges</font>
00106     <font class="comment">// since specializations of TriangulatedSurface might need to</font>
00107     <font class="comment">// override these to produce triangles and edges with interpolation</font>
00108     <font class="comment">// data.</font>
00109     <font class="keyword">virtual</font> Triangle* newTriangle(<font class="keyword">const</font> Ref&lt;Edge&gt;&amp;,
00110                                   <font class="keyword">const</font> Ref&lt;Edge&gt;&amp;,
00111                                   <font class="keyword">const</font> Ref&lt;Edge&gt;&amp;,
00112                                   <font class="keywordtype">int</font> orientation) <font class="keyword">const</font>;
00113     <font class="keyword">virtual</font> Edge* newEdge(<font class="keyword">const</font> Ref&lt;Vertex&gt;&amp;,<font class="keyword">const</font> Ref&lt;Vertex&gt;&amp;) <font class="keyword">const</font>;
00114 
00115     <font class="comment">// this map of edges to vertices is used to construct the surface</font>
00116     AVLMap&lt;Ref&lt;Vertex&gt;,AVLSet&lt;Ref&lt;Edge&gt; &gt; &gt; _tmp_edges;
00117   <font class="keyword">public</font>:
00118     TriangulatedSurface();
00119     TriangulatedSurface(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00120     <font class="keyword">virtual</font> ~TriangulatedSurface();
00121 
00122     <font class="comment">// control printing</font>
00123     <font class="keywordtype">int</font> verbose()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _verbose; }
00124     <font class="keywordtype">void</font> verbose(<font class="keywordtype">int</font> v)<font class="keyword"> </font>{ _verbose = v; }
00125 
00126     <font class="comment">// set up an integrator</font>
00127     <font class="keywordtype">void</font> set_integrator(<font class="keyword">const</font> Ref&lt;TriangleIntegrator&gt;&amp;);
00128     <font class="keywordtype">void</font> set_fast_integrator(<font class="keyword">const</font> Ref&lt;TriangleIntegrator&gt;&amp;);
00129     <font class="keywordtype">void</font> set_accurate_integrator(<font class="keyword">const</font> Ref&lt;TriangleIntegrator&gt;&amp;);
00130     <font class="keyword">virtual</font> Ref&lt;TriangleIntegrator&gt; integrator(<font class="keywordtype">int</font> itri);
00131     <font class="keyword">virtual</font> Ref&lt;TriangleIntegrator&gt; fast_integrator(<font class="keywordtype">int</font> itri);
00132     <font class="keyword">virtual</font> Ref&lt;TriangleIntegrator&gt; accurate_integrator(<font class="keywordtype">int</font> itri);
00133 
00134     <font class="comment">// construct the surface</font>
00135     <font class="keywordtype">void</font> add_triangle(<font class="keyword">const</font> Ref&lt;Vertex&gt;&amp;,
00136                       <font class="keyword">const</font> Ref&lt;Vertex&gt;&amp;,
00137                       <font class="keyword">const</font> Ref&lt;Vertex&gt;&amp;);
00138     Ref&lt;Edge&gt; find_edge(<font class="keyword">const</font> Ref&lt;Vertex&gt;&amp;, <font class="keyword">const</font> Ref&lt;Vertex&gt;&amp;);
00139     <font class="keyword">virtual</font> <font class="keywordtype">void</font> complete_surface();
00140 
00141     <font class="comment">// clean up the surface</font>
00142     <font class="keyword">virtual</font> <font class="keywordtype">void</font> remove_short_edges(<font class="keywordtype">double</font> cutoff_length = 1.0e-6,
00143                                     <font class="keyword">const</font> Ref&lt;Volume&gt; &amp;vol=0, <font class="keywordtype">double</font> isoval=0.0);
00144     <font class="keyword">virtual</font> <font class="keywordtype">void</font> remove_slender_triangles(
00145                                     <font class="keywordtype">int</font> remove_slender, <font class="keywordtype">double</font> height_cutoff,
00146                                     <font class="keywordtype">int</font> remove_small, <font class="keywordtype">double</font> area_cutoff,
00147                                     <font class="keyword">const</font> Ref&lt;Volume&gt; &amp;vol=0, <font class="keywordtype">double</font> isoval=0.0);
00148     <font class="keyword">virtual</font> <font class="keywordtype">void</font> fix_orientation();
00149     <font class="keyword">virtual</font> <font class="keywordtype">void</font> clear();
00150 
00151     <font class="comment">// get information from the object sets</font>
00152     <font class="keywordtype">int</font> nvertex()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _vertices.length(); };
00153     Ref&lt;Vertex&gt; vertex(<font class="keywordtype">int</font> i)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _index_to_vertex[i]; };
00154     <font class="keywordtype">int</font> vertex_index(<font class="keyword">const</font> Ref&lt;Vertex&gt; &amp;o)<font class="keyword"> </font>{
00155       AVLMap&lt;Ref&lt;Vertex&gt;,<font class="keywordtype">int</font>&gt;::iterator i = _vertex_to_index.find(o);
00156       <font class="keywordflow">if</font> (i != _vertex_to_index.end()) <font class="keywordflow">return</font> i.data();
00157       <font class="keywordflow">return</font> -1;
00158     }
00159     <font class="keywordtype">int</font> nedge()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _edges.length(); };
00160     Ref&lt;Edge&gt; edge(<font class="keywordtype">int</font> i)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _index_to_edge[i]; };
00161     <font class="keywordtype">int</font> edge_index(<font class="keyword">const</font> Ref&lt;Edge&gt; &amp;o)<font class="keyword"> </font>{
00162       AVLMap&lt;Ref&lt;Edge&gt;,<font class="keywordtype">int</font>&gt;::iterator i = _edge_to_index.find(o);
00163       <font class="keywordflow">if</font> (i != _edge_to_index.end()) <font class="keywordflow">return</font> i.data();
00164       <font class="keywordflow">return</font> -1;
00165     }
00166     <font class="keywordtype">int</font> ntriangle()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _triangles.length(); };
00167     Ref&lt;Triangle&gt; triangle(<font class="keywordtype">int</font> i)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _index_to_triangle[i]; }
00168     <font class="keywordtype">int</font> triangle_index(<font class="keyword">const</font> Ref&lt;Triangle&gt; &amp;o)<font class="keyword"> </font>{
00169       AVLMap&lt;Ref&lt;Triangle&gt;,<font class="keywordtype">int</font>&gt;::iterator i = _triangle_to_index.find(o);
00170       <font class="keywordflow">if</font> (i != _triangle_to_index.end()) <font class="keywordflow">return</font> i.data();
00171       <font class="keywordflow">return</font> -1;
00172     }
00173 
00174     <font class="comment">// information from the index mappings</font>
00175     <font class="keywordtype">int</font> triangle_vertex(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _triangle_vertex[i][j]; };
00176     <font class="keywordtype">int</font> triangle_edge(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _triangle_edge[i][j]; };
00177     <font class="keywordtype">int</font> edge_vertex(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _edge_vertex[i][j]; };
00178 
00179     <font class="comment">// associate values with vertices</font>
00180     <font class="comment">//void compute_colors(Volume&amp;);</font>
00181     <font class="keywordtype">void</font> compute_values(Ref&lt;Volume&gt;&amp;);
00182 
00183     <font class="comment">// properties of the surface</font>
00184     <font class="keyword">virtual</font> <font class="keywordtype">double</font> flat_area(); <font class="comment">// use flat triangles</font>
00185     <font class="keyword">virtual</font> <font class="keywordtype">double</font> flat_volume(); <font class="comment">// use flat triangles</font>
00186     <font class="keyword">virtual</font> <font class="keywordtype">double</font> area();
00187     <font class="keyword">virtual</font> <font class="keywordtype">double</font> volume();
00188 
00189     <font class="comment">// output of the surface</font>
00190     <font class="keyword">virtual</font> <font class="keywordtype">void</font> print(std::ostream&amp;o=ExEnv::out0()) <font class="keyword">const</font>;
00191     <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_vertices_and_triangles(std::ostream&amp;o=ExEnv::out0()) <font class="keyword">const</font>;
00192     <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_geomview_format(std::ostream&amp;o=ExEnv::out0()) <font class="keyword">const</font>;
00193     <font class="keyword">virtual</font> <font class="keywordtype">void</font> render(<font class="keyword">const</font> Ref&lt;Render&gt; &amp;render);
00194 
00195     <font class="comment">// print information about the topology</font>
00196     <font class="keywordtype">void</font> topology_info(std::ostream&amp;o=ExEnv::out0());
00197     <font class="keywordtype">void</font> topology_info(<font class="keywordtype">int</font> nvertex, <font class="keywordtype">int</font> nedge, <font class="keywordtype">int</font> ntri, std::ostream&amp;o=ExEnv::out0());
00198 };
00199 
00200 
00201 <font class="keyword">class </font>TriangulatedSurfaceIntegrator {
00202   <font class="keyword">private</font>:
00203     Ref&lt;TriangulatedSurface&gt; _ts;
00204     <font class="keywordtype">int</font> _itri;
00205     <font class="keywordtype">int</font> _irs;
00206     <font class="keywordtype">double</font> _r;
00207     <font class="keywordtype">double</font> _s;
00208     <font class="keywordtype">double</font> _weight;
00209     <font class="keywordtype">double</font> _surface_element;
00210     Ref&lt;Vertex&gt; _current;
00211     SCVector3 _dA;
00212     Ref&lt;TriangleIntegrator&gt; (TriangulatedSurface::*_integrator)(<font class="keywordtype">int</font> itri);
00213     Ref&lt;MessageGrp&gt; _grp;
00214   <font class="keyword">public</font>:
00215     TriangulatedSurfaceIntegrator();
00216     <font class="comment">// the surface cannot be changed until this is destroyed</font>
00217     TriangulatedSurfaceIntegrator(<font class="keyword">const</font> Ref&lt;TriangulatedSurface&gt;&amp;);
00218     ~TriangulatedSurfaceIntegrator();
00219     <font class="comment">// Objects initialized by these operators are not automatically</font>
00220     <font class="comment">// updated.  This must be done with the update member.</font>
00221     <font class="comment">// The _grp is not copied.</font>
00222     <font class="keywordtype">void</font> operator = (<font class="keyword">const</font> TriangulatedSurfaceIntegrator&amp;);
00223     TriangulatedSurfaceIntegrator(<font class="keyword">const</font> TriangulatedSurfaceIntegrator&amp;i)<font class="keyword"> </font>{
00224         operator = (i);
00225       }
00226     <font class="comment">// Return the number of integration points.</font>
00227     <font class="keywordtype">int</font> n();
00228     <font class="comment">// Assign the surface.  Don't do this while iterating.</font>
00229     <font class="keywordtype">void</font> set_surface(<font class="keyword">const</font> Ref&lt;TriangulatedSurface&gt;&amp;);
00230     <font class="comment">// returns the number of the vertex in the current triangle</font>
00231     <font class="keywordtype">int</font> vertex_number(<font class="keywordtype">int</font> i);
00232     <font class="keyword">inline</font> <font class="keywordtype">double</font> r()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _r; }
00233     <font class="keyword">inline</font> <font class="keywordtype">double</font> s()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _s; }
00234     <font class="keyword">inline</font> <font class="keywordtype">double</font> w()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _weight*_surface_element; }
00235     <font class="keywordtype">double</font> surface_element()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _surface_element; }
00236     <font class="keywordtype">double</font> weight()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _weight; }
00237     <font class="keyword">const</font> SCVector3&amp; dA()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _dA; }
00238     Ref&lt;Vertex&gt; current();
00239     <font class="comment">// Tests to see if this point is valid, if it is then</font>
00240     <font class="comment">// _r, _s, etc are computed and 1 is returned.</font>
00241     <font class="keywordtype">int</font> update();
00242     <font class="comment">// This can be used to loop through unique pairs of points.</font>
00243     <font class="comment">// The argument should be a TriangulatedSurfaceIntegrator for</font>
00244     <font class="comment">// the same surface as this.</font>
00245     <font class="keywordtype">int</font> operator &lt; (TriangulatedSurfaceIntegrator&amp;i)<font class="keyword"> </font>{
00246         update();
00247         <font class="keywordflow">return</font> _itri&lt;i._itri?1:(_itri&gt;i._itri?0:(_irs&lt;i._irs?1:0));
00248       }
00249     <font class="comment">// Goes to the next point.  Does not update.</font>
00250     <font class="keywordtype">void</font> operator++();
00251     <font class="keyword">inline</font> <font class="keywordtype">void</font> operator++(<font class="keywordtype">int</font>)<font class="keyword"> </font>{ operator++(); }
00252     <font class="comment">// setting TSI = i sets TSI to begin at the triangle i</font>
00253     <font class="keywordtype">int</font> operator = (<font class="keywordtype">int</font>);
00254     <font class="keywordtype">int</font> itri()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _itri; }
00255     <font class="keywordtype">int</font> irs()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _irs; }
00256     <font class="comment">// the number of points in the current triangle</font>
00257     <font class="keywordtype">int</font> n_in_tri()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> (_ts.pointer()-&gt;*_integrator)(_itri)-&gt;n(); }
00258     <font class="keywordtype">void</font> distribute(<font class="keyword">const</font> Ref&lt;MessageGrp&gt; &amp;);
00259     <font class="keywordtype">void</font> use_fast_integrator();
00260     <font class="keywordtype">void</font> use_accurate_integrator();
00261     <font class="keywordtype">void</font> use_default_integrator();
00262 };
00263 
00264 <font class="keyword">class </font>TriangulatedImplicitSurface: <font class="keyword">public</font> TriangulatedSurface {
00265   <font class="keyword">private</font>:
00266     <font class="comment">// The surface is defined as an isosurface of the volume vol_.</font>
00267     Ref&lt;Volume&gt; vol_;
00268     <font class="keywordtype">double</font> isovalue_;
00269 
00270     <font class="keywordtype">int</font> fix_orientation_;
00271     <font class="keywordtype">int</font> remove_short_edges_;
00272     <font class="keywordtype">double</font> short_edge_factor_;
00273     <font class="keywordtype">int</font> remove_slender_triangles_;
00274     <font class="keywordtype">double</font> slender_triangle_factor_;
00275     <font class="keywordtype">int</font> remove_small_triangles_;
00276     <font class="keywordtype">double</font> small_triangle_factor_;
00277     <font class="keywordtype">double</font> resolution_;
00278 
00279     <font class="keywordtype">int</font> order_;
00280 
00281     <font class="keywordtype">int</font> inited_;
00282   <font class="keyword">public</font>:
00283     TriangulatedImplicitSurface(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00284     ~TriangulatedImplicitSurface();
00285 
00286     Ref&lt;Volume&gt; volume_object()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> vol_; }
00287     <font class="keywordtype">double</font> isovalue()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> isovalue_; }
00288 
00289     <font class="keywordtype">void</font> init();
00290     <font class="keywordtype">int</font> inited()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> inited_; }
00291 };
00292 
00293 }
00294 
00295 <font class="preprocessor">#endif</font>
00296 <font class="preprocessor"></font>
00297 <font class="comment">// Local Variables:</font>
00298 <font class="comment">// mode: c++</font>
00299 <font class="comment">// c-file-style: "CLJ"</font>
00300 <font class="comment">// End:</font>
</div></pre><hr>
<address>
<small>

Generated at Mon Oct 14 14:16:38 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>