1 #ifndef __fpa__Base__FastMarching__h__
2 #define __fpa__Base__FastMarching__h__
4 #include <fpa/Base/PriorityQueueAlgorithm.h>
12 template< class _TSuperclass >
14 : public fpa::Base::PriorityQueueAlgorithm< _TSuperclass >
17 typedef FastMarching Self;
18 typedef fpa::Base::PriorityQueueAlgorithm< _TSuperclass > Superclass;
19 typedef itk::SmartPointer< Self > Pointer;
20 typedef itk::SmartPointer< const Self > ConstPointer;
22 typedef typename Superclass::TFrontId TFrontId;
23 typedef typename Superclass::TOutput TOutput;
24 typedef typename Superclass::TVertex TVertex;
26 typedef std::pair< TVertex, double > TFastMarchingNeighbor;
27 typedef std::vector< TFastMarchingNeighbor > TFastMarchingNeighborhood;
30 typedef typename Superclass::_TQueueNode _TQueueNode;
33 itkTypeMacro( FastMarching, Algorithm );
37 virtual ~FastMarching( );
39 virtual TFastMarchingNeighborhood _FastMarchingNeighbors( const TVertex& v ) const = 0;
41 virtual bool _UpdateValue( _TQueueNode& v, const _TQueueNode& p ) override;
44 // Purposely not defined
45 FastMarching( const Self& other );
46 Self& operator=( const Self& other );
53 #ifndef ITK_MANUAL_INSTANTIATION
54 # include <fpa/Base/FastMarching.hxx>
55 #endif // ITK_MANUAL_INSTANTIATION
57 #endif // __fpa__Base__FastMarching__h__