Mesh::T_iterator< MeshType, CellType > Class Template Reference

#include <Mesh.hpp>

Inheritance diagram for Mesh::T_iterator< MeshType, CellType >:

Inheritance graph
[legend]
Collaboration diagram for Mesh::T_iterator< MeshType, CellType >:

Collaboration graph
[legend]

List of all members.

Public Types

enum  Position { Begin, End }

Public Member Functions

const size_t & number () const
CellType & operator* ()
CellType * pointer () const
bool end () const
bool operator< (const T_iterator< MeshType, CellType > &i) const
virtual T_iterator< MeshType,
CellType > & 
operator= (const T_iterator< MeshType, CellType > &i)
virtual T_iterator< MeshType,
CellType > & 
operator= (CellType *iterator)
T_iterator< MeshType, CellType > operator++ (int)
T_iterator< MeshType, CellType > operator++ ()
 T_iterator (MeshType &m, T_iterator::Position position=T_iterator::Begin)
 T_iterator (MeshType &m, const size_t &cellNumber)
 T_iterator (const T_iterator< MeshType, CellType > &i)
virtual ~T_iterator ()

Protected Attributes

MeshType * __mesh
CellType * __iterator
size_t __number


Detailed Description

template<typename MeshType, typename CellType = typename MeshType::CellType>
class Mesh::T_iterator< MeshType, CellType >

Definition at line 79 of file Mesh.hpp.


Member Enumeration Documentation

template<typename MeshType, typename CellType = typename MeshType::CellType>
enum Mesh::T_iterator::Position

Enumerator:
Begin 
End 

Definition at line 87 of file Mesh.hpp.

00087                  {
00088       Begin,
00089       End
00090     } Position;


Constructor & Destructor Documentation

template<typename MeshType, typename CellType = typename MeshType::CellType>
Mesh::T_iterator< MeshType, CellType >::T_iterator ( MeshType &  m,
T_iterator< MeshType, CellType >::Position  position = T_iterator< MeshType, CellType >::Begin 
) [inline]

Definition at line 158 of file Mesh.hpp.

00160       : __mesh(&m),
00161         __iterator(0),
00162         __number(0)
00163     {
00164       if ((m.numberOfCells() == 0)
00165           or (position == T_iterator<MeshType, CellType>::End)) {
00166         __number = __mesh->numberOfCells();
00167       } else {
00168         __iterator = & m.cell(0);
00169         if (__iterator->isFictitious()) {
00170           ++(*this);
00171         }
00172       }
00173     }

template<typename MeshType, typename CellType = typename MeshType::CellType>
Mesh::T_iterator< MeshType, CellType >::T_iterator ( MeshType &  m,
const size_t &  cellNumber 
) [inline]

Definition at line 175 of file Mesh.hpp.

00177       : __mesh(&m),
00178         __iterator(0),
00179         __number(cellNumber)
00180     {
00181       if (cellNumber < m.numberOfCells()) {
00182         __iterator = & m.cell(cellNumber);
00183       }
00184     }

template<typename MeshType, typename CellType = typename MeshType::CellType>
Mesh::T_iterator< MeshType, CellType >::T_iterator ( const T_iterator< MeshType, CellType > &  i  )  [inline]

Definition at line 186 of file Mesh.hpp.

00187       : __mesh(i.__mesh),
00188         __iterator(i.__iterator),
00189         __number(i.__number)
00190     {
00191       ;
00192     }

template<typename MeshType, typename CellType = typename MeshType::CellType>
virtual Mesh::T_iterator< MeshType, CellType >::~T_iterator (  )  [inline, virtual]

Definition at line 194 of file Mesh.hpp.

00195     {
00196       ;
00197     }


Member Function Documentation

template<typename MeshType, typename CellType = typename MeshType::CellType>
const size_t& Mesh::T_iterator< MeshType, CellType >::number (  )  const [inline]

template<typename MeshType, typename CellType = typename MeshType::CellType>
CellType& Mesh::T_iterator< MeshType, CellType >::operator* (  )  [inline]

Definition at line 97 of file Mesh.hpp.

