Public Member Functions | Private Attributes

MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge > Class Template Reference

VertexVertexIterator, transverse all the neighboring vertices of a vertex ccwly. More...

#include <iterators.h>

Collaboration diagram for MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 VertexVertexIterator (CVertex *v)
 ~VertexVertexIterator ()
void operator++ ()
void operator++ (int)
CVertexvalue ()
CVertexoperator* ()
bool end ()
void reset ()

Private Attributes

CVertexm_vertex
CHalfEdgem_halfedge

Detailed Description

template<typename CVertex, typename CEdge, typename CFace, typename CHalfEdge>
class MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >

VertexVertexIterator, transverse all the neighboring vertices of a vertex ccwly.

Definition at line 165 of file iterators.h.


Constructor & Destructor Documentation

template<typename CVertex , typename CEdge , typename CFace , typename CHalfEdge >
MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >::VertexVertexIterator ( CVertex v  )  [inline]

VertexVertexIterator constructor

Parameters:
v the current vertex

Definition at line 172 of file iterators.h.

        { 
                m_vertex = v; 
                m_halfedge = (CHalfEdge*)m_vertex->most_clw_out_halfedge();
        };

Here is the call graph for this function:

template<typename CVertex , typename CEdge , typename CFace , typename CHalfEdge >
MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >::~VertexVertexIterator (  )  [inline]

VertexVertexIterator destructor

Definition at line 181 of file iterators.h.

{};


Member Function Documentation

template<typename CVertex , typename CEdge , typename CFace , typename CHalfEdge >
bool MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >::end (  )  [inline]

Indicate whether all the neighboring vertices have been accessed.

Definition at line 302 of file iterators.h.

{ return m_halfedge == NULL; };

template<typename CVertex , typename CEdge , typename CFace , typename CHalfEdge >
CVertex* MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >::operator* (  )  [inline]

The neighboring vertex, pointed by the current iterator

Definition at line 297 of file iterators.h.

{ return value(); };

Here is the call graph for this function:

template<typename CVertex , typename CEdge , typename CFace , typename CHalfEdge >
void MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >::operator++ (  )  [inline]

VertexVertexIterator prefix operator ++, goes to the next neighboring vertex CCWly

Definition at line 187 of file iterators.h.

        {
                assert( m_halfedge != NULL ); 
                
                if( !m_vertex->boundary() )
                {
                        if( m_halfedge != m_vertex->most_ccw_out_halfedge() )
                        {
                                m_halfedge = (CHalfEdge*)m_halfedge->ccw_rotate_about_source();
                        }
                        else
                        {
                                m_halfedge = NULL;
                        }
                        return;
                }

                if( m_vertex->boundary() )
                {
                        if( m_halfedge == (CHalfEdge*)m_vertex->most_ccw_in_halfedge() )
                        {
                                m_halfedge = NULL;
                                return;
                        }

                        CHalfEdge * he = (CHalfEdge*)m_halfedge->ccw_rotate_about_source();

                        if( he == NULL )
                        {
                                m_halfedge = (CHalfEdge*)m_vertex->most_ccw_in_halfedge();
                        }
                        else
                        {
                                m_halfedge = he;
                        }
                }

                return;
        };

Here is the call graph for this function:

template<typename CVertex , typename CEdge , typename CFace , typename CHalfEdge >
void MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >::operator++ ( int   )  [inline]

VertexVertexIterator postfix operator ++, goes to the next neighboring vertex CCWly

Definition at line 231 of file iterators.h.

        {
                assert( m_halfedge != NULL ); 
                
                if( !m_vertex->boundary() )
                {
                        if( m_halfedge != (CHalfEdge*)m_vertex->most_ccw_out_halfedge() )
                        {
                                m_halfedge = (CHalfEdge*)m_halfedge->ccw_rotate_about_source();
                        }
                        else
                        {
                                m_halfedge = NULL;
                        }
                        return;
                }

                if( m_vertex->boundary() )
                {
                        if( m_halfedge == (CHalfEdge*)m_vertex->most_ccw_in_halfedge() )
                        {
                                m_halfedge = NULL;
                                return;
                        }

                        CHalfEdge * he = (CHalfEdge*)m_halfedge->ccw_rotate_about_source();

                        if( he == NULL )
                        {
                                m_halfedge = (CHalfEdge*)m_vertex->most_ccw_in_halfedge();
                        }
                        else
                        {
                                m_halfedge = he;
                        }
                }

                return;
        };

Here is the call graph for this function:

template<typename CVertex , typename CEdge , typename CFace , typename CHalfEdge >
void MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >::reset (  )  [inline]

Reset the iterator.

Definition at line 307 of file iterators.h.

{ m_halfedge = (CHalfEdge*)m_vertex->most_clw_out_halfedge(); };

Here is the call graph for this function:

template<typename CVertex , typename CEdge , typename CFace , typename CHalfEdge >
CVertex* MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >::value (  )  [inline]

The neighboring vertex, pointed by the current iterator

Definition at line 275 of file iterators.h.

         { 
                 if( !m_vertex->boundary() )
                 {
                         return (CVertex*)m_halfedge->target(); 
                 }

                 if( m_halfedge != (CHalfEdge*)m_vertex->most_ccw_in_halfedge() )
                 {
                         return (CVertex*)m_halfedge->target();
                 }

                 if( m_halfedge == (CHalfEdge*)m_vertex->most_ccw_in_halfedge() )
                 {
                         return (CVertex*)m_halfedge->source();
                 }
                 return NULL;
         };

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

template<typename CVertex , typename CEdge , typename CFace , typename CHalfEdge >
CHalfEdge* MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >::m_halfedge [private]

Current halfedge.

Definition at line 317 of file iterators.h.

template<typename CVertex , typename CEdge , typename CFace , typename CHalfEdge >
CVertex* MeshLib::VertexVertexIterator< CVertex, CEdge, CFace, CHalfEdge >::m_vertex [private]

Current vertex

Definition at line 307 of file iterators.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Defines