- /// itk::ProcessObject
- virtual void GenerateData( );
-
- /// Base interface
- virtual void _BeforeMainLoop ( );
- virtual void _AfterMainLoop ( );
- virtual void _BeforeLoop ( );
- virtual void _AfterLoop ( );
- virtual void _Loop ( );
- virtual bool _CheckCollisions ( const _TNode& a, const _TNode& b );
- virtual bool _CheckStopCondition ( );
- virtual bool _UpdateResult ( _TNode& n );
-
- /// Marks management
- virtual void _InitializeMarks ( );
- virtual bool _IsMarked ( const TVertex& v ) const;
- virtual _TFrontId _FrontId ( const TVertex& v ) const;
- virtual TVertex _Parent ( const TVertex& v ) const;
- virtual void _Mark ( const _TNode& n );
-
- /// Pure virtual interface: vertices
- virtual unsigned long _NumberOfVertices ( ) const = 0;
- virtual TVertexValue _Value ( const TVertex& v ) const = 0;
- virtual TResult _Result ( const TVertex& v ) const = 0;
-
- /// Pure virtual interface: edges
- virtual double _Norm ( const TVertex& a, const TVertex& b ) const = 0;
- virtual bool _Edge ( const TVertex& a, const TVertex& b ) const = 0;
- virtual TCost _Cost ( const TVertex& a, const TVertex& b ) const = 0;
-
- /// Pure virtual interface: neighborhood
- virtual void _Neighs ( const _TNode& n, _TNodes& N ) const = 0;
- virtual bool _UpdateNeigh ( _TNode& nn, const _TNode& n ) = 0;
- virtual void _NeighsInDim ( const _TNode& n,
- const unsigned int& d,
- _TNodes& N ) = 0;
-
- /// Pure virtual interface: queue
- virtual void _InitializeQueue ( ) = 0;
- virtual bool _IsQueueEmpty ( ) const = 0;
- virtual void _QueuePush ( const _TNode& n ) = 0;
- virtual _TNode _QueuePop ( ) = 0;
- virtual void _QueueClear ( ) = 0;
-
- /// Pure virtual interface: results
- virtual void _InitializeResults ( ) = 0;
+ virtual void _Visit( const TNode& n ) = 0;
+ virtual bool _NeedToStop( );
+
+ virtual TVertices _GetNeighborhood( const TVertex& v ) const = 0;
+ virtual TVertices _GetNeighborhood( const TNode& n ) const;
+
+ virtual bool _Result( TNode& node, const TNode& parent ) = 0;
+
+ virtual void _QueueClear( ) = 0;
+ virtual void _QueuePush( const TNode& node ) = 0;
+ virtual TNode _QueuePop( ) = 0;
+ virtual bool _IsQueueEmpty( ) const = 0;
+
+ virtual bool _UpdateCollisions( const TVertex& a, const TVertex& b );