]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Base/Dijkstra.h
10489dbc3bde669340d4121b413e991106de9c89
[FrontAlgorithms.git] / lib / fpa / Base / Dijkstra.h
1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5
6 #ifndef __fpa__Base__Dijkstra__h__
7 #define __fpa__Base__Dijkstra__h__
8
9 #include <fpa/Base/DijkstraBase.h>
10
11 namespace fpa
12 {
13   namespace Base
14   {
15     /**
16      */
17     template< class _TAlgorithm, class _TMST >
18     class Dijkstra
19       : public fpa::Base::DijkstraBase< _TAlgorithm >
20     {
21     public:
22       typedef Dijkstra                               Self;
23       typedef fpa::Base::DijkstraBase< _TAlgorithm > Superclass;
24       typedef itk::SmartPointer< Self >              Pointer;
25       typedef itk::SmartPointer< const Self >        ConstPointer;
26
27       typedef _TMST TMST;
28
29       typedef typename Superclass::TNode        TNode;
30       typedef typename Superclass::TInputValue  TInputValue;
31       typedef typename Superclass::TOutputValue TOutputValue;
32       typedef typename Superclass::TFrontId     TFrontId;
33       typedef typename Superclass::TVertex      TVertex;
34
35       typedef typename Superclass::TQueue          TQueue;
36       typedef typename Superclass::TQueueOrder     TQueueOrder;
37       typedef typename Superclass::TWeightFunction TWeightFunction;
38
39     public:
40       TMST* GetMinimumSpanningTree( );
41       const TMST* GetMinimumSpanningTree( ) const;
42
43     protected:
44       Dijkstra( );
45       virtual ~Dijkstra( );
46
47       virtual void _AfterGenerateData( ) override;
48       virtual void _UpdateOutputValue( const TNode& n ) override;
49
50     private:
51       // Purposely not implemented.
52       Dijkstra( const Self& other );
53       Self& operator=( const Self& other );
54
55     protected:
56       unsigned int m_MSTIdx;
57     };
58
59   } // ecapseman
60
61 } // ecapseman
62
63 #ifndef ITK_MANUAL_INSTANTIATION
64 #  include <fpa/Base/Dijkstra.hxx>
65 #endif // ITK_MANUAL_INSTANTIATION
66
67 #endif // __fpa__Base__Dijkstra__h__
68
69 // eof - $RCSfile$