- /**
- */
- template< class E >
- class QuadEdgeConstIterator
- : public QuadEdgeBaseIterator< const E >
- {
- public:
- typedef QuadEdgeConstIterator Self;
- typedef QuadEdgeBaseIterator< const E > Superclass;
- typedef E TQuadEdge;
-
- public:
- QuadEdgeConstIterator(
- const E* e = NULL, int op = Superclass::OpOnext, bool start = true
- );
- virtual ~QuadEdgeConstIterator( );
- const E* operator*( ) const;
- };
-
- /**
- */
- template< class E >
- class QuadEdgePointIterator
- : public QuadEdgeBaseIterator< const E >
- {
- public:
- typedef QuadEdgePointIterator Self;
- typedef QuadEdgeBaseIterator< const E > Superclass;
- typedef E TQuadEdge;
-
- public:
- QuadEdgePointIterator(
- const E* e = NULL, int op = Superclass::OpOnext, bool start = true
- );
- virtual ~QuadEdgePointIterator( );
- typename E::TPrimalGeometry& operator*( );
- };
+ public:
+ QuadEdgeBaseIterator( E* e, int op = OpOnext, bool start = true );
+ virtual ~QuadEdgeBaseIterator( );
+ Self& operator=( const Self& r );
+
+ E* GetStartEdge( ) const;
+ E* GetIterator( ) const;
+ int GetOpType( ) const;
+ bool GetStart( ) const;
+
+ bool operator==( Self& r );
+ bool operator==( const Self& r ) const;
+ bool operator!=( Self& r );
+ bool operator!=( const Self& r ) const;
+ Self& operator++( );
+ Self& operator++( int );
+
+ protected:
+ /// Method that should do all the iteration work
+ virtual void _GoToNext( );
+
+ protected:
+ E* m_StartEdge; /**< Start edge */
+ E* m_Iterator; /**< Current iteration position */
+ int m_OpType; /**< Operation type */
+ bool m_Start; /**< Indicates iteration has just started */
+ };
+
+ /**
+ */
+ template< class E >
+ class QuadEdgeIterator
+ : public QuadEdgeBaseIterator< E >
+ {
+ public:
+ typedef QuadEdgeIterator Self;
+ typedef QuadEdgeBaseIterator< E > Superclass;
+ typedef E TQuadEdge;
+
+ public:
+ QuadEdgeIterator(
+ E* e = NULL, int op = Superclass::OpOnext, bool start = true
+ );
+ virtual ~QuadEdgeIterator( );
+ E* operator*( );
+ };
+
+ /**
+ */
+ template< class E >
+ class QuadEdgeConstIterator
+ : public QuadEdgeBaseIterator< const E >
+ {
+ public:
+ typedef QuadEdgeConstIterator Self;
+ typedef QuadEdgeBaseIterator< const E > Superclass;
+ typedef E TQuadEdge;
+
+ public:
+ QuadEdgeConstIterator(
+ const E* e = NULL, int op = Superclass::OpOnext, bool start = true
+ );
+ virtual ~QuadEdgeConstIterator( );
+ const E* operator*( ) const;
+ };
+
+ /**
+ */
+ template< class E >
+ class QuadEdgePointIterator
+ : public QuadEdgeBaseIterator< const E >
+ {
+ public:
+ typedef QuadEdgePointIterator Self;
+ typedef QuadEdgeBaseIterator< const E > Superclass;
+ typedef E TQuadEdge;
+
+ public:
+ QuadEdgePointIterator(
+ const E* e = NULL, int op = Superclass::OpOnext, bool start = true
+ );
+ virtual ~QuadEdgePointIterator( );
+ typename E::TPrimalGeometry& operator*( );
+ };
+
+ /**
+ */
+ template< class E >
+ class QuadEdgePointConstIterator
+ : public QuadEdgeBaseIterator< const E >
+ {
+ public:
+ typedef QuadEdgePointConstIterator Self;
+ typedef QuadEdgeBaseIterator< const E > Superclass;
+ typedef E TQuadEdge;