00098     {
00099       return *__iterator;
00100     }

template<typename MeshType, typename CellType = typename MeshType::CellType>
CellType* Mesh::T_iterator< MeshType, CellType >::pointer (  )  const [inline]

Definition at line 102 of file Mesh.hpp.

00103     {
00104       return __iterator;
00105     }

template<typename MeshType, typename CellType = typename MeshType::CellType>
bool Mesh::T_iterator< MeshType, CellType >::end (  )  const [inline]

template<typename MeshType, typename CellType = typename MeshType::CellType>
bool Mesh::T_iterator< MeshType, CellType >::operator< ( const T_iterator< MeshType, CellType > &  i  )  const [inline]

Definition at line 112 of file Mesh.hpp.

00113     {
00114       return (__number < i.__number);
00115     }

template<typename MeshType, typename CellType = typename MeshType::CellType>
virtual T_iterator<MeshType, CellType>& Mesh::T_iterator< MeshType, CellType >::operator= ( const T_iterator< MeshType, CellType > &  i  )  [inline, virtual]

Definition at line 118 of file Mesh.hpp.

Referenced by SurfaceMeshOfTriangles::const_iterator::operator=(), and SurfaceMeshOfQuadrangles::const_iterator::operator=().

00119     {
00120       __mesh = i.__mesh;
00121       __iterator = i.__iterator;
00122       __number = i.__number;
00123 
00124       return *this;
00125     }

template<typename MeshType, typename CellType = typename MeshType::CellType>
virtual T_iterator<MeshType, CellType>& Mesh::T_iterator< MeshType, CellType >::operator= ( CellType *  iterator  )  [inline, virtual]

Reimplemented in SurfaceMeshOfQuadrangles::iterator, and SurfaceMeshOfTriangles::iterator.

Definition at line 128 of file Mesh.hpp.

00129     {
00130       __iterator = iterator;
00131       __number = static_cast<size_t>(__iterator-&(__mesh->cell(0)));
00132 
00133       return *this;
00134     }

template<typename MeshType, typename CellType = typename MeshType::CellType>
T_iterator<MeshType, CellType> Mesh::T_iterator< MeshType, CellType >::operator++ ( int   )  [inline]

Reimplemented in SurfaceMeshOfQuadrangles::iterator, SurfaceMeshOfQuadrangles::const_iterator, SurfaceMeshOfTriangles::iterator, and SurfaceMeshOfTriangles::const_iterator.

Definition at line 136 of file Mesh.hpp.

00137     {
00138       T_iterator<MeshType, CellType> i = *this;
00139       ++(*this);
00140       return i;
00141     }

template<typename MeshType, typename CellType = typename MeshType::CellType>
T_iterator<MeshType, CellType> Mesh::T_iterator< MeshType, CellType >::operator++ (  )  [inline]

Reimplemented in SurfaceMeshOfQuadrangles::iterator, SurfaceMeshOfQuadrangles::const_iterator, SurfaceMeshOfTriangles::iterator, and SurfaceMeshOfTriangles::const_iterator.

Definition at line 143 of file Mesh.hpp.

Referenced by SurfaceMeshOfTriangles::const_iterator::operator++(), and SurfaceMeshOfQuadrangles::const_iterator::operator++().

00144     {
00145       for(;;) {
00146         ++__number;
00147         if (this->end()) {
00148           break;
00149         }
00150         ++__iterator;
00151         if (not(__iterator->isFictitious())) {
00152           break;
00153         }
00154       }
00155       return *this;
00156     }


Member Data Documentation

template<typename MeshType, typename CellType = typename MeshType::CellType>
MeshType* Mesh::T_iterator< MeshType, CellType >::__mesh [protected]

template<typename MeshType, typename CellType = typename MeshType::CellType>
CellType* Mesh::T_iterator< MeshType, CellType >::__iterator [protected]

template<typename MeshType, typename CellType = typename MeshType::CellType>
size_t Mesh::T_iterator< MeshType, CellType >::__number [protected]


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

Generated on Wed Nov 19 00:08:50 2008 for FreeFEM3D (aka ff3d) by  doxygen 1.5.6