]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/DataStructures/QuadEdgeIterators.h
...
[cpPlugins.git] / lib / cpExtensions / DataStructures / QuadEdgeIterators.h
index 9f0973b1b5165c37143b0e9f4f86f679cad757d7..c82ac346eef708509d34c4053bee06610b86f72e 100644 (file)
   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 <cpExtensions/DataStructures/QuadEdgeIterators.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__DATASTRUCTURES__QUADEDGEITERATORS__H__