proj home

Files   Classes   Functions   Hierarchy  

d3meshiterrecursive< B > Class Template Reference

#include <d3meshiterrecursive.h>

Collaboration diagram for d3meshiterrecursive< B >:

List of all members.

Public Member Functions

 d3meshiterrecursive (vector< simplexD2linked > &_vi, B &_op)
 Pass the mesh and binary operator in.
void eval (uintc s0)
 Recursivly process the simplex by applying the binary operator.
void evallinear ()
 Iterate over vi and recursivly process each simplex.

Public Attributes

vector< simplexD2linked > & vi
B & op


Detailed Description

template<typename B>
class d3meshiterrecursive< B >

Definition at line 23 of file d3meshiterrecursive.h.


Constructor & Destructor Documentation

template<typename B>
d3meshiterrecursive< B >::d3meshiterrecursive ( vector< simplexD2linked > &  _vi,
B &  _op 
) [inline]

Pass the mesh and binary operator in.

Definition at line 32 of file d3meshiterrecursive.h.

00033     : vi(_vi), op(_op) {}


Member Function Documentation

template<typename B >
void d3meshiterrecursive< B >::eval ( uintc  s0  )  [inline]

Recursivly process the simplex by applying the binary operator.

Definition at line 43 of file d3meshiterrecursive.h.

References simplexD2linked::isnull(), simplexD2linked::ni, d3meshiterrecursive< B >::op, and d3meshiterrecursive< B >::vi.

Referenced by d3meshiterrecursive< B >::evallinear().

00044 {
00045   assert(s0>0);
00046   assert( s0<vi.size() );
00047   
00048   if (vi[s0].isnull()==true)
00049     return;
00050 
00051   process.clear();
00052   process.push_back(s0);
00053 
00054   uint k;
00055   simplexD2linked * x;
00056   uint psz;
00057   uint nb;
00058   uint visz;
00059   for (; process.empty()==false; )
00060   {
00061     psz = process.size();
00062     k = process[psz-1];
00063     process.pop_back();
00064     x =  & vi[k];
00065     assert(x->isnull()==false);
00066     for (uint i=0; i<3; ++i)
00067     {
00068       nb = x->ni[i];
00069       visz = vi.size();
00070       if (op.eval(k,i))
00071       {
00072         if (nb!=0)
00073           process.push_back(nb);
00074         process.push_back(k);
00075 
00076         for (uint j=visz; j<vi.size(); ++j)
00077           process.push_back(j);
00078         i=10; // kill loop
00079       }
00080     }
00081   }
00082 
00083 }

template<typename B >
void d3meshiterrecursive< B >::evallinear (  )  [inline]

Iterate over vi and recursivly process each simplex.

Definition at line 86 of file d3meshiterrecursive.h.

References d3meshiterrecursive< B >::eval(), and d3meshiterrecursive< B >::vi.

Referenced by menu01< T >::readBufferedTerminationAction().

00087 {
00088   for ( uint i=1; i<vi.size(); ++i)
00089     eval(i);
00090 }


Member Data Documentation

template<typename B>
B& d3meshiterrecursive< B >::op

Definition at line 29 of file d3meshiterrecursive.h.

Referenced by d3meshiterrecursive< B >::eval().

template<typename B>
vector<simplexD2linked>& d3meshiterrecursive< B >::vi


The documentation for this class was generated from the following file:

Generated on Fri Mar 4 00:49:53 2011 for Chelton Evans Source by  doxygen 1.5.8