X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FDataStructures%2FQuadEdgeIterators.h;h=c82ac346eef708509d34c4053bee06610b86f72e;hb=3f6669acc6485e724c4ff79620e4de0f8c26734c;hp=9f0973b1b5165c37143b0e9f4f86f679cad757d7;hpb=2361f4f97631e09d88d8a5510a369817dcaa19db;p=cpPlugins.git diff --git a/lib/cpExtensions/DataStructures/QuadEdgeIterators.h b/lib/cpExtensions/DataStructures/QuadEdgeIterators.h index 9f0973b..c82ac34 100644 --- a/lib/cpExtensions/DataStructures/QuadEdgeIterators.h +++ b/lib/cpExtensions/DataStructures/QuadEdgeIterators.h @@ -31,140 +31,142 @@ cpPluginsExtensionsQEPointIteratorsMacro( op, Iterator, ConstIterator ); namespace cpExtensions +{ + namespace DataStructures { - namespace DataStructures + /** + */ + template< class E > + class QuadEdgeBaseIterator { - /** - */ - template< class E > - class QuadEdgeBaseIterator - { - public: - typedef QuadEdgeBaseIterator Self; - typedef E TQuadEdge; - - // Different types of logical iterators - enum - { - OpOnext = 0, - OpLnext = 1, - OpRnext = 2, - OpDnext = 3, - OpOprev = 4, - OpLprev = 5, - OpRprev = 6, - OpDprev = 7 - }; - - 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 */ - }; + public: + typedef QuadEdgeBaseIterator Self; + typedef E TQuadEdge; - /** - */ - template< class E > - class QuadEdgeIterator - : public QuadEdgeBaseIterator< E > + // Different types of logical iterators + enum { - 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*( ); + OpOnext = 0, + OpLnext = 1, + OpRnext = 2, + OpDnext = 3, + OpOprev = 4, + OpLprev = 5, + OpRprev = 6, + OpDprev = 7 }; - /** - */ - 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; - /** - */ - template< class E > - class QuadEdgePointConstIterator - : public QuadEdgeBaseIterator< const E > - { - public: - typedef QuadEdgePointConstIterator Self; - typedef QuadEdgeBaseIterator< const E > Superclass; - typedef E TQuadEdge; - - public: - QuadEdgePointConstIterator( - const E* e = NULL, int op = Superclass::OpOnext, bool start = true - ); - virtual ~QuadEdgePointConstIterator( ); - const typename E::TPrimalGeometry& operator*( ) const; - }; + public: + QuadEdgePointConstIterator( + const E* e = NULL, int op = Superclass::OpOnext, bool start = true + ); + virtual ~QuadEdgePointConstIterator( ); + const typename E::TPrimalGeometry& operator*( ) const; + }; - } // ecapseman + } // ecapseman } // ecapseman +#ifndef ITK_MANUAL_INSTANTIATION #include +#endif // ITK_MANUAL_INSTANTIATION #endif // __CPEXTENSIONS__DATASTRUCTURES__QUADEDGEITERATORS__H__